* Use a "real" file extension instead of just .dat when sending container contents.

This commit is contained in:
Justin Maggard 2009-05-11 00:31:15 +00:00
parent 1b051af5fb
commit 161c513e58

View File

@ -208,6 +208,58 @@ GetCurrentConnectionInfo(struct upnphttp * h, const char * action)
BuildSendAndCloseSoapResp(h, body, bodylen);
}
static void
mime_to_ext(const char * mime, char * buf)
{
switch( *mime )
{
/* Audio extensions */
case 'a':
if( strcmp(mime+6, "mpeg") == 0 )
strcpy(buf, "mp3");
else if( strcmp(mime+6, "mp4") == 0 )
strcpy(buf, "m4a");
else if( strcmp(mime+6, "x-ms-wma") == 0 )
strcpy(buf, "wma");
else if( strcmp(mime+6, "x-flac") == 0 )
strcpy(buf, "flac");
else
strcpy(buf, "dat");
break;
case 'v':
if( strcmp(mime+6, "mpeg") == 0 )
strcpy(buf, "mpg");
else if( strcmp(mime+6, "mp4") == 0 )
strcpy(buf, "mp4");
else if( strcmp(mime+6, "x-msvideo") == 0 )
strcpy(buf, "avi");
else if( strcmp(mime+6, "x-ms-wmv") == 0 )
strcpy(buf, "wmv");
else if( strcmp(mime+6, "x-matroska") == 0 )
strcpy(buf, "mkv");
else if( strcmp(mime+6, "x-flv") == 0 )
strcpy(buf, "flv");
else if( strcmp(mime+6, "vnd.dlna.mpeg-tts") == 0 )
strcpy(buf, "mpg");
else if( strcmp(mime+6, "x-tivo-mpeg") == 0 )
strcpy(buf, "TiVo");
else
strcpy(buf, "dat");
break;
case 'i':
if( strcmp(mime+6, "jpeg") == 0 )
strcpy(buf, "jpg");
else if( strcmp(mime+6, "png") == 0 )
strcpy(buf, "png");
else
strcpy(buf, "dat");
break;
default:
strcpy(buf, "dat");
break;
}
}
#define FILTER_CHILDCOUNT 0x00000001
#define FILTER_DC_CREATOR 0x00000002
#define FILTER_DC_DATE 0x00000004
@ -429,6 +481,7 @@ callback(void *args, int argc, char **argv, char **azColName)
*genre = argv[12], *comment = argv[13], *nrAudioChannels = argv[14], *track = argv[15], *date = argv[16], *resolution = argv[17],
*tn = argv[18], *creator = argv[19], *dlna_pn = argv[20], *mime = argv[21], *album_art = argv[22];
char dlna_buf[64];
char ext[5];
char str_buf[512];
char **result;
int children, ret = 0;
@ -545,6 +598,7 @@ callback(void *args, int argc, char **argv, char **azColName)
passed_args->size += ret;
}
if( passed_args->filter & FILTER_RES ) {
mime_to_ext(mime, ext);
ret = sprintf(str_buf, "<res ");
memcpy(passed_args->resp+passed_args->size, &str_buf, ret+1);
passed_args->size += ret;
@ -582,9 +636,9 @@ callback(void *args, int argc, char **argv, char **azColName)
passed_args->size += ret;
}
ret = sprintf(str_buf, "protocolInfo=\"http-get:*:%s:%s\">"
"http://%s:%d/MediaItems/%s.dat"
"http://%s:%d/MediaItems/%s.%s"
"</res>",
mime, dlna_buf, lan_addr[0].str, runtime_vars.port, detailID);
mime, dlna_buf, lan_addr[0].str, runtime_vars.port, detailID, ext);
#if 0 //JPEG_RESIZE
if( dlna_pn && (strncmp(dlna_pn, "JPEG_LRG", 8) == 0) ) {
memcpy(passed_args->resp+passed_args->size, &str_buf, ret+1);
@ -600,7 +654,7 @@ callback(void *args, int argc, char **argv, char **azColName)
memcpy(passed_args->resp+passed_args->size, &str_buf, ret+1);
passed_args->size += ret;
ret = sprintf(str_buf, "<res protocolInfo=\"http-get:*:%s:%s\">"
"http://%s:%d/Thumbnails/%s.dat"
"http://%s:%d/Thumbnails/%s.jpg"
"</res>",
mime, "DLNA.ORG_PN=JPEG_TN", lan_addr[0].str, runtime_vars.port, detailID);
}