From fd9eceb27b317bb62852aea2a9939f4135ba8b8e Mon Sep 17 00:00:00 2001 From: James Christopher Adduono Date: Mon, 2 Oct 2017 17:29:48 -0400 Subject: [PATCH] minidlna: remove panasonic video grouping by directory patch Unfortunately this is breaking sorting and causes some issues with starting streams on various non-Panasonic clients. Tested on 5 different models of 2014-2017 Samsung Smart TVs and BubbleUPnP for Android. Removing this patch fixes sorting by filename and clients no longer sometimes fail to load the streams. Signed-off-by: James Christopher Adduono --- ...ideos-by-directory-for-panasonic-tvs.patch | 92 ------------------- 1 file changed, 92 deletions(-) delete mode 100644 multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch diff --git a/multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch b/multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch deleted file mode 100644 index f36edde48..000000000 --- a/multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch +++ /dev/null @@ -1,92 +0,0 @@ -From c8245740c3a8699cfe7d7e5aa0d427b931018ad5 Mon Sep 17 00:00:00 2001 -From: Yusuke Yanbe -Date: Mon, 4 Jul 2016 08:20:46 +0900 -Subject: [PATCH] Add support for grouping videos by directory for Panasonic - TVs - ---- - upnpsoap.c | 24 +++++++++++++++++++----- - upnpsoap.h | 5 ++++- - 2 files changed, 23 insertions(+), 6 deletions(-) - ---- a/upnpsoap.c -+++ b/upnpsoap.c -@@ -1095,6 +1095,15 @@ callback(void *args, int argc, char **ar - add_res(size, duration, bitrate, sampleFrequency, nrAudioChannels, - resolution, dlna_buf, mime, detailID, ext, passed_args); - } -+ -+ DPRINTF(E_DEBUG, L_HTTP, "Title: %s - %d Returned / %d childCount\n", -+ title, passed_args->returned, passed_args->childCount); -+ -+ ret = strcatf(str, "<pxn:groupTopFlag>%d</pxn:groupTopFlag>" -+ "<pxn:groupID>%s</pxn:groupID>" -+ "<pxn:groupTitle>%s</pxn:groupTitle>" -+ "<pxn:groupMemberNum>%d</pxn:groupMemberNum>", -+ passed_args->returned == passed_args->childCount, parent, passed_args->parentTitle, passed_args->childCount); - break; - case ESamsungSeriesCDE: - case ELGDevice: -@@ -1357,8 +1366,11 @@ BrowseContentDirectory(struct upnphttp * - if (!where[0]) - sqlite3_snprintf(sizeof(where), where, "PARENT_ID = '%q'", ObjectID); - -- if (!totalMatches) -+ if (!totalMatches) { - totalMatches = get_child_count(ObjectID, magic); -+ args.childCount = totalMatches; -+ args.parentTitle = sql_get_text_field(db, "SELECT d.TITLE FROM OBJECTS o LEFT JOIN DETAILS d ON (d.ID = o.DETAIL_ID) WHERE OBJECT_ID='%q'", ObjectID); -+ } - ret = 0; - if (SortCriteria && !orderBy) - { -@@ -1397,14 +1409,16 @@ BrowseContentDirectory(struct upnphttp * - SoapError(h, 709, "Unsupported or invalid sort criteria"); - goto browse_error; - } -- - sql = sqlite3_mprintf("SELECT %s, %s, %s, " COLUMNS - "from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)" -- " where %s %s limit %d, %d;", -+ " where %s order by d.date limit %d, %d;", - objectid_sql, parentid_sql, refid_sql, -- where, THISORNUL(orderBy), StartingIndex, RequestedCount); -+ where, StartingIndex, RequestedCount); - DPRINTF(E_DEBUG, L_HTTP, "Browse SQL: %s\n", sql); - ret = sqlite3_exec(db, sql, callback, (void *) &args, &zErrMsg); -+ if (args.parentTitle) { -+ sqlite3_free(args.parentTitle); -+ } - } - if( (ret != SQLITE_OK) && (zErrMsg != NULL) ) - { -@@ -1838,7 +1852,7 @@ SearchContentDirectory(struct upnphttp * - (*ContainerID == '*') ? NULL : - sqlite3_mprintf("UNION ALL " SELECT_COLUMNS - "from OBJECTS o left join DETAILS d on (d.ID = o.DETAIL_ID)" -- " where OBJECT_ID = '%q' and (%s) ", ContainerID, where), -+ " where OBJECT_ID = '%q' and (%s) ORDER BY d.date", ContainerID, where), - orderBy, StartingIndex, RequestedCount); - DPRINTF(E_DEBUG, L_HTTP, "Search SQL: %s\n", sql); - ret = sqlite3_exec(db, sql, callback, (void *) &args, &zErrMsg); ---- a/upnpsoap.h -+++ b/upnpsoap.h -@@ -27,7 +27,8 @@ - #define CONTENT_DIRECTORY_SCHEMAS \ - " xmlns:dc=\"http://purl.org/dc/elements/1.1/\"" \ - " xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\"" \ -- " xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"" -+ " xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\"" \ -+ " xmlns:pxn=\"urn:schemas-panasonic-com:pxn\"" - #define DLNA_NAMESPACE \ - " xmlns:dlna=\"urn:schemas-dlna-org:metadata-1-0/\"" - #define PV_NAMESPACE \ -@@ -39,6 +40,8 @@ struct Response - int start; - int returned; - int requested; -+ int childCount; -+ char *parentTitle; - int iface; - uint32_t filter; - uint32_t flags;