rygel r759 - trunk/src/rygel
- From: zeeshanak svn gnome org
- To: svn-commits-list gnome org
- Subject: rygel r759 - trunk/src/rygel
- Date: Sat, 28 Mar 2009 00:45:38 +0000 (UTC)
Author: zeeshanak
Date: Sat Mar 28 00:45:37 2009
New Revision: 759
URL: http://svn.gnome.org/viewvc/rygel?rev=759&view=rev
Log:
create_transcoder is now part of relevant Transcoder.
Move static create_transcoder method from TranscoderBin implementation
to relevant Transcoder classes as non-static method.
Modified:
trunk/src/rygel/rygel-l16-transcoder-bin.vala
trunk/src/rygel/rygel-l16-transcoder.vala
trunk/src/rygel/rygel-mp2ts-transcoder-bin.vala
trunk/src/rygel/rygel-mp2ts-transcoder.vala
trunk/src/rygel/rygel-mp3-transcoder-bin.vala
trunk/src/rygel/rygel-mp3-transcoder.vala
Modified: trunk/src/rygel/rygel-l16-transcoder-bin.vala
==============================================================================
--- trunk/src/rygel/rygel-l16-transcoder-bin.vala (original)
+++ trunk/src/rygel/rygel-l16-transcoder-bin.vala Sat Mar 28 00:45:37 2009
@@ -25,33 +25,18 @@
internal class Rygel.L16TranscoderBin : Rygel.TranscoderBin {
private const string DECODEBIN = "decodebin2";
- private const string AUDIO_CONVERT = "audioconvert";
- private const string AUDIO_RESAMPLE = "audioresample";
- private const string CAPS_FILTER = "capsfilter";
private const string AUDIO_SRC_PAD = "audio-src-pad";
private const string AUDIO_SINK_PAD = "audio-sink-pad";
private dynamic Element audio_enc;
- public L16TranscoderBin (Element src,
- int channels,
- int frequency,
- int width,
- int depth,
- int endianness,
- bool signed_)
- throws Error {
+ public L16TranscoderBin (Element src,
+ L16Transcoder transcoder) throws Error {
Element decodebin = TranscoderBin.create_element (DECODEBIN, DECODEBIN);
- this.audio_enc = L16TranscoderBin.create_encoder (AUDIO_SRC_PAD,
- AUDIO_SINK_PAD,
- channels,
- frequency,
- width,
- depth,
- endianness,
- signed_);
+ this.audio_enc = transcoder.create_encoder (AUDIO_SRC_PAD,
+ AUDIO_SINK_PAD);
this.add_many (src, decodebin, this.audio_enc);
src.link (decodebin);
@@ -77,48 +62,4 @@
return;
}
}
-
- public static Element create_encoder (string? src_pad_name,
- string? sink_pad_name,
- int channels,
- int frequency,
- int width,
- int depth,
- int endianness,
- bool signed_)
- throws Error {
- dynamic Element convert1 = TranscoderBin.create_element (AUDIO_CONVERT,
- null);
- dynamic Element resample = TranscoderBin.create_element (
- AUDIO_RESAMPLE,
- AUDIO_RESAMPLE);
- dynamic Element convert2 = TranscoderBin.create_element (AUDIO_CONVERT,
- null);
- dynamic Element capsfilter = TranscoderBin.create_element (CAPS_FILTER,
- CAPS_FILTER);
-
- var bin = new Bin ("audio-encoder-bin");
- bin.add_many (convert1, resample, convert2, capsfilter);
-
- capsfilter.caps = new Caps.simple (
- "audio/x-raw-int",
- "channels", typeof (int), channels,
- "rate", typeof (int), frequency,
- "width", typeof (int), width,
- "depth", typeof (int), depth,
- "endianness", typeof (int), endianness,
- "signed", typeof (bool), signed_);
-
- convert1.link_many (resample, convert2, capsfilter);
-
- var pad = convert1.get_static_pad ("sink");
- var ghost = new GhostPad (sink_pad_name, pad);
- bin.add_pad (ghost);
-
- pad = capsfilter.get_static_pad ("src");
- ghost = new GhostPad (src_pad_name, pad);
- bin.add_pad (ghost);
-
- return bin;
- }
}
Modified: trunk/src/rygel/rygel-l16-transcoder.vala
==============================================================================
--- trunk/src/rygel/rygel-l16-transcoder.vala (original)
+++ trunk/src/rygel/rygel-l16-transcoder.vala Sat Mar 28 00:45:37 2009
@@ -32,6 +32,10 @@
private const int ENDIANNESS = ByteOrder.BIG_ENDIAN; // Network byte order
private const bool SIGNED = true; // Network byte order
+ private const string AUDIO_CONVERT = "audioconvert";
+ private const string AUDIO_RESAMPLE = "audioresample";
+ private const string CAPS_FILTER = "capsfilter";
+
public L16Transcoder () {
var mime_type = "audio/L" + L16Transcoder.WIDTH.to_string () +
";rate=" + L16Transcoder.FREQUENCY.to_string () +
@@ -41,13 +45,7 @@
}
public override Element create_source (Element src) throws Error {
- return new L16TranscoderBin (src,
- L16Transcoder.CHANNELS,
- L16Transcoder.FREQUENCY,
- L16Transcoder.WIDTH,
- L16Transcoder.DEPTH,
- L16Transcoder.ENDIANNESS,
- L16Transcoder.SIGNED);
+ return new L16TranscoderBin (src, this);
}
public override DIDLLiteResource create_resource (
@@ -62,4 +60,42 @@
return res;
}
+
+ public Element create_encoder (string? src_pad_name,
+ string? sink_pad_name)
+ throws Error {
+ dynamic Element convert1 = TranscoderBin.create_element (AUDIO_CONVERT,
+ null);
+ dynamic Element resample = TranscoderBin.create_element (
+ AUDIO_RESAMPLE,
+ AUDIO_RESAMPLE);
+ dynamic Element convert2 = TranscoderBin.create_element (AUDIO_CONVERT,
+ null);
+ dynamic Element capsfilter = TranscoderBin.create_element (CAPS_FILTER,
+ CAPS_FILTER);
+
+ var bin = new Bin ("audio-encoder-bin");
+ bin.add_many (convert1, resample, convert2, capsfilter);
+
+ capsfilter.caps = new Caps.simple (
+ "audio/x-raw-int",
+ "channels", typeof (int), CHANNELS,
+ "rate", typeof (int), FREQUENCY,
+ "width", typeof (int), WIDTH,
+ "depth", typeof (int), DEPTH,
+ "endianness", typeof (int), ENDIANNESS,
+ "signed", typeof (bool), SIGNED);
+
+ convert1.link_many (resample, convert2, capsfilter);
+
+ var pad = convert1.get_static_pad ("sink");
+ var ghost = new GhostPad (sink_pad_name, pad);
+ bin.add_pad (ghost);
+
+ pad = capsfilter.get_static_pad ("src");
+ ghost = new GhostPad (src_pad_name, pad);
+ bin.add_pad (ghost);
+
+ return bin;
+ }
}
Modified: trunk/src/rygel/rygel-mp2ts-transcoder-bin.vala
==============================================================================
--- trunk/src/rygel/rygel-mp2ts-transcoder-bin.vala (original)
+++ trunk/src/rygel/rygel-mp2ts-transcoder-bin.vala Sat Mar 28 00:45:37 2009
@@ -25,10 +25,6 @@
internal class Rygel.MP2TSTranscoderBin : Rygel.TranscoderBin {
private const string DECODEBIN = "decodebin2";
- private const string VIDEO_ENCODER = "mpeg2enc";
- private const string COLORSPACE_CONVERT = "ffmpegcolorspace";
- private const string VIDEO_RATE = "videorate";
- private const string VIDEO_SCALE = "videoscale";
private const string MUXER = "mpegtsmux";
private const string AUDIO_ENC_SINK = "audio-enc-sink-pad";
@@ -38,18 +34,14 @@
private dynamic Element video_enc;
private dynamic Element muxer;
- public MP2TSTranscoderBin (Element src,
- int width,
- int height)
+ public MP2TSTranscoderBin (Element src,
+ MP2TSTranscoder transcoder)
throws Error {
Element decodebin = TranscoderBin.create_element (DECODEBIN, DECODEBIN);
- this.audio_enc = MP3TranscoderBin.create_encoder (MP3Layer.TWO,
- null,
- AUDIO_ENC_SINK);
- this.video_enc = MP2TSTranscoderBin.create_encoder (null,
- VIDEO_ENC_SINK,
- width,
- height);
+ var mp3_transcoder = new MP3Transcoder (MP3Layer.TWO);
+ this.audio_enc = mp3_transcoder.create_encoder (null,
+ AUDIO_ENC_SINK);
+ this.video_enc = transcoder.create_encoder (null, VIDEO_ENC_SINK);
this.muxer = TranscoderBin.create_element (MUXER, MUXER);
this.add_many (src,
@@ -94,38 +86,4 @@
return;
}
}
-
- internal static Element create_encoder (string? src_pad_name,
- string? sink_pad_name,
- int width,
- int height)
- throws Error {
- var videorate = TranscoderBin.create_element (VIDEO_RATE, VIDEO_RATE);
- var videoscale = TranscoderBin.create_element (VIDEO_SCALE,
- VIDEO_SCALE);
- var convert = TranscoderBin.create_element (COLORSPACE_CONVERT,
- COLORSPACE_CONVERT);
- var encoder = TranscoderBin.create_element (VIDEO_ENCODER,
- VIDEO_ENCODER);
-
- var bin = new Bin ("video-encoder-bin");
- bin.add_many (videorate, videoscale, convert, encoder);
-
- var caps = new Caps.simple ("video/x-raw-yuv",
- "width", typeof (int), width,
- "height", typeof (int), height);
- videorate.link (convert);
- convert.link (videoscale);
- videoscale.link_filtered (encoder, caps);
-
- var pad = videorate.get_static_pad ("sink");
- var ghost = new GhostPad (sink_pad_name, pad);
- bin.add_pad (ghost);
-
- pad = encoder.get_static_pad ("src");
- ghost = new GhostPad (src_pad_name, pad);
- bin.add_pad (ghost);
-
- return bin;
- }
}
Modified: trunk/src/rygel/rygel-mp2ts-transcoder.vala
==============================================================================
--- trunk/src/rygel/rygel-mp2ts-transcoder.vala (original)
+++ trunk/src/rygel/rygel-mp2ts-transcoder.vala Sat Mar 28 00:45:37 2009
@@ -35,6 +35,11 @@
private const int[] HEIGHT = {480, 1080};
private const string[] PROFILES = {"MPEG_TS_SD_NA", "MPEG_TS_HD_NA"};
+ private const string VIDEO_ENCODER = "mpeg2enc";
+ private const string COLORSPACE_CONVERT = "ffmpegcolorspace";
+ private const string VIDEO_RATE = "videorate";
+ private const string VIDEO_SCALE = "videoscale";
+
private MP2TSProfile profile;
public MP2TSTranscoder (MP2TSProfile profile) {
@@ -44,9 +49,7 @@
}
public override Element create_source (Element src) throws Error {
- return new MP2TSTranscoderBin (src,
- MP2TSTranscoder.WIDTH[this.profile],
- MP2TSTranscoder.HEIGHT[this.profile]);
+ return new MP2TSTranscoderBin (src, this);
}
public override DIDLLiteResource create_resource (MediaItem item,
@@ -59,4 +62,37 @@
return res;
}
+
+ public Element create_encoder (string? src_pad_name,
+ string? sink_pad_name)
+ throws Error {
+ var videorate = TranscoderBin.create_element (VIDEO_RATE, VIDEO_RATE);
+ var videoscale = TranscoderBin.create_element (VIDEO_SCALE,
+ VIDEO_SCALE);
+ var convert = TranscoderBin.create_element (COLORSPACE_CONVERT,
+ COLORSPACE_CONVERT);
+ var encoder = TranscoderBin.create_element (VIDEO_ENCODER,
+ VIDEO_ENCODER);
+
+ var bin = new Bin ("video-encoder-bin");
+ bin.add_many (videorate, videoscale, convert, encoder);
+
+ var caps = new Caps.simple (
+ "video/x-raw-yuv",
+ "width", typeof (int), WIDTH[this.profile],
+ "height", typeof (int), HEIGHT[this.profile]);
+ videorate.link (convert);
+ convert.link (videoscale);
+ videoscale.link_filtered (encoder, caps);
+
+ var pad = videorate.get_static_pad ("sink");
+ var ghost = new GhostPad (sink_pad_name, pad);
+ bin.add_pad (ghost);
+
+ pad = encoder.get_static_pad ("src");
+ ghost = new GhostPad (src_pad_name, pad);
+ bin.add_pad (ghost);
+
+ return bin;
+ }
}
Modified: trunk/src/rygel/rygel-mp3-transcoder-bin.vala
==============================================================================
--- trunk/src/rygel/rygel-mp3-transcoder-bin.vala (original)
+++ trunk/src/rygel/rygel-mp3-transcoder-bin.vala Sat Mar 28 00:45:37 2009
@@ -30,22 +30,18 @@
internal class Rygel.MP3TranscoderBin : Rygel.TranscoderBin {
private const string DECODEBIN = "decodebin2";
- private const string AUDIO_CONVERT = "audioconvert";
- private const string[] AUDIO_ENCODER = {null, "twolame", "lame"};
- private const string AUDIO_PARSER = "mp3parse";
- private const string AUDIO_RESAMPLE = "audioresample";
private const string AUDIO_SRC_PAD = "audio-src-pad";
private const string AUDIO_SINK_PAD = "audio-sink-pad";
private dynamic Element audio_enc;
- public MP3TranscoderBin (Element src, MP3Layer layer) throws Error {
+ public MP3TranscoderBin (Element src,
+ MP3Transcoder transcoder) throws Error {
Element decodebin = TranscoderBin.create_element (DECODEBIN, DECODEBIN);
- this.audio_enc = MP3TranscoderBin.create_encoder (layer,
- AUDIO_SRC_PAD,
- AUDIO_SINK_PAD);
+ this.audio_enc = transcoder.create_encoder (AUDIO_SRC_PAD,
+ AUDIO_SINK_PAD);
this.add_many (src, decodebin, this.audio_enc);
src.link (decodebin);
@@ -57,46 +53,6 @@
decodebin.pad_added += this.decodebin_pad_added;
}
- public static Element create_encoder (MP3Layer layer,
- string? src_pad_name,
- string? sink_pad_name)
- throws Error {
- dynamic Element convert = TranscoderBin.create_element (AUDIO_CONVERT,
- AUDIO_CONVERT);
- dynamic Element resample = TranscoderBin.create_element (
- AUDIO_RESAMPLE,
- AUDIO_RESAMPLE);
- dynamic Element encoder = TranscoderBin.create_element (
- AUDIO_ENCODER[layer],
- AUDIO_ENCODER[layer]);
- dynamic Element parser = TranscoderBin.create_element (AUDIO_PARSER,
- AUDIO_PARSER);
-
- if (layer == MP3Layer.THREE) {
- // Best quality
- encoder.quality = 0;
- }
-
- encoder.bitrate = 256;
-
- var bin = new Bin ("audio-encoder-bin");
- bin.add_many (convert, resample, encoder, parser);
-
- var filter = Caps.from_string ("audio/x-raw-int");
- convert.link_filtered (encoder, filter);
- encoder.link (parser);
-
- var pad = convert.get_static_pad ("sink");
- var ghost = new GhostPad (sink_pad_name, pad);
- bin.add_pad (ghost);
-
- pad = parser.get_static_pad ("src");
- ghost = new GhostPad (src_pad_name, pad);
- bin.add_pad (ghost);
-
- return bin;
- }
-
private void decodebin_pad_added (Element decodebin, Pad new_pad) {
Pad enc_pad = this.audio_enc.get_pad (AUDIO_SINK_PAD);
if (!new_pad.can_link (enc_pad)) {
Modified: trunk/src/rygel/rygel-mp3-transcoder.vala
==============================================================================
--- trunk/src/rygel/rygel-mp3-transcoder.vala (original)
+++ trunk/src/rygel/rygel-mp3-transcoder.vala Sat Mar 28 00:45:37 2009
@@ -24,6 +24,11 @@
using Gst;
internal class Rygel.MP3Transcoder : Rygel.Transcoder {
+ private const string AUDIO_CONVERT = "audioconvert";
+ private const string[] AUDIO_ENCODER = {null, "twolame", "lame"};
+ private const string AUDIO_PARSER = "mp3parse";
+ private const string AUDIO_RESAMPLE = "audioresample";
+
private MP3Layer layer;
public MP3Transcoder (MP3Layer layer) {
@@ -33,6 +38,45 @@
}
public override Element create_source (Element src) throws Error {
- return new MP3TranscoderBin (src, this.layer);
+ return new MP3TranscoderBin (src, this);
+ }
+
+ public Element create_encoder (string? src_pad_name,
+ string? sink_pad_name)
+ throws Error {
+ dynamic Element convert = TranscoderBin.create_element (AUDIO_CONVERT,
+ AUDIO_CONVERT);
+ dynamic Element resample = TranscoderBin.create_element (
+ AUDIO_RESAMPLE,
+ AUDIO_RESAMPLE);
+ dynamic Element encoder = TranscoderBin.create_element (
+ AUDIO_ENCODER[this.layer],
+ AUDIO_ENCODER[this.layer]);
+ dynamic Element parser = TranscoderBin.create_element (AUDIO_PARSER,
+ AUDIO_PARSER);
+
+ if (this.layer == MP3Layer.THREE) {
+ // Best quality
+ encoder.quality = 0;
+ }
+
+ encoder.bitrate = 256;
+
+ var bin = new Bin ("audio-encoder-bin");
+ bin.add_many (convert, resample, encoder, parser);
+
+ var filter = Caps.from_string ("audio/x-raw-int");
+ convert.link_filtered (encoder, filter);
+ encoder.link (parser);
+
+ var pad = convert.get_static_pad ("sink");
+ var ghost = new GhostPad (sink_pad_name, pad);
+ bin.add_pad (ghost);
+
+ pad = parser.get_static_pad ("src");
+ ghost = new GhostPad (src_pad_name, pad);
+ bin.add_pad (ghost);
+
+ return bin;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]