internal class Rygel.GstMediaEngine : Rygel.MediaEngine {
private GLib.List<DLNAProfile> dlna_profiles = null;
+ private GLib.List<Transcoder> transcoders = null;
public GstMediaEngine () {
var discoverer = new GUPnP.DLNADiscoverer ((ClockTime) SECOND,
}
this.dlna_profiles.reverse ();
+
+ var transcoding = true;
+ var lpcm_transcoder = true;
+ var mp3_transcoder = true;
+ var mp2ts_transcoder = true;
+ var wmv_transcoder = true;
+ var aac_transcoder = true;
+ var avc_transcoder = true;
+
+ var config = MetaConfig.get_default ();
+ try {
+ transcoding = config.get_transcoding ();
+
+ if (transcoding) {
+ lpcm_transcoder = config.get_lpcm_transcoder ();
+ mp3_transcoder = config.get_mp3_transcoder ();
+ mp2ts_transcoder = config.get_mp2ts_transcoder ();
+ wmv_transcoder = config.get_wmv_transcoder ();
+ aac_transcoder = config.get_aac_transcoder ();
+ avc_transcoder = config.get_avc_transcoder ();
+ }
+ } catch (Error err) {}
+
+ if (transcoding) {
+ if (lpcm_transcoder) {
+ this.transcoders.prepend (new L16Transcoder ());
+ }
+
+ if (mp3_transcoder) {
+ this.transcoders.prepend (new MP3Transcoder ());
+ }
+
+ if (mp2ts_transcoder) {
+ this.transcoders.prepend (new MP2TSTranscoder(MP2TSProfile.SD));
+ this.transcoders.prepend (new MP2TSTranscoder(MP2TSProfile.HD));
+ }
+
+ if (wmv_transcoder) {
+ this.transcoders.prepend (new WMVTranscoder ());
+ }
+
+ if (aac_transcoder) {
+ this.transcoders.prepend (new AACTranscoder ());
+ }
+
+ if (avc_transcoder) {
+ this.transcoders.prepend (new AVCTranscoder ());
+ }
+
+ this.transcoders.reverse ();
+ }
}
public override unowned GLib.List<DLNAProfile> get_dlna_profiles () {
return this.dlna_profiles;
}
+
+ public override unowned GLib.List<Transcoder>? get_transcoders () {
+ return this.transcoders;
+ }
}
using GUPnP;
using Gee;
-using Gst;
/**
* Responsible for management of all transcoders:
* # Provide all possible transcoding resources for items.
*/
public abstract class Rygel.TranscodeManager : GLib.Object {
- private ArrayList<Transcoder> transcoders;
private static bool protocol_equal_func (void *a, void *b) {
var protocol_a = a as ProtocolInfo;
protocol_a.mime_type == protocol_b.mime_type;
}
- public TranscodeManager () {
- transcoders = new ArrayList<Transcoder> ();
-
- var config = MetaConfig.get_default ();
-
- var transcoding = true;
- var lpcm_transcoder = true;
- var mp3_transcoder = true;
- var mp2ts_transcoder = true;
- var wmv_transcoder = true;
- var aac_transcoder = true;
- var avc_transcoder = true;
-
- try {
- transcoding = config.get_transcoding ();
-
- if (transcoding) {
- lpcm_transcoder = config.get_lpcm_transcoder ();
- mp3_transcoder = config.get_mp3_transcoder ();
- mp2ts_transcoder = config.get_mp2ts_transcoder ();
- wmv_transcoder = config.get_wmv_transcoder ();
- aac_transcoder = config.get_aac_transcoder ();
- avc_transcoder = config.get_avc_transcoder ();
- }
- } catch (Error err) {}
-
- if (transcoding) {
- if (lpcm_transcoder) {
- transcoders.add (new L16Transcoder ());
- }
-
- if (mp3_transcoder) {
- transcoders.add (new MP3Transcoder ());
- }
-
- if (mp2ts_transcoder) {
- transcoders.add (new MP2TSTranscoder(MP2TSProfile.SD));
- transcoders.add (new MP2TSTranscoder(MP2TSProfile.HD));
- }
-
- if (wmv_transcoder) {
- transcoders.add (new WMVTranscoder ());
- }
-
- if (aac_transcoder) {
- transcoders.add (new AACTranscoder ());
- }
-
- if (avc_transcoder) {
- transcoders.add (new AVCTranscoder ());
- }
- }
- }
+ public TranscodeManager () { }
public abstract string create_uri_for_item (MediaItem item,
int thumbnail_index,
public void add_resources (DIDLLiteItem didl_item, MediaItem item)
throws Error {
+ var engine = MediaEngine.get_default ();
var list = new GLib.List<Transcoder> ();
+ unowned GLib.List<Transcoder> transcoders = engine.get_transcoders ();
- foreach (var transcoder in this.transcoders) {
+ foreach (var transcoder in transcoders) {
if (transcoder.get_distance (item) != uint.MAX) {
list.append (transcoder);
}
public Transcoder get_transcoder (string target) throws Error {
Transcoder transcoder = null;
- foreach (var iter in this.transcoders) {
+ foreach (var iter in MediaEngine.get_default ().get_transcoders ()) {
if (iter.can_handle (target)) {
transcoder = iter;
}
internal abstract string get_protocol ();
internal virtual ArrayList<ProtocolInfo> get_protocol_info () {
+ var engine = MediaEngine.get_default ();
var protocol_infos = new ArrayList<ProtocolInfo> (protocol_equal_func);
+ unowned GLib.List<Transcoder> transcoders = engine.get_transcoders ();
- foreach (var transcoder in this.transcoders) {
+ foreach (var transcoder in transcoders) {
var protocol_info = new ProtocolInfo ();
protocol_info.protocol = this.get_protocol ();