* Add generic DLNA client type detection and caching, and don't use DLNA-specific MIME types if the client doesn't support DLNA.
This commit is contained in:
37
upnpsoap.c
37
upnpsoap.c
@ -446,22 +446,33 @@ callback(void *args, int argc, char **argv, char **azColName)
|
||||
|
||||
if( strncmp(class, "item", 4) == 0 )
|
||||
{
|
||||
switch( passed_args->client )
|
||||
/* We may need special handling for MIME types */
|
||||
if( strncmp(mime, "video", 5) == 0 )
|
||||
{
|
||||
case EPS3:
|
||||
if( creator && (strcmp(mime, "video/x-msvideo") == 0) )
|
||||
{
|
||||
strcpy(mime+6, "divx");
|
||||
switch( passed_args->client )
|
||||
{
|
||||
case EPS3:
|
||||
if( creator && (strcmp(mime, "video/x-msvideo") == 0) )
|
||||
{
|
||||
strcpy(mime+6, "divx");
|
||||
break;
|
||||
}
|
||||
case EXbox:
|
||||
if( strcmp(mime, "video/x-msvideo") == 0 )
|
||||
{
|
||||
strcpy(mime+6, "avi");
|
||||
}
|
||||
break;
|
||||
}
|
||||
case EXbox:
|
||||
if( strcmp(mime, "video/x-msvideo") == 0 )
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if( !(passed_args->flags & FLAG_DLNA) )
|
||||
{
|
||||
if( strcmp(mime+6, "vnd.dlna.mpeg-tts") == 0 )
|
||||
{
|
||||
strcpy(mime+6, "avi");
|
||||
strcpy(mime+6, "mpeg");
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
ret = sprintf(str_buf, "<item id=\"%s\" parentID=\"%s\" restricted=\"1\"", id, parent);
|
||||
memcpy(passed_args->resp+passed_args->size, &str_buf, ret+1);
|
||||
@ -720,6 +731,7 @@ BrowseContentDirectory(struct upnphttp * h, const char * action)
|
||||
args.returned = 0;
|
||||
args.requested = RequestedCount;
|
||||
args.client = h->req_client;
|
||||
args.flags = h->reqflags;
|
||||
if( h->req_client == EXbox )
|
||||
{
|
||||
if( strcmp(ObjectId, "16") == 0 )
|
||||
@ -848,6 +860,7 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
|
||||
args.returned = 0;
|
||||
args.requested = RequestedCount;
|
||||
args.client = h->req_client;
|
||||
args.flags = h->reqflags;
|
||||
if( h->req_client == EXbox )
|
||||
{
|
||||
if( strcmp(ContainerID, "4") == 0 )
|
||||
|
Reference in New Issue
Block a user