* Add support for Sony's av:mediaClass tag, so certain Sony devices can filter menu items by media type.
This commit is contained in:
parent
e1c03bf689
commit
311e36736e
29
upnpsoap.c
29
upnpsoap.c
@ -347,10 +347,11 @@ mime_to_ext(const char * mime, char * buf)
|
||||
#define FILTER_UPNP_ORIGINALTRACKNUMBER 0x00080000
|
||||
#define FILTER_UPNP_SEARCHCLASS 0x00100000
|
||||
/* Vendor-specific filter flags */
|
||||
#define FILTER_SEC_CAPTION_INFO_EX 0x10000000
|
||||
#define FILTER_SEC_DCM_INFO 0x20000000
|
||||
#define FILTER_PV_SUBTITLE_FILE_TYPE 0x40000000
|
||||
#define FILTER_PV_SUBTITLE_FILE_URI 0x80000000
|
||||
#define FILTER_SEC_CAPTION_INFO_EX 0x01000000
|
||||
#define FILTER_SEC_DCM_INFO 0x02000000
|
||||
#define FILTER_PV_SUBTITLE_FILE_TYPE 0x04000000
|
||||
#define FILTER_PV_SUBTITLE_FILE_URI 0x08000000
|
||||
#define FILTER_AV_MEDIA_CLASS 0x10000000
|
||||
|
||||
static u_int32_t
|
||||
set_filter_flags(char * filter, struct upnphttp *h)
|
||||
@ -360,7 +361,7 @@ set_filter_flags(char * filter, struct upnphttp *h)
|
||||
|
||||
if( !filter || (strlen(filter) <= 1) )
|
||||
/* Not the full 32 bits. Skip vendor-specific stuff by default. */
|
||||
return 0xFFFFFFF;
|
||||
return 0xFFFFFF;
|
||||
if( h->reqflags & FLAG_SAMSUNG )
|
||||
flags |= FILTER_DLNA_NAMESPACE;
|
||||
item = strtok_r(filter, ",", &saveptr);
|
||||
@ -491,6 +492,10 @@ set_filter_flags(char * filter, struct upnphttp *h)
|
||||
{
|
||||
flags |= FILTER_PV_SUBTITLE_FILE_URI;
|
||||
}
|
||||
else if( strcmp(item, "av:mediaClass") == 0 )
|
||||
{
|
||||
flags |= FILTER_AV_MEDIA_CLASS;
|
||||
}
|
||||
item = strtok_r(NULL, ",", &saveptr);
|
||||
}
|
||||
|
||||
@ -1010,6 +1015,20 @@ callback(void *args, int argc, char **argv, char **azColName)
|
||||
ret = strcatf(str, ">http://%s:%d/AlbumArt/%s-%s.jpg</upnp:albumArtURI>",
|
||||
lan_addr[passed_args->iface].str, runtime_vars.port, album_art, detailID);
|
||||
}
|
||||
if( passed_args->filter & FILTER_AV_MEDIA_CLASS ) {
|
||||
char class;
|
||||
if( strncmp(id, MUSIC_ID, sizeof(MUSIC_ID)) == 0 )
|
||||
class = 'M';
|
||||
else if( strncmp(id, VIDEO_ID, sizeof(VIDEO_ID)) == 0 )
|
||||
class = 'V';
|
||||
else if( strncmp(id, IMAGE_ID, sizeof(IMAGE_ID)) == 0 )
|
||||
class = 'P';
|
||||
else
|
||||
class = 0;
|
||||
if( class )
|
||||
ret = strcatf(str, "<av:mediaClass xmlns:av=\"urn:schemas-sony-com:av\">"
|
||||
"%c</av:mediaClass>", class);
|
||||
}
|
||||
ret = strcatf(str, "</container>");
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user