private string ProbeMimeType() { Iterator elem_iter = ((Bin)encoder).ElementsRecurse; string preferred_mimetype = null; IEnumerator en = elem_iter.GetEnumerator(); while (en.MoveNext()) { Element element = (Element)en.Current; Iterator pad_iter = element.SrcPads; IEnumerator enu = pad_iter.GetEnumerator(); while (enu.MoveNext()) { Pad pad = (Pad)enu.Current; Caps caps = pad.Caps; Structure str = (caps != null ? caps [0] : null); if (str != null) { string mimetype = str.Name; int mpeg_layer; Gst.GLib.Value val = str.GetValue("mpegversion"); // Prefer and adjust audio/mpeg, leaving MP3 as audio/mpeg if (mimetype.StartsWith("audio/mpeg")) { mpeg_layer = (Int32)val.Val; switch (mpeg_layer) { case 2: mimetype = "audio/mp2"; break; case 4: mimetype = "audio/mp4"; break; default: break; } preferred_mimetype = mimetype; // If no preferred type set and it's not RAW, prefer it } else if (preferred_mimetype == null && !mimetype.StartsWith("audio/x-raw")) { preferred_mimetype = mimetype; // Always prefer application containers } else if (mimetype.StartsWith("application/")) { preferred_mimetype = mimetype; } } } } return(preferred_mimetype); }
public object this[string property] { get { Gst.GLib.Value v = GetProperty (property); object o = v.Val; v.Dispose (); return o; } set { Gst.GLib.Value v = new Gst.GLib.Value (this, property); v.Val = value; SetProperty (property, v); v.Dispose (); } }
static void MarshalCallback (IntPtr raw_closure, IntPtr return_val, uint n_param_vals, IntPtr param_values, IntPtr invocation_hint, IntPtr marshal_data) { string message = String.Empty; try { SignalClosure closure = closures [raw_closure] as SignalClosure; message = "Marshaling " + closure.name + " signal"; Value objval = (Value) Marshal.PtrToStructure (param_values, typeof (Value)); Gst.GLib.Object __obj = objval.Val as Gst.GLib.Object; if (__obj == null) return; if (closure.args_type == typeof (EventArgs)) { closure.Invoke (new ClosureInvokedArgs (__obj, EventArgs.Empty)); return; } SignalArgs args = Activator.CreateInstance (closure.args_type, new object [0]) as SignalArgs; args.Args = new object [n_param_vals - 1]; Gst.GLib.Value[] vals = new Gst.GLib.Value [n_param_vals - 1]; for (int i = 1; i < n_param_vals; i++) { IntPtr ptr = new IntPtr (param_values.ToInt64 () + i * Marshal.SizeOf (typeof (Value))); vals [i - 1] = (Value) Marshal.PtrToStructure (ptr, typeof (Value)); args.Args [i - 1] = vals [i - 1].Val; } ClosureInvokedArgs ci_args = new ClosureInvokedArgs (__obj, args); closure.Invoke (ci_args); for (int i = 1; i < n_param_vals; i++) { vals [i - 1].Update (args.Args [i - 1]); IntPtr ptr = new IntPtr (param_values.ToInt64 () + i * Marshal.SizeOf (typeof (Value))); Marshal.StructureToPtr (vals [i - 1], ptr, false); } if (return_val == IntPtr.Zero || args.RetVal == null) return; Value ret = (Value) Marshal.PtrToStructure (return_val, typeof (Value)); ret.Val = args.RetVal; Marshal.StructureToPtr (ret, return_val, false); } catch (Exception e) { Console.WriteLine (message); ExceptionManager.RaiseUnhandledException (e, false); } }
public void Set (params object[] fields) { int i, length = fields.Length; if (length % 2 != 0) throw new ArgumentException (); for (i = 0; i < length; i += 2) { if (fields[i].GetType () != typeof (string)) throw new ArgumentException (); Gst.GLib.Value v = new Gst.GLib.Value (fields[i+1]); SetValue (fields[i] as string, v); v.Dispose (); } }
public void Set (string field, object value) { Gst.GLib.Value v = new Gst.GLib.Value (value); SetValue (field, v); v.Dispose (); }
private void InternalChildRemoved (Gst.Object child) { Gst.GLib.Value ret = Gst.GLib.Value.Empty; Gst.GLib.ValueArray inst_and_params = new Gst.GLib.ValueArray (2); Gst.GLib.Value[] vals = new Gst.GLib.Value [2]; vals [0] = new Gst.GLib.Value (this); inst_and_params.Append (vals [0]); vals [1] = new Gst.GLib.Value (child); inst_and_params.Append (vals [1]); g_signal_chain_from_overridden (inst_and_params.ArrayPtr, ref ret); foreach (Gst.GLib.Value v in vals) v.Dispose (); }
public void Add (Gst.TagMergeMode mode, string tag, object value) { if (!Tag.Exists (tag)) throw new ArgumentException (String.Format ("Invalid tag name '{0}'", tag)); Gst.GLib.Value v = new Gst.GLib.Value (value); IntPtr raw_v = Gst.GLib.Marshaller.StructureToPtrAlloc (v); IntPtr raw_string = Gst.GLib.Marshaller.StringToPtrGStrdup (tag); gst_tag_list_add_value (Handle, (int) mode, raw_string, raw_v); Marshal.FreeHGlobal (raw_v); v.Dispose (); Gst.GLib.Marshaller.Free (raw_string); }
public static object Emit (Gst.GLib.Object instance, string detailed_signal, params object[] args) { uint gquark, signal_id; string signal_name; ParseSignalDetail (detailed_signal, out signal_name, out gquark); signal_id = GetSignalId (signal_name, instance); if (signal_id <= 0) throw new ArgumentException ("Invalid signal name: " + signal_name); Gst.GLib.Value[] vals = new Gst.GLib.Value [args.Length + 1]; Gst.GLib.ValueArray inst_and_params = new Gst.GLib.ValueArray ((uint) args.Length + 1); vals [0] = new Gst.GLib.Value (instance); inst_and_params.Append (vals [0]); for (int i = 1; i < vals.Length; i++) { vals [i] = new Gst.GLib.Value (args [i - 1]); inst_and_params.Append (vals [i]); } object ret_obj = null; Query query; g_signal_query (signal_id, out query); if (query.return_type != GType.None.Val) { Gst.GLib.Value ret = Gst.GLib.Value.Empty; g_signal_emitv (inst_and_params.ArrayPtr, signal_id, gquark, ref ret); ret_obj = ret.Val; ret.Dispose (); } else g_signal_emitv (inst_and_params.ArrayPtr, signal_id, gquark, IntPtr.Zero); foreach (Gst.GLib.Value val in vals) val.Dispose (); return ret_obj; }