[rygel] renderer: Improve mime-type comparing



commit 64f65d14514405758f8613ded9957a737455a2dc
Author: Jens Georg <jensg openismus com>
Date:   Sat Mar 16 19:26:43 2013 +0100

    renderer: Improve mime-type comparing
    
    https://bugzilla.gnome.org/show_bug.cgi?id=694814

 src/librygel-renderer-gst/rygel-playbin-player.vala |  5 -----
 src/librygel-renderer/rygel-av-transport.vala       | 15 ++++++++++++---
 src/librygel-renderer/rygel-media-player.vala       |  1 +
 3 files changed, 13 insertions(+), 8 deletions(-)
---
diff --git a/src/librygel-renderer-gst/rygel-playbin-player.vala 
b/src/librygel-renderer-gst/rygel-playbin-player.vala
index f33158e..cbe5427 100644
--- a/src/librygel-renderer-gst/rygel-playbin-player.vala
+++ b/src/librygel-renderer-gst/rygel-playbin-player.vala
@@ -56,11 +56,6 @@ public class Rygel.Playbin.Player : GLib.Object, Rygel.MediaPlayer {
                                         "audio/x-wav",
                                         "audio/x-ac3",
                                         "audio/x-m4a",
-                                        "audio/L16;rate=44100;channels=2",
-                                        "audio/L16;rate=44100;channels=1",
-                                        "audio/L16;channels=2;rate=44100",
-                                        "audio/L16;channels=1;rate=44100",
-                                        "audio/L16;rate=44100",
                                         "audio/l16;rate=44100;channels=2",
                                         "audio/l16;rate=44100;channels=1",
                                         "audio/l16;channels=2;rate=44100",
diff --git a/src/librygel-renderer/rygel-av-transport.vala b/src/librygel-renderer/rygel-av-transport.vala
index 0c843de..4305469 100644
--- a/src/librygel-renderer/rygel-av-transport.vala
+++ b/src/librygel-renderer/rygel-av-transport.vala
@@ -275,9 +275,8 @@ internal class Rygel.AVTransport : Service {
                     var features = msg.response_headers.get_one
                                         ("contentFeatures.dlna.org");
 
-                    if (mime != null &&
-                        !(mime in this.player.get_mime_types () ||
-                          this.is_playlist (mime, features))) {
+                    if (!this.is_valid_mime_type (mime) &&
+                        !this.is_playlist (mime, features)) {
                         action.return_error (714, _("Illegal MIME-type"));
 
                         return;
@@ -324,6 +323,16 @@ internal class Rygel.AVTransport : Service {
         }
     }
 
+    private bool is_valid_mime_type (string? mime) {
+        if (mime == null) {
+            return false;
+        }
+
+        var normalized = mime.down ().replace (" ", "");
+
+        return normalized in this.player.get_mime_types ();
+    }
+
     private void get_media_info_cb (Service       service,
                                     ServiceAction action) {
         if (!this.check_instance_id (action)) {
diff --git a/src/librygel-renderer/rygel-media-player.vala b/src/librygel-renderer/rygel-media-player.vala
index 68d54a2..feb2e73 100644
--- a/src/librygel-renderer/rygel-media-player.vala
+++ b/src/librygel-renderer/rygel-media-player.vala
@@ -101,5 +101,6 @@ public interface Rygel.MediaPlayer : GLib.Object {
     public abstract string[] get_protocols ();
 
     /// Return the MIME types supported by this renderer.
+    /// The mime types in this list should be all lowercase.
     public abstract string[] get_mime_types ();
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]