[rygel] core: Add hacks for Panasonic TV
- From: Jens Georg <jensgeorg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [rygel] core: Add hacks for Panasonic TV
- Date: Wed, 19 Oct 2011 07:30:05 +0000 (UTC)
commit 0cbe4a36a01bfd0c600a51905b135d1c4d7b25bf
Author: Zeeshan Ali (Khattak) <zeeshanak gnome org>
Date: Mon Oct 17 01:47:03 2011 +0300
core: Add hacks for Panasonic TV
Currently its just about lieing to the device that png's thumbnails are
jpegs.
https://bugzilla.gnome.org/show_bug.cgi?id=661336
src/rygel/Makefile.am | 1 +
src/rygel/rygel-client-hacks.vala | 12 +++++-
src/rygel/rygel-panasonic-hacks.vala | 72 ++++++++++++++++++++++++++++++++++
3 files changed, 83 insertions(+), 2 deletions(-)
---
diff --git a/src/rygel/Makefile.am b/src/rygel/Makefile.am
index 2ae265e..0308b71 100644
--- a/src/rygel/Makefile.am
+++ b/src/rygel/Makefile.am
@@ -85,6 +85,7 @@ VAPI_SOURCE_FILES = \
rygel-search.vala \
rygel-client-hacks.vala \
rygel-xbox-hacks.vala \
+ rygel-panasonic-hacks.vala \
rygel-import-resource.vala \
rygel-item-creator.vala \
rygel-item-destroyer.vala \
diff --git a/src/rygel/rygel-client-hacks.vala b/src/rygel/rygel-client-hacks.vala
index ae7c725..baf7380 100644
--- a/src/rygel/rygel-client-hacks.vala
+++ b/src/rygel/rygel-client-hacks.vala
@@ -37,12 +37,20 @@ internal abstract class Rygel.ClientHacks : GLib.Object {
public static ClientHacks create_for_action (ServiceAction action)
throws ClientHacksError {
- return new XBoxHacks.for_action (action);
+ try {
+ return new XBoxHacks.for_action (action);
+ } catch {}
+
+ return new PanasonicHacks.for_action (action);
}
public static ClientHacks create_for_headers (MessageHeaders headers)
throws ClientHacksError {
- return new XBoxHacks.for_headers (headers);
+ try {
+ return new XBoxHacks.for_headers (headers);
+ } catch {}
+
+ return new PanasonicHacks.for_headers (headers);
}
protected ClientHacks (string agent_pattern, MessageHeaders? headers = null)
diff --git a/src/rygel/rygel-panasonic-hacks.vala b/src/rygel/rygel-panasonic-hacks.vala
new file mode 100644
index 0000000..5a3a56f
--- /dev/null
+++ b/src/rygel/rygel-panasonic-hacks.vala
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2011 Red Hat, Inc.
+ *
+ * Author: Zeeshan Ali (Khattak) <zeeshanak gnome 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 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 program; 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.PanasonicHacks : ClientHacks {
+ private static string AGENT = ".*Panasonic MIL DLNA CP.*";
+
+ private static Regex mime_regex;
+ private static Regex dlna_regex;
+
+ static construct {
+ try {
+ mime_regex = new Regex ("png");
+ dlna_regex = new Regex ("PNG");
+ } catch (RegexError error) {
+ assert_not_reached ();
+ }
+ }
+
+ public PanasonicHacks () throws ClientHacksError, RegexError {
+ base (AGENT);
+ }
+
+ public PanasonicHacks.for_action (ServiceAction action)
+ throws ClientHacksError {
+ unowned MessageHeaders headers = action.get_message ().request_headers;
+ this.for_headers (headers);
+ }
+
+ public PanasonicHacks.for_headers (MessageHeaders headers)
+ throws ClientHacksError {
+ base (AGENT, headers);
+ }
+
+ public override void apply (MediaItem item) {
+ if (!(item is VisualItem)) {
+ return;
+ }
+
+ foreach (var thumbnail in (item as VisualItem).thumbnails) {
+ try {
+ thumbnail.mime_type = mime_regex.replace_literal
+ (thumbnail.mime_type, -1, 0, "jpeg");
+ thumbnail.dlna_profile = dlna_regex.replace_literal
+ (thumbnail.dlna_profile, -1, 0, "JPEG");
+ } catch (RegexError error) {
+ assert_not_reached ();
+ }
+ }
+ }
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]