summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJens Georg <mail@jensge.org>2015-05-24 12:56:46 +0200
committerJens Georg <mail@jensge.org>2015-05-24 13:05:41 +0200
commit470accfdb508da2a0d442935e8b149661226c2aa (patch)
tree736ca7311e5e70ed33dc42df275dee9344c7c046 /src
parentc163d9299976199c8a87700e8521f2c99b9c13d7 (diff)
downloadrygel-470accfdb508da2a0d442935e8b149661226c2aa.tar.gz
engine-gst: Omit transcoder if transcoding for same format
Signed-off-by: Jens Georg <mail@jensge.org>
Diffstat (limited to 'src')
-rw-r--r--src/media-engines/gstreamer/rygel-gst-media-engine.vala3
-rw-r--r--src/media-engines/gstreamer/rygel-gst-transcoder.vala13
2 files changed, 15 insertions, 1 deletions
diff --git a/src/media-engines/gstreamer/rygel-gst-media-engine.vala b/src/media-engines/gstreamer/rygel-gst-media-engine.vala
index 3938498d..3dbc6cdc 100644
--- a/src/media-engines/gstreamer/rygel-gst-media-engine.vala
+++ b/src/media-engines/gstreamer/rygel-gst-media-engine.vala
@@ -162,7 +162,8 @@ public class Rygel.GstMediaEngine : Rygel.MediaEngine {
var list = new GLib.List<GstTranscoder> ();
foreach (var transcoder in transcoders) {
- if (transcoder.get_distance (item) != uint.MAX) {
+ if (transcoder.get_distance (item) != uint.MAX &&
+ transcoder.transcoding_necessary (item)) {
list.append (transcoder);
}
}
diff --git a/src/media-engines/gstreamer/rygel-gst-transcoder.vala b/src/media-engines/gstreamer/rygel-gst-transcoder.vala
index 0ae81998..e94bde26 100644
--- a/src/media-engines/gstreamer/rygel-gst-transcoder.vala
+++ b/src/media-engines/gstreamer/rygel-gst-transcoder.vala
@@ -231,4 +231,17 @@ internal abstract class Rygel.GstTranscoder : GLib.Object {
bus.post (message);
}
}
+
+ public bool transcoding_necessary (MediaFileItem item) {
+ return !(this.mime_type_is_a (this.mime_type, item.mime_type) &&
+ this.dlna_profile == item.dlna_profile);
+ }
+
+ protected bool mime_type_is_a (string mime_type1, string mime_type2) {
+ string content_type1 = ContentType.get_mime_type (mime_type1);
+ string content_type2 = ContentType.get_mime_type (mime_type2);
+
+ return ContentType.is_a (content_type1, content_type2);
+ }
+
}