|
| | DLNAMediaServer () |
| | Default constructor: initialize device info and defaults.
|
| |
| | DLNAMediaServer (IHttpServer &server, IUDPService &udp) |
| | Construct MediaServer with an HttpServer and IUDPService pre-set.
|
| |
| | ~DLNAMediaServer () |
| | Destructor.
|
| |
| void | setHttpServer (IHttpServer &server) |
| | Set the http server instance the MediaServer should use.
|
| |
| void | setUdpService (IUDPService &udp) |
| | Set the UDP service instance the MediaServer should use.
|
| |
| bool | begin () |
| |
| void | end () |
| | Stops the processing and releases the resources.
|
| |
| bool | loop (int loopAction=RUN_ALL) |
| | call this method in the Arduino loop as often as possible
|
| |
| void | setSearchCapabilities (const char *caps) |
| | Define the search capabilities: use csv.
|
| |
| const char * | getSearchCapabilities () |
| | Get the search capabilities string (CSV)
|
| |
| void | setSortCapabilities (const char *caps) |
| | Define the sort capabilities: use csv.
|
| |
| const char * | getSortCapabilities () |
| | Get the sort capabilities string (CSV)
|
| |
| 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 | setPrepareDataCallback (PrepareDataCallback cb) |
| | Sets the callback that prepares the data for the Browse and Search.
|
| |
| void | setGetDataCallback (GetDataCallback cb) |
| | Sets the data callback that provides a MediaItem by index.
|
| |
| void | setGetDataCallback (GetDataCallbackPrint cb) |
| | Sets the alternative data callback that prints a DIDL entry directly.
|
| |
| void | setReference (void *ref) |
| | Sets a user reference pointer, available in callbacks.
|
| |
| IHttpServer * | getHttpServer () |
| | Provides access to the http server.
|
| |
| int | getSystemUpdateID () |
| | Provides access to the system update ID.
|
| |
| int | incrementSystemUpdateID () |
| |
| 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.
|
| |
| void | setCustomActionRule (const char *suffix, bool(*handler)(IClientHandler *, DLNAMediaServer *, ActionRequest &, IHttpServer &)) |
| | Define your own custom logic.
|
| |
| void | setContentDirectoryDescr (DLNADescr &d) |
| | Set a custom ContentDirectory SCPD descriptor (per-instance)
|
| |
| DLNADescr & | getContentDirectoryDescr () |
| | Get pointer to the per-instance ContentDirectory descriptor.
|
| |
| void | setConnectionMgrDescr (DLNADescr &d) |
| | Set a custom ConnectionManager SCPD descriptor (per-instance)
|
| |
| DLNADescr & | getConnectionMgrDescr () |
| | Get pointer to the per-instance ConnectionManager descriptor.
|
| |
| void | logStatus () |
| | Log current status of subscriptions and scheduler.
|
| |
| 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.
|
| |
| void | setActive (bool flag) |
| | Sets the server to inactive.
|
| |
| | 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) |
| |
| void | publishAVT () |
| | Publish a ContentDirectory event (SystemUpdateID)
|
| |
| void | publishCMS () |
| | Publish a ConnectionManager event (CurrentConnectionIDs)
|
| |
| void | setupServicesImpl (IHttpServer *server) |
| | Setup the service endpoints.
|
| |
| void | setupContentDirectoryService (IHttpServer *server) |
| | Setup and register ContentDirectory service.
|
| |
| void | setupConnectionManagerService (IHttpServer *server) |
| | Setup and register ConnectionManager service.
|
| |
| bool | processAction (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Process action requests using rules-based dispatch.
|
| |
| bool | processActionBrowse (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ContentDirectory:Browse action.
|
| |
| bool | processActionSearch (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ContentDirectory:Search action.
|
| |
| bool | processActionGetSearchCapabilities (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ContentDirectory:GetSearchCapabilities action.
|
| |
| bool | processActionGetSortCapabilities (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ContentDirectory:GetSortCapabilities action.
|
| |
| bool | processActionGetSystemUpdateID (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ContentDirectory:GetSystemUpdateID action.
|
| |
| bool | processActionGetProtocolInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Replies with Source and Sink protocol lists (CSV protocolInfo strings)
|
| |
| bool | processActionGetCurrentConnectionIDs (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ConnectionManager:GetCurrentConnectionIDs action.
|
| |
| bool | processActionGetCurrentConnectionInfo (ActionRequest &action, IHttpServer &server, IClientHandler &client) |
| | Handle ConnectionManager:GetCurrentConnectionInfo action.
|
| |
| ContentQueryType | parseContentQueryType (const char *flag) |
| | Common helper to stream a ContentDirectory response (Browse or Search)
|
| |
| size_t | soapEnvelopeStart (Print &out) |
| |
| size_t | soapEnvelopeEnd (Print &out) |
| |
| size_t | actionResponseStart (Print &out, const char *responseName, const char *serviceNS) |
| |
| size_t | actionResponseEnd (Print &out, const char *responseName) |
| |
| size_t | streamActionItems (Print &out, const char *responseName, int startingIndex) |
| |
| size_t | streamDIDL (Print &out, int numberReturned, int startingIndex) |
| | Stream DIDL-Lite payload for a Browse/Search result.
|
| |
| size_t | streamDIDLItems (Print &out, int numberReturned, int startingIndex) |
| |
| size_t | streamDIDLItem (Print &out, const MediaItem &item) |
| |
| Str | getUri (const char *path) |
| | Complete Uri.
|
| |
| const char * | toStr (MediaItemClass itemClass) |
| | convert MediaItemClass to UPnP class string
|
| |
| void | setupRules () |
| |
| 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::DLNAMediaServer< ClientType >
Digital Media Server implementation.
Lightweight DLNA MediaServer with ContentDirectory (Browse/Search) and ConnectionManager services. Register PrepareDataCallback and GetDataCallback and optionally setReference(void*) for custom context.
This class provides a complete DLNA Digital Media Server (DMS) implementation supporting:
- ContentDirectory service (Browse, Search, GetSearchCapabilities, etc.)
- ConnectionManager service (GetProtocolInfo, GetCurrentConnectionIDs, etc.)
- UPnP event subscriptions for state change notifications
Usage:
- Create an instance with HttpServer and IUDPService
- Set callbacks for content preparation and retrieval
- Call begin() to start the server
- Call loop() repeatedly to process requests
- 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:*.