|
| | DLNAMediaRenderer () |
| | Default constructor.
|
| |
| | DLNAMediaRenderer (IHttpServer &server, IUDPService &udp) |
| | Recommended constructor Construct a MediaRenderer bound to an HTTP server and IUDPService. The provided references are stored and used when calling begin().
|
| |
| bool | begin () |
| | Start the underlying DLNA device using the stored server/udp.
|
| |
| void | end () |
| | Stops processing and releases resources.
|
| |
| bool | loop (int loopAction=RUN_ALL) |
| | Call this from Arduino loop()
|
| |
| void | setHttpServer (IHttpServer &server) |
| | Set the http server instance the MediaRenderer should use.
|
| |
| void | setUdpService (IUDPService &udp) |
| | Set the UDP service instance the MediaRenderer should use.
|
| |
| void | setPossiblePlaybackStorageMedia (const char *v) |
| | Set possible playback storage media (comma-separated list)
|
| |
| const char * | getPossiblePlaybackStorageMedia () const |
| | Get possible playback storage media.
|
| |
| void | setPossibleRecordStorageMedia (const char *v) |
| | Set possible record storage media (comma-separated list)
|
| |
| const char * | getPossibleRecordStorageMedia () const |
| | Get possible record storage media.
|
| |
| void | setPossibleRecordQualityModes (const char *v) |
| | Set possible record quality modes (comma-separated list)
|
| |
| const char * | getPossibleRecordQualityModes () const |
| | Get possible record quality modes.
|
| |
| void | setPlayMode (const char *v) |
| | Set current play mode (e.g. NORMAL, REPEAT_ALL, INTRO)
|
| |
| const char * | getPlayMode () const |
| | Get current play mode.
|
| |
| bool | isActive () |
| | Query whether renderer is active (playing)
|
| |
| void | setActive (bool active) |
| | Set the active state (used by transport callbacks)
|
| |
| const char * | getMime () |
| | Provides the mime from the DIDL or nullptr.
|
| |
| void | setMediaEventHandler (MediaEventHandler cb) |
| | Register application event handler.
|
| |
| uint8_t | getVolume () |
| | Get current volume (0-100)
|
| |
| void | setVolume (uint8_t vol) |
| | Set volume and publish event (0-100)
|
| |
| bool | isMuted () |
| | Query mute state.
|
| |
| void | setMuted (bool mute) |
| | Set mute state and publish event.
|
| |
| const char * | getCurrentUri () |
| | Access current URI.
|
| |
| const char * | getCurrentUriMetadata () |
| | Access the metadata as string.
|
| |
| const char * | getTransportState () |
| | Get textual transport state.
|
| |
| IDevice & | device () |
| | Provides access to the internal DLNA device instance.
|
| |
| void | setSubscriptionsActive (bool flag) |
| | Enable/disable subscription notifications.
|
| |
| bool | isSubscriptionsActive () |
| | Query whether subscription notifications are active.
|
| |
| bool | play () |
| | Start playback: same as setActive(true)
|
| |
| bool | play (const char *urlStr) |
| | Start playback of a network resource (returns true on success)
|
| |
| bool | setPlaybackURL (const char *urlStr) |
| | Defines the actual url to play.
|
| |
| bool | stop () |
| | Stop playback.
|
| |
| void | setPlaybackCompleted () |
| | Notify the renderer that playback completed.
|
| |
| size_t | getRelativeTimePositionSec () |
| | Get estimated playback position (seconds)
|
| |
| void | publishGetRelativeTimePositionSec () |
| | Publish the RelativeTimePosition property.
|
| |
| const char * | getCurrentTransportActions () |
| | Get a csv of the valid actions.
|
| |
| void | setCustomActionRule (const char *suffix, bool(*handler)(DLNAMediaRenderer *, ActionRequest &, IHttpServer &)) |
| | Defines a custom action rule for the media renderer.
|
| |
| void | setConnectionID (const char *id) |
| | Set the active ConnectionID for the connection manager.
|
| |
| const char * | getConnectionID () |
| | Return the currently configured ConnectionID.
|
| |
| void | setProtocols (const char *source, const char *sink="") |
| | Define the source protocol info: use csv Default is http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_60_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HP_HD_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_NA_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_AAC_520,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_AAC_940,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L31_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L32_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3L_SD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_VGA_AAC,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_60_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_60_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HP_HD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPLL_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_MP3,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL_MULT5,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320,http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO_320,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_MULT5_ISO,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM,http-get:*:image/jpeg:*,http-get:*:video/avi:*,http-get:*:video/divx:*,http-get:*:video/x-matroska:*,http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/x-msvideo:*,http-get:*:video/x-flv:*,http-get:*:video/x-tivo-mpeg:*,http-get:*:video/quicktime:*,http-get:*:audio/mp4:*,http-get:*:audio/x-wav:*,http-get:*:audio/x-flac:*,http-get:*:audio/x-dsd:*,http-get:*:application/ogg:http-get::application/vnd.rn-realmedia:http-get::application/vnd.rn-realmedia-vbr:http-get::video/webm:*.
|
| |
| const char * | getSourceProtocols () |
| | Get the current source ProtocolInfo string.
|
| |
| const char * | getSinkProtocols () |
| | Get the current sink ProtocolInfo string.
|
| |
| void | setTransportDescr (DLNADescr &d) |
| | Set the transport SCPD descriptor (non-owning reference).
|
| |
| DLNADescr & | getTransportDescr () |
| | Get the transport SCPD descriptor reference.
|
| |
| void | setControlDescr (DLNADescr &d) |
| | Set the control SCPD descriptor (non-owning reference).
|
| |
| DLNADescr & | getControlDescr () |
| | Get the control SCPD descriptor reference.
|
| |
| void | setConnectionMgrDescr (DLNADescr &d) |
| | Set the ConnectionManager SCPD descriptor (non-owning reference).
|
| |
| DLNADescr & | getConnectionMgrDescr () |
| | Get the ConnectionManager SCPD descriptor reference.
|
| |
| size_t | print (Print &out, void *ref=nullptr) |
| | renders the device xml into the provided Print output.
|
| |
| void | setDeviceType (const char *st) |
| |
| const char * | getDeviceType () |
| |
| void | setUDN (const char *id) |
| | Define the udn uuid.
|
| |
| const char * | getUDN () |
| | Provide the udn uuid.
|
| |
| void | setBaseURL (const char *url) |
| | Defines the base url.
|
| |
| void | setBaseURL (IPAddress ip, int port, const char *path=nullptr) |
| | Defines the base URL.
|
| |
| const char * | getBaseURL () |
| | Provides the base url.
|
| |
| Url & | getDeviceURL () |
| | This method returns base url/device.xml.
|
| |
| void | setIPAddress (IPAddress address) |
| | Defines the local IP address.
|
| |
| IPAddress | getIPAddress () |
| | Provides the local IP address.
|
| |
| const char * | getIPStr () |
| | Provides the local address as string.
|
| |
| void | setNS (const char *ns) |
| |
| const char * | getNS () |
| |
| void | setFriendlyName (const char *name) |
| |
| const char * | getFriendlyName () |
| |
| void | setManufacturer (const char *man) |
| |
| const char * | getManufacturer () |
| |
| void | setManufacturerURL (const char *url) |
| |
| const char * | getManufacturerURL () |
| |
| void | setModelDescription (const char *descr) |
| |
| const char * | getModelDescription () |
| |
| void | setModelName (const char *name) |
| |
| const char * | getModelName () |
| |
| void | setModelNumber (const char *number) |
| |
| const char * | getModelNumber () |
| |
| void | setSerialNumber (const char *sn) |
| |
| const char * | getSerialNumber () |
| |
| void | setUniversalProductCode (const char *upc) |
| |
| const char * | getUniversalProductCode () |
| |
| void | addService (DLNAServiceInfo s) |
| | Adds a service definition.
|
| |
| DLNAServiceInfo & | getService (const char *id) |
| | Finds a service definition by name.
|
| |
| DLNAServiceInfo & | getServiceByAbbrev (const char *abbrev) |
| | Finds a service definition by name.
|
| |
| Vector< DLNAServiceInfo > & | getServices () |
| | Provides all service definitions.
|
| |
| void | clear () |
| | Clears all device information.
|
| |
| void | clearIcons () |
| | Overwrite the default icon.
|
| |
| void | addIcon (Icon icon) |
| | adds an icon
|
| |
| Icon | getIcon (int idx=0) |
| | Provides the item at indix.
|
| |
| Vector< Icon > & | getIcons () |
| | Provides all icons.
|
| |
| | operator bool () |
| | return true if active
|
| |
| virtual bool | loop () |
| | loop processing
|
| |
| void | setSubscriptionActive (bool flag) |
| |
| bool | isSubscriptionActive () |
| |
|
| void | addChange (const char *serviceAbbrev, std::function< size_t(Print &, void *)> changeWriter) |
| | serviceAbbrev: AVT, RCS, CMS
|
| |
| void | publishAVT () |
| |
| void | publishRCS () |
| | Publish the current RenderingControl state (Volume, Mute)
|
| |
| void | publishCMS () |
| | Publish a minimal ConnectionManager state (CurrentConnectionIDs)
|
| |
| void | setMime (const char *mime) |
| | Set MIME explicitly (used when DIDL-Lite metadata provides protocolInfo)
|
| |
| void | setMimeFromDIDL (const char *didl) |
| |
| void | setupTransportService (IHttpServer *server) |
| |
| void | setupConnectionManagerService (IHttpServer *server) |
| |
| void | setupRenderingControlService (IHttpServer *server) |
| |
| void | setupServicesImpl (IHttpServer *server) |
| | Register all services (called when HTTP server is set)
|
| |
| bool | processAction (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Process parsed SOAP ActionRequest and dispatch to appropriate handler.
|
| |
| bool | processActionPlay (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionListPresets (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionPause (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionStop (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetCurrentTransportActions (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetProtocolInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetCurrentConnectionIDs (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetCurrentConnectionInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetDeviceCapabilities (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetTransportInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetPositionInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetTransportSettings (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetMediaInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionSetAVTransportURI (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionSetVolume (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionSetMute (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetMute (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| bool | processActionGetVolume (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| |
| void | setupRules () |
| | Setup the action handling rules.
|
| |
| virtual void | setupServices (IHttpServer &server, IUDPService &udp) |
| | to be implemented by subclasses
|
| |
| size_t | printRoot (Print &out, void *ref) |
| |
| size_t | printDevice (Print &out, void *ref) |
| |
| size_t | printSpecVersion (Print &out, void *ref) |
| |
| size_t | printServiceList (Print &out, void *ref) |
| |
| size_t | printService (Print &out, void *srv) |
| |
| size_t | printIconList (Print &out, void *ref) |
| |
| size_t | printIconDlnaInfo (Print &out, Icon *icon) |
| |
template<typename ClientType>
class tiny_dlna::DLNAMediaRenderer< ClientType >
MediaRenderer DLNA Device.
MediaRenderer implements a simple UPnP/DLNA Media Renderer device. It receives stream URIs via UPnP AVTransport actions and delegates actual playback and rendering to the application through an event callback API. This removes any dependency on an internal audio stack: applications handle playback themselves by registering a handler with setMediaEventHandler(). The device still supports rendering controls (volume, mute) and transport controls (play/pause/stop) and provides helper accessors like getCurrentUri() and getMime().
Usage summary:
- Register an event handler with setMediaEventHandler() to receive MediaEvent notifications (SET_URI, PLAY, PAUSE, STOP, SET_VOLUME, SET_MUTE).
- In the handler query the renderer (getCurrentUri(), getVolume(), isMuted(), getMime()) and implement platform-specific playback.
- Use play(url) to programmatically start playback; the handler will also be notified of SET_URI and PLAY when the device receives a SetAVTransportURI SOAP action.
This class is intentionally small and Arduino-friendly: methods return bool for success/failure and avoid heavy dynamic memory allocations in the hot path.
The template parameter declares the HTTP client type to use for outgoing control and subscription traffic. Supply the client that matches the networking stack in your sketch (for example WiFiClient).
- Template Parameters
-
| ClientType | Arduino Client implementation used for outbound HTTP control and event traffic (e.g. WiFiClient, EthernetClient). |
Author: Phil Schatzmann
template<typename ClientType >
Define the source protocol info: use csv Default is http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_TN,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_SM,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_MED,http-get:*:image/jpeg:DLNA.ORG_PN=JPEG_LRG,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_50_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HD_60_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_HP_HD_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_PS_PAL,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_HD_NA_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_NA_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG_TS_SD_EU_ISO,http-get:*:video/mpeg:DLNA.ORG_PN=MPEG1,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AAC_MULT5,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_SD_AC3,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF15_AAC_520,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_CIF30_AAC_940,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L31_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L32_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_BL_L3L_SD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_HP_HD_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_1080i_AAC,http-get:*:video/mp4:DLNA.ORG_PN=AVC_MP4_MP_HD_720p_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_ASP_AAC,http-get:*:video/mp4:DLNA.ORG_PN=MPEG4_P2_MP4_SP_VGA_AAC,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_50_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_60_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HD_60_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_HP_HD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_HD_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AAC_MULT5_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_AC3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=AVC_TS_MP_SD_MPEG1_L3_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_HD_NA_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_EU_T,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA,http-get:*:video/vnd.dlna.mpeg-tts:DLNA.ORG_PN=MPEG_TS_SD_NA_T,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPLL_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVSPML_MP3,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_BASE,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_FULL,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVMED_PRO,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_FULL,http-get:*:video/x-ms-wmv:DLNA.ORG_PN=WMVHIGH_PRO,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AAC,http-get:*:video/3gpp:DLNA.ORG_PN=MPEG4_P2_3GPP_SP_L0B_AMR,http-get:*:audio/mpeg:DLNA.ORG_PN=MP3,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMABASE,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAFULL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMAPRO,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL,http-get:*:audio/x-ms-wma:DLNA.ORG_PN=WMALSL_MULT5,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO_320,http-get:*:audio/3gpp:DLNA.ORG_PN=AAC_ISO_320,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_ISO,http-get:*:audio/mp4:DLNA.ORG_PN=AAC_MULT5_ISO,http-get:*:audio/L16;rate=44100;channels=2:DLNA.ORG_PN=LPCM,http-get:*:image/jpeg:*,http-get:*:video/avi:*,http-get:*:video/divx:*,http-get:*:video/x-matroska:*,http-get:*:video/mpeg:*,http-get:*:video/mp4:*,http-get:*:video/x-ms-wmv:*,http-get:*:video/x-msvideo:*,http-get:*:video/x-flv:*,http-get:*:video/x-tivo-mpeg:*,http-get:*:video/quicktime:*,http-get:*:audio/mp4:*,http-get:*:audio/x-wav:*,http-get:*:audio/x-flac:*,http-get:*:audio/x-dsd:*,http-get:*:application/ogg:http-get::application/vnd.rn-realmedia:http-get::application/vnd.rn-realmedia-vbr:http-get::video/webm:*.