diff options
author | Jens Georg <mail@jensge.org> | 2015-05-24 12:56:46 +0200 |
---|---|---|
committer | Jens Georg <mail@jensge.org> | 2015-05-24 13:05:41 +0200 |
commit | 470accfdb508da2a0d442935e8b149661226c2aa (patch) | |
tree | 736ca7311e5e70ed33dc42df275dee9344c7c046 /src | |
parent | c163d9299976199c8a87700e8521f2c99b9c13d7 (diff) | |
download | rygel-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.vala | 3 | ||||
-rw-r--r-- | src/media-engines/gstreamer/rygel-gst-transcoder.vala | 13 |
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); + } + } |