diff options
author | Jens Georg <jensg@openismus.org> | 2012-09-11 13:34:42 +0200 |
---|---|---|
committer | Jens Georg <jensg@openismus.com> | 2012-10-05 17:33:28 +0200 |
commit | 852d553252018a324ecd26811e1e093b20da9c82 (patch) | |
tree | 39c3b39999ae92c6b46198878de1bbe08db9e5fd /src | |
parent | e40d79fc54f080b66e75e987dfb0ff0cbade97c5 (diff) | |
download | rygel-852d553252018a324ecd26811e1e093b20da9c82.tar.gz |
server: Re-enable transcoders
Diffstat (limited to 'src')
-rw-r--r-- | src/librygel-server/rygel-gst-data-source.vala | 2 | ||||
-rw-r--r-- | src/librygel-server/rygel-gst-transcoder.vala | 15 | ||||
-rw-r--r-- | src/librygel-server/rygel-http-transcode-handler.vala | 5 | ||||
-rw-r--r-- | src/librygel-server/rygel-transcoder.vala | 5 |
4 files changed, 15 insertions, 12 deletions
diff --git a/src/librygel-server/rygel-gst-data-source.vala b/src/librygel-server/rygel-gst-data-source.vala index 79407efd..845c8c73 100644 --- a/src/librygel-server/rygel-gst-data-source.vala +++ b/src/librygel-server/rygel-gst-data-source.vala @@ -23,7 +23,7 @@ using Gst; public class Rygel.GstDataSource : Rygel.DataSource, GLib.Object { - private dynamic Element src; + internal dynamic Element src; private Pipeline pipeline; private HTTPSeek seek = null; private GstSink sink; diff --git a/src/librygel-server/rygel-gst-transcoder.vala b/src/librygel-server/rygel-gst-transcoder.vala index af6f6c61..73e68b56 100644 --- a/src/librygel-server/rygel-gst-transcoder.vala +++ b/src/librygel-server/rygel-gst-transcoder.vala @@ -62,8 +62,13 @@ internal abstract class Rygel.GstTranscoder : Rygel.Transcoder { * * @return the new transcoding source */ - public override Element create_source (MediaItem item, - Element src) throws Error { + public override DataSource create_source (MediaItem item, + DataSource src) throws Error { + // We can only link GStreamer data sources together + assert (src is GstDataSource); + + var orig_source = src as GstDataSource; + this.decoder = GstUtils.create_element (DECODE_BIN, DECODE_BIN); this.encoder = GstUtils.create_element (ENCODE_BIN, @@ -75,9 +80,9 @@ internal abstract class Rygel.GstTranscoder : Rygel.Transcoder { GstUtils.dump_encoding_profile (encoder.profile); var bin = new Bin ("transcoder-source"); - bin.add_many (src, decoder, encoder); + bin.add_many (orig_source.src, decoder, encoder); - src.link (decoder); + orig_source.src.link (decoder); decoder.pad_added.connect (this.on_decoder_pad_added); decoder.autoplug_continue.connect (this.on_autoplug_continue); @@ -87,7 +92,7 @@ internal abstract class Rygel.GstTranscoder : Rygel.Transcoder { var ghost = new GhostPad (null, pad); bin.add_pad (ghost); - return bin; + return new GstDataSource.from_element (bin); } /** diff --git a/src/librygel-server/rygel-http-transcode-handler.vala b/src/librygel-server/rygel-http-transcode-handler.vala index f4bbc533..665692b5 100644 --- a/src/librygel-server/rygel-http-transcode-handler.vala +++ b/src/librygel-server/rygel-http-transcode-handler.vala @@ -59,14 +59,13 @@ internal class Rygel.HTTPTranscodeHandler : HTTPGetHandler { throw new HTTPRequestError.NOT_FOUND (_("Not found")); } -/* try { + try { src = this.transcoder.create_source (item, src); return new HTTPResponse (request, this, src); } catch (GLib.Error err) { throw new HTTPRequestError.NOT_FOUND (err.message); - }*/ - throw new HTTPRequestError.NOT_FOUND ("Transcoding temporarily disabled"); + } } protected override DIDLLiteResource add_resource (DIDLLiteItem didl_item, diff --git a/src/librygel-server/rygel-transcoder.vala b/src/librygel-server/rygel-transcoder.vala index cc0e2fdf..6427694b 100644 --- a/src/librygel-server/rygel-transcoder.vala +++ b/src/librygel-server/rygel-transcoder.vala @@ -24,7 +24,6 @@ */ using GUPnP; -using Gst; /** * The base Transcoder class. Each implementation derives from it and must @@ -43,8 +42,8 @@ public abstract class Rygel.Transcoder : GLib.Object { * * @return the new transcoding source */ - public abstract Element create_source (MediaItem item, - Element src) throws Error; + public abstract DataSource create_source (MediaItem item, + DataSource src) throws Error; public virtual DIDLLiteResource? add_resource (DIDLLiteItem didl_item, MediaItem item, |