core: Better distance calculation for transcoders
authorZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Tue, 25 Aug 2009 15:13:43 +0000 (18:13 +0300)
committerZeeshan Ali (Khattak) <zeeshanak@gnome.org>
Tue, 25 Aug 2009 15:13:43 +0000 (18:13 +0300)
src/rygel/rygel-l16-transcoder.vala
src/rygel/rygel-mp2ts-transcoder.vala
src/rygel/rygel-mp3-transcoder.vala

index f534fd8..49ba980 100644 (file)
@@ -87,9 +87,11 @@ internal class Rygel.L16Transcoder : Rygel.Transcoder {
             return uint.MAX;
         }
 
-        uint distance = uint.MIN;
+        uint distance;
+
+        if (item.upnp_class.has_prefix (MediaItem.AUDIO_CLASS)) {
+            distance = uint.MIN;
 
-        if (item.upnp_class.has_prefix (MediaItem.MUSIC_CLASS)) {
             if (item.sample_freq > 0) {
                 distance += (item.sample_freq - FREQUENCY).abs ();
             }
@@ -101,6 +103,8 @@ internal class Rygel.L16Transcoder : Rygel.Transcoder {
             if (item.bits_per_sample > 0) {
                 distance += (item.bits_per_sample - WIDTH).abs ();
             }
+        } else {
+            distance = uint.MAX / 2;
         }
 
         return distance;
index 769b966..c4afac6 100644 (file)
@@ -81,9 +81,11 @@ internal class Rygel.MP2TSTranscoder : Rygel.Transcoder {
             return uint.MAX;
         }
 
-        uint distance = uint.MIN;
+        uint distance;
 
         if (item.upnp_class.has_prefix (MediaItem.VIDEO_CLASS)) {
+            distance = uint.MIN;
+
             if (item.bitrate > 0) {
                 distance += (item.bitrate - BITRATE).abs ();
             }
@@ -95,6 +97,8 @@ internal class Rygel.MP2TSTranscoder : Rygel.Transcoder {
             if (item.height > 0) {
                 distance += (item.height - HEIGHT[this.profile]).abs ();
             }
+        } else {
+            distance = uint.MAX / 2;
         }
 
         return distance;
index da68384..398725b 100644 (file)
@@ -69,10 +69,16 @@ internal class Rygel.MP3Transcoder : Rygel.Transcoder {
             return uint.MAX;
         }
 
-        uint distance = uint.MIN;
+        uint distance;
 
-        if (item.bitrate > 0) {
-            distance += (item.bitrate - BITRATE).abs ();
+        if (item.upnp_class.has_prefix (MediaItem.AUDIO_CLASS)) {
+            distance = uint.MIN;
+
+            if (item.bitrate > 0) {
+                distance += (item.bitrate - BITRATE).abs ();
+            }
+        } else {
+            distance = uint.MAX / 2;
         }
 
         return distance;