diff options
author | Justin Maggard <jmaggard@users.sourceforce.net> | 2011-11-24 02:41:42 +0400 |
---|---|---|
committer | Justin Maggard <jmaggard@users.sourceforce.net> | 2011-11-24 02:41:42 +0400 |
commit | 593566e39838a1cb54c17ef7a3f2a21f8b275222 (patch) | |
tree | f65ff96232abd38b43edac654beeb6eb3bd8e84a | |
parent | e67e419bee1aa215214f5eb184d12eff231ea796 (diff) |
* Fix SRT caption support with the latest Samsung Series D firmware.
-rw-r--r-- | upnphttp.c | 5 | ||||
-rw-r--r-- | upnpsoap.c | 22 |
2 files changed, 21 insertions, 6 deletions
@@ -286,6 +286,7 @@ intervening space) by either an integer or the keyword "infinite". */ } else if(strncasecmp(line, "User-Agent", 10)==0) { + char *s; /* Skip client detection if we already detected it. */ if( h->req_client ) goto next_header; @@ -304,13 +305,13 @@ intervening space) by either an integer or the keyword "infinite". */ h->reqflags |= FLAG_DLNA; h->reqflags |= FLAG_MIME_AVI_DIVX; } - else if(strstrc(p, "SEC_HHP_", '\r')) + else if((s=strstrc(p, "SEC_HHP_", '\r'))) { h->req_client = ESamsungSeriesC; h->reqflags |= FLAG_SAMSUNG; h->reqflags |= FLAG_DLNA; h->reqflags |= FLAG_NO_RESIZE; - if(strstrc(p, "SEC_HHP_TV", '\r')) + if(strstrc(s+8, "TV", '\r')) h->reqflags |= FLAG_SAMSUNG_TV; } else if(strncmp(p, "SamsungWiselinkPro", 18)==0) @@ -488,7 +488,7 @@ set_filter_flags(char * filter, struct upnphttp *h) } char * -parse_sort_criteria(char * sortCriteria, int * error) +parse_sort_criteria(char *sortCriteria, int *error) { char *order = NULL; char *item, *saveptr; @@ -929,6 +929,15 @@ callback(void *args, int argc, char **argv, char **azColName) lan_addr[passed_args->iface].str, runtime_vars.port, detailID); } break; + case ESamsungSeriesC: + if( sql_get_int_field(db, "SELECT ID from CAPTIONS where ID = '%s'", detailID) > 0 ) + { + ret = strcatf(str, "<sec:CaptionInfoEx sec:type=\"srt\">" + "http://%s:%d/Captions/%s.srt" + "</sec:CaptionInfoEx>", + lan_addr[passed_args->iface].str, runtime_vars.port, detailID); + } + break; default: break; } @@ -1119,16 +1128,21 @@ BrowseContentDirectory(struct upnphttp * h, const char * action) if( strncmp(ObjectID, MUSIC_PLIST_ID, strlen(MUSIC_PLIST_ID)) == 0 ) { if( strcmp(ObjectID, MUSIC_PLIST_ID) == 0 ) - asprintf(&orderBy, "order by d.TITLE"); + ret = asprintf(&orderBy, "order by d.TITLE"); else - asprintf(&orderBy, "order by length(OBJECT_ID), OBJECT_ID"); + ret = asprintf(&orderBy, "order by length(OBJECT_ID), OBJECT_ID"); } else if( args.client == ERokuSoundBridge ) { #ifdef __sparc__ if( totalMatches < 10000 ) #endif - asprintf(&orderBy, "order by o.CLASS, d.DISC, d.TRACK, d.TITLE"); + ret = asprintf(&orderBy, "order by o.CLASS, d.DISC, d.TRACK, d.TITLE"); + } + if( ret == -1 ) + { + orderBy = NULL; + ret = 0; } } /* If it's a DLNA client, return an error for bad sort criteria */ |