Example #1
0
        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);
        }
Example #2
0
 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 ();
       }
 }
Example #3
0
		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);
			}
		}
Example #4
0
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 ();
  }
}
Example #5
0
public void Set (string field, object value) {
  Gst.GLib.Value v = new Gst.GLib.Value (value);
  SetValue (field, v);
  v.Dispose ();
}
Example #6
0
File: Bin.cs Project: jwzl/ossbuild
		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 ();
		}
Example #7
0
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);
}
Example #8
0
		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;
		}