* Consolidate client detection code.

* Add forced sorting support for Panasonic devices.
This commit is contained in:
Justin Maggard
2013-03-18 05:37:46 +00:00
parent bc33a34331
commit 1c748c1d5a
12 changed files with 436 additions and 265 deletions

View File

@@ -322,16 +322,17 @@ GetCurrentConnectionInfo(struct upnphttp * h, const char * action)
#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)
static uint32_t
set_filter_flags(char *filter, struct upnphttp *h)
{
char *item, *saveptr = NULL;
uint32_t flags = 0;
int samsung = client_types[h->req_client].flags & FLAG_SAMSUNG;
if( !filter || (strlen(filter) <= 1) )
/* Not the full 32 bits. Skip vendor-specific stuff by default. */
return 0xFFFFFF;
if( h->reqflags & FLAG_SAMSUNG )
if( samsung )
flags |= FILTER_DLNA_NAMESPACE;
item = strtok_r(filter, ",", &saveptr);
while( item != NULL )
@@ -371,7 +372,7 @@ set_filter_flags(char * filter, struct upnphttp *h)
else if( strcmp(item, "upnp:albumArtURI") == 0 )
{
flags |= FILTER_UPNP_ALBUMARTURI;
if( h->reqflags & FLAG_SAMSUNG )
if( samsung )
flags |= FILTER_UPNP_ALBUMARTURI_DLNA_PROFILEID;
}
else if( strcmp(item, "upnp:albumArtURI@dlna:profileID") == 0 )
@@ -1124,8 +1125,8 @@ BrowseContentDirectory(struct upnphttp * h, const char * action)
args.returned = 0;
args.requested = RequestedCount;
args.client = h->req_client;
args.flags = h->reqflags;
args.client = client_types[h->req_client].type;
args.flags = client_types[h->req_client].flags;
args.str = &str;
if( args.flags & FLAG_MS_PFS )
{
@@ -1201,7 +1202,7 @@ BrowseContentDirectory(struct upnphttp * h, const char * action)
else
ret = asprintf(&orderBy, "order by length(OBJECT_ID), OBJECT_ID");
}
else if( args.client == ERokuSoundBridge )
else if( args.flags & FLAG_FORCE_SORT )
{
#ifdef __sparc__
if( totalMatches < 10000 )
@@ -1570,8 +1571,8 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
args.returned = 0;
args.requested = RequestedCount;
args.client = h->req_client;
args.flags = h->reqflags;
args.client = client_types[h->req_client].type;
args.flags = client_types[h->req_client].flags;
args.str = &str;
if( args.flags & FLAG_MS_PFS )
{