/// <summary> /// Creates a new recoding pipeline with the best (by user preference) available encoder and attaches it /// to the audiotee /// </summary> /// <returns> /// A <see cref="System.Boolean"/>, true if the pipeline was successfully created, false otherwise. /// </returns> public bool Create() { string bin_description = BuildPipeline(); try { audiotee = new PlayerAudioTee(ServiceManager.PlayerEngine.ActiveEngine.GetBaseElements()[2]); if (bin_description.Equals("")) { return(false); } encoder_bin = Parse.BinFromDescription(bin_description, true); // Hyena.Log.Debug ("DEBUG bin to string: " + encoder_bin.ToString()); tagger = new TagSetter(encoder_bin.GetByInterface(TagSetter.GetType())); file_sink = encoder_bin.GetByName("file_sink").ToFileSink(); file_sink.Location = empty_file; file_sink.SetBooleanProperty("sync", true); file_sink.SetBooleanProperty("async", false); OldGLib.Object.GetObject(file_sink.ToIntPtr()).AddNotification("allow-overwrite", OnAllowOverwrite); ghost_pad = encoder_bin.GetStaticPad("sink").ToGhostPad(); outputselector = encoder_bin.GetByName("sel"); Pad filesinkpad = file_sink.GetStaticPad("sink"); selector_filepad = filesinkpad.GetPeer(); Element fake_sink = encoder_bin.GetByName("fake_sink"); Pad fakesinkpad = fake_sink.GetStaticPad("sink"); selector_fakepad = fakesinkpad.GetPeer(); audiotee.AddBin(encoder_bin, ServiceManager.PlayerEngine.CurrentState == PlayerState.Playing); Hyena.Log.Debug("[Recorder] Recorder attached"); } catch (Exception e) { Hyena.Log.InformationFormat("[Streamrecorder] An exception occurred during pipeline construction: {0}", bin_description); Hyena.Log.Debug(e.Message); Hyena.Log.Debug(e.StackTrace); return(false); } return(true); }
/// <summary> /// Creates a new recoding pipeline with the best (by user preference) available encoder and attaches it /// to the audiotee /// </summary> /// <returns> /// A <see cref="System.Boolean"/>, true if the pipeline was successfully created, false otherwise. /// </returns> public bool Create() { string bin_description = BuildPipeline (); try { audiotee = new PlayerAudioTee (ServiceManager.PlayerEngine.ActiveEngine.GetBaseElements ()[2]); if (bin_description.Equals ("")) { return false; } encoder_bin = Parse.BinFromDescription (bin_description, true); // Hyena.Log.Debug ("DEBUG bin to string: " + encoder_bin.ToString()); tagger = new TagSetter (encoder_bin.GetByInterface (TagSetter.GetType ())); file_sink = encoder_bin.GetByName ("file_sink").ToFileSink (); file_sink.Location = empty_file; file_sink.SetBooleanProperty ("sync", true); file_sink.SetBooleanProperty ("async", false); OldGLib.Object.GetObject (file_sink.ToIntPtr ()).AddNotification ("allow-overwrite", OnAllowOverwrite); ghost_pad = encoder_bin.GetStaticPad ("sink").ToGhostPad (); outputselector = encoder_bin.GetByName ("sel"); Pad filesinkpad = file_sink.GetStaticPad ("sink"); selector_filepad = filesinkpad.GetPeer (); Element fake_sink = encoder_bin.GetByName ("fake_sink"); Pad fakesinkpad = fake_sink.GetStaticPad ("sink"); selector_fakepad = fakesinkpad.GetPeer (); audiotee.AddBin (encoder_bin, ServiceManager.PlayerEngine.CurrentState == PlayerState.Playing); Hyena.Log.Debug ("[Recorder] Recorder attached"); } catch (Exception e) { Hyena.Log.InformationFormat ("[Streamrecorder] An exception occurred during pipeline construction: {0}", bin_description); Hyena.Log.Debug (e.Message); Hyena.Log.Debug (e.StackTrace); return false; } return true; }
/// <summary> /// Creates a new recoding pipeline with the best (by user preference) available encoder /// </summary> /// <returns> /// A <see cref="System.Boolean"/>, true if the pipeline was successfully created, false otherwise. /// </returns> public bool Create() { string bin_description = BuildPipeline (); try { audiotee = new PlayerAudioTee (ServiceManager.PlayerEngine.ActiveEngine.GetBaseElements ()[2]); if (bin_description.Equals ("")) { return false; } encoder_bin = Parse.BinFromDescription (bin_description, true); tagger = new TagSetter (encoder_bin.GetByInterface (TagSetter.GetType ())); file_sink = encoder_bin.GetByName ("file_sink").ToFileSink (); file_sink.Location = output_file + file_extension; file_sink.SetBooleanProperty ("sync", true); file_sink.SetBooleanProperty ("async", false); GLib.Object.GetObject (file_sink.ToIntPtr ()).AddNotification ("allow-overwrite", OnAllowOverwrite); ghost_pad = encoder_bin.GetStaticPad ("sink").ToGhostPad (); } catch (Exception e) { Hyena.Log.InformationFormat ("[Streamrecorder] An exception occurred during pipeline construction: {0}", bin_description); Hyena.Log.Debug (e.StackTrace); return false; } return true; }