minidlna: remove panasonic video grouping by directory patch 4896/head
authorJames Christopher Adduono <jc@adduono.com>
Mon, 2 Oct 2017 21:29:48 +0000 (17:29 -0400)
committerJames Christopher Adduono <jc@adduono.com>
Wed, 4 Oct 2017 19:32:27 +0000 (15:32 -0400)
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 <jc@adduono.com>
multimedia/minidlna/patches/001-group-videos-by-directory-for-panasonic-tvs.patch [deleted file]

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 (file)
index f36edde..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-From c8245740c3a8699cfe7d7e5aa0d427b931018ad5 Mon Sep 17 00:00:00 2001
-From: Yusuke Yanbe <y.yanbe@gmail.com>
-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, "&lt;pxn:groupTopFlag&gt;%d&lt;/pxn:groupTopFlag&gt;"
-+                                                         "&lt;pxn:groupID&gt;%s&lt;/pxn:groupID&gt;"
-+                                                         "&lt;pxn:groupTitle&gt;%s&lt;/pxn:groupTitle&gt;"
-+                                                         "&lt;pxn:groupMemberNum&gt;%d&lt;/pxn:groupMemberNum&gt;",
-+                                                         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;