|
| | DLNAMediaServer () |
| | Default constructor for MediaServer. Initializes device information and default properties.
|
| |
| | DLNAMediaServer (HttpServer &server, IUDPService &udp) |
| | Recommended constructor Construct a MediaServer with associated HTTP server and UDP service This constructor stores the provided server/udp references so begin() can be called without parameters.
|
| |
| | ~DLNAMediaServer () |
| | Destructor.
|
| |
| void | setHttpServer (HttpServer &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 () |
| | 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 callback that provides a MediaItem by index.
|
| |
| void | setReference (void *ref) |
| | Sets a user reference pointer, available in callbacks.
|
| |
| HttpServer * | getHttpServer () |
| | Provides access to the http server.
|
| |
| int | getSystemUpdateID () |
| | Provides access to the system update ID.
|
| |
| int | incrementSystemUpdateID () |
| |
| DLNADevice & | device () |
| | Provides access to the internal DLNA device instance.
|
| |
| void | setCustomActionRule (const char *suffix, bool(*handler)(DLNAMediaServer *, ActionRequest &, HttpServer &)) |
| | Define your own custom logic.
|
| |
| void | print (Print &out) |
| | renders the device xml
|
| |
| 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.
|
| |
| void | setActive (bool flag) |
| | Sets the server to inactive.
|
| |
| | operator bool () |
| | return true if active
|
| |
|
| void | publishProperty (const char *serviceAbbrev, const char *changeTag) |
| |
| void | publishAVT () |
| | Publish a ContentDirectory event (SystemUpdateID)
|
| |
| void | publishCMS () |
| | Publish a ConnectionManager event (CurrentConnectionIDs)
|
| |
| void | setupServicesImpl (HttpServer *server) |
| | Setup the service endpoints.
|
| |
| void | setupContentDirectoryService (HttpServer *server) |
| | Setup and register ContentDirectory service.
|
| |
| void | setupConnectionManagerService (HttpServer *server) |
| | Setup and register ConnectionManager service.
|
| |
| bool | processAction (ActionRequest &action, HttpServer &server) |
| | Process action requests using rules-based dispatch.
|
| |
| bool | processActionBrowse (ActionRequest &action, HttpServer &server) |
| | Handle ContentDirectory:Browse action.
|
| |
| bool | processActionSearch (ActionRequest &action, HttpServer &server) |
| | Handle ContentDirectory:Search action.
|
| |
| bool | processActionGetSearchCapabilities (ActionRequest &action, HttpServer &server) |
| | Handle ContentDirectory:GetSearchCapabilities action.
|
| |
| bool | processActionGetSortCapabilities (ActionRequest &action, HttpServer &server) |
| | Handle ContentDirectory:GetSortCapabilities action.
|
| |
| bool | processActionGetSystemUpdateID (ActionRequest &action, HttpServer &server) |
| | Handle ContentDirectory:GetSystemUpdateID action.
|
| |
| bool | processActionGetProtocolInfo (ActionRequest &action, HttpServer &server) |
| | Replies with Source and Sink protocol lists (CSV protocolInfo strings)
|
| |
| bool | processActionGetCurrentConnectionIDs (ActionRequest &action, HttpServer &server) |
| | Handle ConnectionManager:GetCurrentConnectionIDs action.
|
| |
| bool | processActionGetCurrentConnectionInfo (ActionRequest &action, HttpServer &server) |
| | Handle ConnectionManager:GetCurrentConnectionInfo action.
|
| |
| ContentQueryType | parseContentQueryType (const char *flag) |
| | Common helper to stream a ContentDirectory response (Browse or Search)
|
| |
| void | soapEnvelopeStart (ChunkPrint &chunk) |
| |
| void | soapEnvelopeEnd (ChunkPrint &chunk) |
| |
| void | actionResponseStart (ChunkPrint &chunk, const char *responseName, const char *serviceNS) |
| |
| void | actionResponseEnd (ChunkPrint &chunk, const char *responseName) |
| |
| bool | streamActionItems (const char *responseName, const char *objectID, ContentQueryType queryType, const char *filter, int startingIndex, int requestedCount, HttpServer &server) |
| |
| void | streamDIDL (ChunkPrint &chunk_writer, int numberReturned, int startingIndex) |
| | Stream DIDL-Lite payload for a Browse/Search result.
|
| |
| const char * | toStr (MediaItemClass itemClass) |
| |
| void | setupRules () |
| |
| virtual void | setupServices (HttpServer &server, IUDPService &udp) |
| | to be implemented by subclasses
|
| |
| size_t | printRoot () |
| |
| size_t | printDevice () |
| |
| size_t | printSpecVersion () |
| |
| size_t | printServiceList () |
| |
| size_t | printService (void *srv) |
| |
| size_t | printIconList () |
| |
| size_t | printIconDlnaInfo (Icon &icon) |
| |
Digital Media Server implementation.
This class implements a lightweight DLNA MediaServer device with a ContentDirectory service (Browse and Search) and a ConnectionManager service.
The API is designed for embedding custom content lists and streaming logic. The API uses two callbacks to retrieve the content data:
- PrepareDataCallback: Called to determine the number of items, total matches, and update ID for a Browse or Search request.
- GetDataCallback: Called for each item to retrieve its metadata (MediaItem) by index.
A user reference pointer can be set with setReference(void*), and is passed to both callbacks for custom context or data.
Example usage:
The implementation is intentionally compact and suitable as a starting point for embedded or test DLNA servers.
| void tiny_dlna::DLNAMediaServer::setProtocols |
( |
const char * |
source, |
|
|
const char * |
sink = "" |
|
) |
| |
|
inline |
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:*.