[rygel] server: XMBC on XBox needs transcoding for HD
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] server: XMBC on XBox needs transcoding for HD
- Date: Mon, 27 Feb 2017 20:18:34 +0000 (UTC)
commit 32cd5edd66406b5662ed56d0a479b994e1d205b2
Author: Samuel CUELLA <samuel cuella supinfo com>
Date: Tue Jan 24 17:44:00 2017 +0000
server: XMBC on XBox needs transcoding for HD
Patch modified for style and to include the other XMBC hacks
https://bugzilla.gnome.org/show_bug.cgi?id=777703
src/librygel-server/filelist.am | 1 +
src/librygel-server/rygel-client-hacks.vala | 4 +
src/librygel-server/rygel-xbmc-hacks.vala | 4 +-
src/librygel-server/rygel-xbmc4xbox-hacks.vala | 72 ++++++++++++++++++++++++
4 files changed, 79 insertions(+), 2 deletions(-)
---
diff --git a/src/librygel-server/filelist.am b/src/librygel-server/filelist.am
index c1b8a27..e360e6f 100644
--- a/src/librygel-server/filelist.am
+++ b/src/librygel-server/filelist.am
@@ -80,6 +80,7 @@ LIBRYGEL_SERVER_NONVAPI_SOURCE_FILES = \
rygel-thumbnailer.vala \
rygel-wmp-hacks.vala \
rygel-xbmc-hacks.vala \
+ rygel-xbmc4xbox-hacks.vala \
rygel-xbox-hacks.vala \
rygel-phillips-hacks.vala \
rygel-data-sink.vala \
diff --git a/src/librygel-server/rygel-client-hacks.vala b/src/librygel-server/rygel-client-hacks.vala
index 709dd57..4bd5420 100644
--- a/src/librygel-server/rygel-client-hacks.vala
+++ b/src/librygel-server/rygel-client-hacks.vala
@@ -64,6 +64,10 @@ internal abstract class Rygel.ClientHacks : GLib.Object {
} catch (Error error) { }
try {
+ return new XBMC4XBoxHacks (message);
+ } catch (Error error) { }
+
+ try {
return new XBoxHacks (message);
} catch (Error error) { }
diff --git a/src/librygel-server/rygel-xbmc-hacks.vala b/src/librygel-server/rygel-xbmc-hacks.vala
index d167e12..e554c2b 100644
--- a/src/librygel-server/rygel-xbmc-hacks.vala
+++ b/src/librygel-server/rygel-xbmc-hacks.vala
@@ -28,8 +28,8 @@ internal class Rygel.XBMCHacks : ClientHacks {
// promised by developers.
private const string AGENT = ".*Platinum/.*|.*XBMC/.*|.*Kodi.*";
- public XBMCHacks (Message? message = null) throws ClientHacksError {
- base (AGENT, message);
+ public XBMCHacks (Message? message = null, string? agent = null) throws ClientHacksError {
+ base (agent == null ? AGENT : agent, message);
}
public override void apply (MediaObject object) {
diff --git a/src/librygel-server/rygel-xbmc4xbox-hacks.vala b/src/librygel-server/rygel-xbmc4xbox-hacks.vala
new file mode 100644
index 0000000..a4d0d61
--- /dev/null
+++ b/src/librygel-server/rygel-xbmc4xbox-hacks.vala
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2017 Samuel CUELLA
+ *
+ * Author: Samuel CUELLA <samuel cuella supinfo com>
+ * Author: Jens Georg <mail jensge org>
+ *
+ * This file is part of Rygel.
+ *
+ * Rygel is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Rygel is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+using Soup;
+using GUPnP;
+
+
+internal class Rygel.XBMC4XBoxHacks : XBMCHacks {
+
+ private const string AGENT = "(.*XBMC.*Xbox.*)|(Platinum/0.5.3.0)";
+
+ public XBMC4XBoxHacks (Message? message = null) throws ClientHacksError {
+ base (message, AGENT);
+ }
+
+ public override void apply (MediaObject object) {
+ base.apply (object);
+
+ Gee.List<MediaResource> resources = object.get_resource_list ();
+ MediaResource primary = resources.first ();
+
+ if (primary == null) {
+ return;
+ }
+
+ debug ("%s primary resource is %dx%d, %s. DNLA profile is %s",
+ object.title,
+ primary.width,
+ primary.height,
+ primary.extension,
+ primary.dlna_profile);
+
+ if (!(primary.width > 720 || primary.height > 480 )) {
+ return;
+ }
+
+ MediaResource? right_one = null;
+ foreach (var resource in resources) {
+ if (resource.dlna_profile == "MPEG_TS_SD_EU_ISO") {
+ right_one = resource;
+
+ break;
+ }
+ }
+
+ if (right_one != null) {
+ //Makes the right_one the first_one, that will be picked
+ // up by XBMC4XBOX
+ resources.set (0, right_one);
+ }
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]