summaryrefslogtreecommitdiffstats
path: root/lib/libUPnP/patches/0025-platinum-add-proper-support-for-dc-publisher.patch
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libUPnP/patches/0025-platinum-add-proper-support-for-dc-publisher.patch')
-rw-r--r--lib/libUPnP/patches/0025-platinum-add-proper-support-for-dc-publisher.patch124
1 files changed, 124 insertions, 0 deletions
diff --git a/lib/libUPnP/patches/0025-platinum-add-proper-support-for-dc-publisher.patch b/lib/libUPnP/patches/0025-platinum-add-proper-support-for-dc-publisher.patch
new file mode 100644
index 0000000..ee7e048
--- /dev/null
+++ b/lib/libUPnP/patches/0025-platinum-add-proper-support-for-dc-publisher.patch
@@ -0,0 +1,124 @@
+From 5991b14604febf705150cfc568255d9592e37b07 Mon Sep 17 00:00:00 2001
+From: montellese <montellese@xbmc.org>
+Date: Mon, 19 May 2014 20:38:53 +0200
+Subject: [PATCH 02/11] platinum: add proper support for dc:publisher
+
+---
+ .../Source/Devices/MediaServer/PltDidl.cpp | 2 ++
+ .../Platinum/Source/Devices/MediaServer/PltDidl.h | 3 +++
+ .../Source/Devices/MediaServer/PltMediaItem.cpp | 23 ++++++++++++++++++++++
+ .../Source/Devices/MediaServer/PltMediaItem.h | 2 +-
+ .../Devices/MediaServer/PltSyncMediaBrowser.h | 2 +-
+ 5 files changed, 30 insertions(+), 2 deletions(-)
+
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.cpp b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.cpp
+index 73f9ed2..3d8c9fd 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.cpp
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.cpp
+@@ -135,6 +135,8 @@ PLT_Didl::ConvertFilterToMask(const NPT_String& filter)
+ mask |= PLT_FILTER_MASK_EPISODE;
+ } else if (NPT_String::CompareN(s+i, PLT_FILTER_FIELD_RATING, len, true) == 0) {
+ mask |= PLT_FILTER_MASK_RATING;
++ } else if (NPT_String::CompareN(s+i, PLT_FILTER_FIELD_PUBLISHER, len, true) == 0) {
++ mask |= PLT_FILTER_MASK_PUBLISHER;
+ } else if (NPT_String::CompareN(s+i, PLT_FILTER_FIELD_RES, len, true) == 0) {
+ mask |= PLT_FILTER_MASK_RES;
+ } else if (NPT_String::CompareN(s+i, PLT_FILTER_FIELD_RES_DURATION, len, true) == 0 ||
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.h b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.h
+index 59d1605..ae67b43 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.h
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltDidl.h
+@@ -90,6 +90,8 @@
+ #define PLT_FILTER_MASK_LASTPLAYBACK NPT_UINT64_C(0x0000000200000000)
+ #define PLT_FILTER_MASK_PLAYCOUNT NPT_UINT64_C(0x0000000400000000)
+
++#define PLT_FILTER_MASK_PUBLISHER NPT_UINT64_C(0x0000000800000000)
++
+ #define PLT_FILTER_FIELD_TITLE "dc:title"
+ #define PLT_FILTER_FIELD_CREATOR "dc:creator"
+ #define PLT_FILTER_FIELD_DATE "dc:date"
+@@ -118,6 +120,7 @@
+ #define PLT_FILTER_FIELD_CONTAINER_CHILDCOUNT "container@childCount"
+ #define PLT_FILTER_FIELD_CONTAINER_SEARCHABLE "container@searchable"
+ #define PLT_FILTER_FIELD_REFID "@refID"
++#define PLT_FILTER_FIELD_PUBLISHER "dc:publisher"
+
+ #define PLT_FILTER_FIELD_RES "res"
+ #define PLT_FILTER_FIELD_RES_DURATION "res@duration"
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.cpp b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.cpp
+index 1728eff..bd55cb5 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.cpp
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.cpp
+@@ -172,6 +172,7 @@ PLT_MediaObject::Reset()
+ m_People.artists.Clear();
+ m_People.authors.Clear();
+ m_People.directors.Clear();
++ m_People.publisher.Clear();
+
+ m_Affiliation.album = "";
+ m_Affiliation.genres.Clear();
+@@ -259,6 +260,20 @@ PLT_MediaObject::ToDidl(NPT_UInt64 mask, NPT_String& didl)
+ m_People.directors.ToDidl(didl, "director");
+ }
+
++ // publisher
++ if (mask & PLT_FILTER_MASK_PUBLISHER) {
++ // Add unknown publisher
++ if (m_People.publisher.GetItemCount() == 0)
++ m_People.publisher.Add("Unknown");
++
++ for (NPT_List<NPT_String>::Iterator it =
++ m_People.publisher.GetFirstItem(); it; ++it) {
++ didl += "<dc:publisher>";
++ PLT_Didl::AppendXmlEscape(didl, (*it));
++ didl += "</dc:publisher>";
++ }
++ }
++
+ // album
+ if ((mask & PLT_FILTER_MASK_ALBUM) && !m_Affiliation.album.IsEmpty()) {
+ didl += "<upnp:album>";
+@@ -517,6 +532,14 @@ PLT_MediaObject::FromDidl(NPT_XmlElementNode* entry)
+ PLT_XmlHelper::GetChildren(entry, children, "director", didl_namespace_upnp);
+ m_People.directors.FromDidl(children);
+
++ children.Clear();
++ PLT_XmlHelper::GetChildren(entry, children, "publisher", didl_namespace_dc);
++ for (NPT_Cardinal i=0; i<children.GetItemCount(); i++) {
++ if (children[i]->GetText()) {
++ m_People.publisher.Add(*children[i]->GetText());
++ }
++ }
++
+ PLT_XmlHelper::GetChildText(entry, "album", m_Affiliation.album, didl_namespace_upnp, 256);
+ PLT_XmlHelper::GetChildText(entry, "programTitle", m_Recorded.program_title, didl_namespace_upnp);
+ PLT_XmlHelper::GetChildText(entry, "seriesTitle", m_Recorded.series_title, didl_namespace_upnp);
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.h b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.h
+index 2449276..9df90d5 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.h
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltMediaItem.h
+@@ -92,7 +92,7 @@ typedef struct {
+ PLT_PersonRoles authors;
+ NPT_String producer; //TODO: can be multiple
+ PLT_PersonRoles directors;
+- NPT_String publisher; //TODO: can be multiple
++ NPT_List<NPT_String> publisher;
+ NPT_String contributor; // should match m_Creator (dc:creator) //TODO: can be multiple
+ } PLT_PeopleInfo;
+
+diff --git a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h
+index 9888b88..c6fc3be 100644
+--- a/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h
++++ b/lib/libUPnP/Platinum/Source/Devices/MediaServer/PltSyncMediaBrowser.h
+@@ -118,7 +118,7 @@ protected:
+ NPT_Int32 index,
+ NPT_Int32 count,
+ bool browse_metadata = false,
+- const char* filter = "dc:date,dc:description,upnp:longDescription,upnp:genre,res,res@duration,res@size,upnp:albumArtURI,upnp:rating,upnp:lastPlaybackPosition,upnp:lastPlaybackTime,upnp:playbackCount,upnp:originalTrackNumber,upnp:episodeNumber,upnp:programTitle,upnp:seriesTitle,upnp:album,upnp:artist,upnp:author,upnp:director,searchable,childCount,dc:title,dc:creator,upnp:actor,res@resolution", // explicitely specify res otherwise WMP won't return a URL!
++ const char* filter = "dc:date,dc:description,upnp:longDescription,upnp:genre,res,res@duration,res@size,upnp:albumArtURI,upnp:rating,upnp:lastPlaybackPosition,upnp:lastPlaybackTime,upnp:playbackCount,upnp:originalTrackNumber,upnp:episodeNumber,upnp:programTitle,upnp:seriesTitle,upnp:album,upnp:artist,upnp:author,upnp:director,dc:publisher,searchable,childCount,dc:title,dc:creator,upnp:actor,res@resolution", // explicitely specify res otherwise WMP won't return a URL!
+ const char* sort = "");
+ private:
+ NPT_Result Find(const char* ip, PLT_DeviceDataReference& device);
+--
+1.7.11.msysgit.0
+