mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-22 08:17:01 +00:00
cf9fd6ec9a
Also fix indention everywhere and change code to use Gst.MiniObject.GetObject() instead of GLib.Opaque.GetOpaque(). It's currently not possible to implement or use GInterfaces on mini objects but apart from that this should be a great improvement, especially new mini object classes can be defined in C# now.
323 lines
10 KiB
Text
323 lines
10 KiB
Text
public Event (GLib.Value val) : base (val) { }
|
|
|
|
[DllImport ("gstreamersharpglue-0.10") ]
|
|
extern static uint gstsharp_gst_event_get_timestamp_offset ();
|
|
|
|
static uint timestamp_offset = gstsharp_gst_event_get_timestamp_offset ();
|
|
public ulong Timestamp {
|
|
get {
|
|
unsafe {
|
|
ulong* raw_ptr = (ulong*) ( ( (byte*) Handle) + timestamp_offset);
|
|
return (*raw_ptr);
|
|
}
|
|
}
|
|
set {
|
|
if (!IsWritable)
|
|
throw new ApplicationException ();
|
|
|
|
unsafe {
|
|
ulong* raw_ptr = (ulong*) ( ( (byte*) Handle) + timestamp_offset);
|
|
*raw_ptr = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
[DllImport ("gstreamersharpglue-0.10") ]
|
|
extern static uint gstsharp_gst_event_get_src_offset ();
|
|
|
|
[DllImport ("libgobject-2.0.dll") ]
|
|
extern static IntPtr g_object_ref (IntPtr handle);
|
|
|
|
[DllImport ("libgobject-2.0.dll") ]
|
|
extern static void g_object_unref (IntPtr handle);
|
|
|
|
static uint src_offset = gstsharp_gst_event_get_src_offset ();
|
|
public Gst.Object Src {
|
|
get {
|
|
unsafe {
|
|
IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + src_offset);
|
|
return GLib.Object.GetObject ( (*raw_ptr)) as Gst.Object;
|
|
}
|
|
}
|
|
set {
|
|
if (!IsWritable)
|
|
throw new ApplicationException ();
|
|
|
|
if (Src != null)
|
|
g_object_unref (Src.Handle);
|
|
|
|
unsafe {
|
|
IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + src_offset);
|
|
*raw_ptr = value == null ? IntPtr.Zero : g_object_ref (value.Handle);
|
|
}
|
|
}
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern uint gst_event_get_seqnum (IntPtr raw);
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_set_seqnum (IntPtr raw, uint seqnum);
|
|
|
|
public uint Seqnum {
|
|
get {
|
|
uint raw_ret = gst_event_get_seqnum (Handle);
|
|
uint ret = raw_ret;
|
|
return ret;
|
|
}
|
|
set {
|
|
if (!IsWritable)
|
|
throw new ApplicationException ();
|
|
|
|
gst_event_set_seqnum (Handle, value);
|
|
}
|
|
}
|
|
|
|
|
|
private Gst.Structure cached_structure = null;
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_get_structure (IntPtr raw);
|
|
|
|
public Gst.Structure Structure {
|
|
get {
|
|
if (cached_structure != null)
|
|
return cached_structure;
|
|
|
|
IntPtr raw_ret = gst_event_get_structure (Handle);
|
|
Gst.Structure ret = raw_ret == IntPtr.Zero ? null : (Gst.Structure) GLib.Opaque.GetOpaque (raw_ret, typeof (Gst.Structure), true);
|
|
ret.FreeNative = false;
|
|
cached_structure = ret;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
~Event () {
|
|
if (cached_structure != null)
|
|
cached_structure.CreateNativeCopy ();
|
|
cached_structure = null;
|
|
}
|
|
|
|
public string TypeName {
|
|
get {
|
|
return GetTypeName (Type);
|
|
}
|
|
}
|
|
|
|
public bool IsUpstream {
|
|
get {
|
|
return ( (uint) Type & (uint) EventTypeFlags.Upstream) != 0;
|
|
}
|
|
}
|
|
|
|
public bool IsDownstream {
|
|
get {
|
|
return ( (uint) Type & (uint) EventTypeFlags.Downstream) != 0;
|
|
}
|
|
}
|
|
|
|
public bool IsSerialized {
|
|
get {
|
|
return ( (uint) Type & (uint) EventTypeFlags.Serialized) != 0;
|
|
}
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern Gst.EventTypeFlags gst_event_type_get_flags (Gst.EventType type);
|
|
|
|
public static Gst.EventTypeFlags GetTypeFlags (Gst.EventType type) {
|
|
return gst_event_type_get_flags (type);
|
|
}
|
|
|
|
public static Gst.EventType MakeType (uint num, Gst.EventTypeFlags flags) {
|
|
return (Gst.EventType) ( (num << 4) | (uint) flags);
|
|
}
|
|
|
|
public static uint GetTypeNumber (Gst.EventType type) {
|
|
return ( (uint) type) >> 4;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_custom (Gst.EventType type, IntPtr structure);
|
|
|
|
public static Gst.Event NewCustom (Gst.EventType type, Gst.Structure structure) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_custom (type, (structure != null) ? structure.Handle : IntPtr.Zero), true);
|
|
ev.cached_structure = structure;
|
|
structure.FreeNative = false;
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_flush_start ();
|
|
|
|
public static Gst.Event NewFlushStart () {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_flush_start (), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_flush_stop ();
|
|
|
|
public static Gst.Event NewFlushStop () {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_flush_stop (), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_eos ();
|
|
|
|
public static Gst.Event NewEos () {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_eos (), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_new_segment_full (bool update, double rate, double applied_rate, Gst.Format format, long start, long stop, long position);
|
|
|
|
public static Gst.Event NewNewSegment (bool update, double rate, double applied_rate, Gst.Format format, long start, long stop, long position) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_new_segment_full (update, rate, applied_rate, format, start, stop, position), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
public static Gst.Event NewNewSegment (bool update, double rate, Gst.Format format, long start, long stop, long position) {
|
|
return NewNewSegment (update, rate, 1.0, format, start, stop, position);
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_parse_new_segment_full (IntPtr raw, out bool update, out double rate, out double applied_rate, out Gst.Format format, out long start, out long stop, out long position);
|
|
|
|
public void ParseNewSegment (out bool update, out double rate, out double applied_rate, out Gst.Format format, out long start, out long stop, out long position) {
|
|
if (Type != Gst.EventType.NewSegment)
|
|
throw new ApplicationException ();
|
|
|
|
gst_event_parse_new_segment_full (Handle, out update, out rate, out applied_rate, out format, out start, out stop, out position);
|
|
}
|
|
|
|
public void ParseNewSegment (out bool update, out double rate, Gst.Format format, out long start, out long stop, out long position) {
|
|
double applied_rate;
|
|
|
|
ParseNewSegment (out update, out rate, out applied_rate, out format, out start, out stop, out position);
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_tag (IntPtr tags);
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_tag_list_copy (IntPtr raw);
|
|
|
|
public static Gst.Event NewTag (Gst.TagList tags) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_tag ( (tags != null) ? gst_tag_list_copy (tags.Handle) : IntPtr.Zero), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_parse_tag (IntPtr ev, out IntPtr tags);
|
|
|
|
public void ParseTag (out TagList tags) {
|
|
if (Type != EventType.Tag)
|
|
throw new ArgumentException ();
|
|
|
|
IntPtr raw_ptr;
|
|
|
|
gst_event_parse_tag (Handle, out raw_ptr);
|
|
if (raw_ptr == IntPtr.Zero)
|
|
tags = null;
|
|
else
|
|
tags = (TagList) GLib.Opaque.GetOpaque (raw_ptr, typeof (TagList), true);
|
|
}
|
|
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_buffer_size (Gst.Format format, long min, long max, bool async);
|
|
|
|
public static Gst.Event NewBufferSize (Gst.Format format, long min, long max, bool async) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_buffer_size (format, min, max, async), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_parse_buffer_size (IntPtr ev, out Gst.Format format, out long min, out long max, out bool async);
|
|
|
|
public void ParseBufferSize (out Gst.Format format, out long min, out long max, out bool async) {
|
|
if (Type != EventType.BufferSize)
|
|
throw new ArgumentException ();
|
|
|
|
gst_event_parse_buffer_size (Handle, out format, out min, out max, out async);
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_qos (double proportion, long diff, ulong timestamp);
|
|
|
|
public static Gst.Event NewQos (double proportion, long diff, ulong timestamp) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_qos (proportion, diff, timestamp), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_parse_qos (IntPtr ev, out double proportion, out long diff, out ulong timestamp);
|
|
|
|
public void ParseQos (out double proportion, out long diff, out ulong timestamp) {
|
|
if (Type != EventType.Qos)
|
|
throw new ArgumentException ();
|
|
|
|
gst_event_parse_qos (Handle, out proportion, out diff, out timestamp);
|
|
}
|
|
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_seek (double rate, Gst.Format format, Gst.SeekFlags flags, Gst.SeekType start_type, long start, Gst.SeekType stop_type, long stop);
|
|
|
|
public static Gst.Event NewSeek (double rate, Gst.Format format, Gst.SeekFlags flags, Gst.SeekType start_type, long start, Gst.SeekType stop_type, long stop) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_seek (rate, format, flags, start_type, start, stop_type, stop), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_parse_seek (IntPtr ev, out double rate, out Gst.Format format, out Gst.SeekFlags flags, out Gst.SeekType start_type, out long start, out Gst.SeekType stop_type, out long stop);
|
|
|
|
public void ParseSeek (out double rate, out Gst.Format format, out Gst.SeekFlags flags, out Gst.SeekType start_type, out long start, out Gst.SeekType stop_type, out long stop) {
|
|
if (Type != EventType.Seek)
|
|
throw new ArgumentException ();
|
|
|
|
gst_event_parse_seek (Handle, out rate, out format, out flags, out start_type, out start, out stop_type, out stop);
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_navigation (IntPtr structure);
|
|
|
|
public static Gst.Event NewNavigation (Gst.Structure structure) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_navigation (structure.Handle), true);
|
|
ev.cached_structure = structure;
|
|
structure.FreeNative = false;
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern IntPtr gst_event_new_latency (ulong latency);
|
|
|
|
public static Gst.Event NewLatency (ulong latency) {
|
|
Gst.Event ev = (Gst.Event) Gst.MiniObject.GetObject (gst_event_new_latency (latency), true);
|
|
|
|
return ev;
|
|
}
|
|
|
|
[DllImport ("gstreamer-0.10.dll") ]
|
|
static extern void gst_event_parse_latency (IntPtr ev, out ulong latency);
|
|
|
|
public void ParseLatency (out ulong latency) {
|
|
if (Type != EventType.Latency)
|
|
throw new ArgumentException ();
|
|
|
|
gst_event_parse_latency (Handle, out latency);
|
|
}
|
|
|