summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJens Georg <jensg@openismus.org>2012-09-11 13:34:42 +0200
committerJens Georg <jensg@openismus.com>2012-10-05 17:33:28 +0200
commit852d553252018a324ecd26811e1e093b20da9c82 (patch)
tree39c3b39999ae92c6b46198878de1bbe08db9e5fd /src
parente40d79fc54f080b66e75e987dfb0ff0cbade97c5 (diff)
downloadrygel-852d553252018a324ecd26811e1e093b20da9c82.tar.gz
server: Re-enable transcoders
Diffstat (limited to 'src')
-rw-r--r--src/librygel-server/rygel-gst-data-source.vala2
-rw-r--r--src/librygel-server/rygel-gst-transcoder.vala15
-rw-r--r--src/librygel-server/rygel-http-transcode-handler.vala5
-rw-r--r--src/librygel-server/rygel-transcoder.vala5
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,