Skip to main content

gstreamer_app_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gstreamer_base_sys as gst_base;
17use gstreamer_sys as gst;
18
19#[allow(unused_imports)]
20use libc::{FILE, intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t};
21#[cfg(unix)]
22#[allow(unused_imports)]
23use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
24#[allow(unused_imports)]
25use std::ffi::{
26    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
27};
28
29#[allow(unused_imports)]
30use glib::{GType, gboolean, gconstpointer, gpointer};
31
32// Enums
33pub type GstAppLeakyType = c_int;
34pub const GST_APP_LEAKY_TYPE_NONE: GstAppLeakyType = 0;
35pub const GST_APP_LEAKY_TYPE_UPSTREAM: GstAppLeakyType = 1;
36pub const GST_APP_LEAKY_TYPE_DOWNSTREAM: GstAppLeakyType = 2;
37
38pub type GstAppStreamType = c_int;
39pub const GST_APP_STREAM_TYPE_STREAM: GstAppStreamType = 0;
40pub const GST_APP_STREAM_TYPE_SEEKABLE: GstAppStreamType = 1;
41pub const GST_APP_STREAM_TYPE_RANDOM_ACCESS: GstAppStreamType = 2;
42
43// Callbacks
44pub type GstAppSinkEosCallback = Option<unsafe extern "C" fn(*mut GstAppSink, gpointer)>;
45pub type GstAppSinkNewEventCallback =
46    Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gboolean>;
47pub type GstAppSinkNewPrerollCallback =
48    Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gst::GstFlowReturn>;
49pub type GstAppSinkNewSampleCallback =
50    Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gst::GstFlowReturn>;
51pub type GstAppSinkProposeAllocationCallback =
52    Option<unsafe extern "C" fn(*mut GstAppSink, *mut gst::GstQuery, gpointer) -> gboolean>;
53pub type GstAppSrcEnoughDataCallback = Option<unsafe extern "C" fn(*mut GstAppSrc, gpointer)>;
54pub type GstAppSrcNeedDataCallback = Option<unsafe extern "C" fn(*mut GstAppSrc, c_uint, gpointer)>;
55pub type GstAppSrcSeekDataCallback =
56    Option<unsafe extern "C" fn(*mut GstAppSrc, u64, gpointer) -> gboolean>;
57
58// Records
59#[derive(Copy, Clone)]
60#[repr(C)]
61pub struct GstAppSinkCallbacks {
62    pub eos: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer)>,
63    pub new_preroll: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gst::GstFlowReturn>,
64    pub new_sample: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gst::GstFlowReturn>,
65    pub new_event: Option<unsafe extern "C" fn(*mut GstAppSink, gpointer) -> gboolean>,
66    pub propose_allocation:
67        Option<unsafe extern "C" fn(*mut GstAppSink, *mut gst::GstQuery, gpointer) -> gboolean>,
68    pub _gst_reserved: [gpointer; 2],
69}
70
71impl ::std::fmt::Debug for GstAppSinkCallbacks {
72    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
73        f.debug_struct(&format!("GstAppSinkCallbacks @ {self:p}"))
74            .field("eos", &self.eos)
75            .field("new_preroll", &self.new_preroll)
76            .field("new_sample", &self.new_sample)
77            .field("new_event", &self.new_event)
78            .field("propose_allocation", &self.propose_allocation)
79            .finish()
80    }
81}
82
83#[derive(Copy, Clone)]
84#[repr(C)]
85pub struct GstAppSinkClass {
86    pub basesink_class: gst_base::GstBaseSinkClass,
87    pub eos: Option<unsafe extern "C" fn(*mut GstAppSink)>,
88    pub new_preroll: Option<unsafe extern "C" fn(*mut GstAppSink) -> gst::GstFlowReturn>,
89    pub new_sample: Option<unsafe extern "C" fn(*mut GstAppSink) -> gst::GstFlowReturn>,
90    pub pull_preroll: Option<unsafe extern "C" fn(*mut GstAppSink) -> *mut gst::GstSample>,
91    pub pull_sample: Option<unsafe extern "C" fn(*mut GstAppSink) -> *mut gst::GstSample>,
92    pub try_pull_preroll:
93        Option<unsafe extern "C" fn(*mut GstAppSink, gst::GstClockTime) -> *mut gst::GstSample>,
94    pub try_pull_sample:
95        Option<unsafe extern "C" fn(*mut GstAppSink, gst::GstClockTime) -> *mut gst::GstSample>,
96    pub try_pull_object:
97        Option<unsafe extern "C" fn(*mut GstAppSink, gst::GstClockTime) -> *mut gst::GstMiniObject>,
98    pub _gst_reserved: [gpointer; 1],
99}
100
101impl ::std::fmt::Debug for GstAppSinkClass {
102    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
103        f.debug_struct(&format!("GstAppSinkClass @ {self:p}"))
104            .field("basesink_class", &self.basesink_class)
105            .field("eos", &self.eos)
106            .field("new_preroll", &self.new_preroll)
107            .field("new_sample", &self.new_sample)
108            .field("pull_preroll", &self.pull_preroll)
109            .field("pull_sample", &self.pull_sample)
110            .field("try_pull_preroll", &self.try_pull_preroll)
111            .field("try_pull_sample", &self.try_pull_sample)
112            .field("try_pull_object", &self.try_pull_object)
113            .finish()
114    }
115}
116
117#[repr(C)]
118#[allow(dead_code)]
119pub struct _GstAppSinkPrivate {
120    _data: [u8; 0],
121    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
122}
123
124pub type GstAppSinkPrivate = _GstAppSinkPrivate;
125
126#[repr(C)]
127#[allow(dead_code)]
128pub struct GstAppSinkSimpleCallbacks {
129    _data: [u8; 0],
130    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
131}
132
133impl ::std::fmt::Debug for GstAppSinkSimpleCallbacks {
134    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
135        f.debug_struct(&format!("GstAppSinkSimpleCallbacks @ {self:p}"))
136            .finish()
137    }
138}
139
140#[derive(Copy, Clone)]
141#[repr(C)]
142pub struct GstAppSrcCallbacks {
143    pub need_data: Option<unsafe extern "C" fn(*mut GstAppSrc, c_uint, gpointer)>,
144    pub enough_data: Option<unsafe extern "C" fn(*mut GstAppSrc, gpointer)>,
145    pub seek_data: Option<unsafe extern "C" fn(*mut GstAppSrc, u64, gpointer) -> gboolean>,
146    pub _gst_reserved: [gpointer; 4],
147}
148
149impl ::std::fmt::Debug for GstAppSrcCallbacks {
150    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
151        f.debug_struct(&format!("GstAppSrcCallbacks @ {self:p}"))
152            .field("need_data", &self.need_data)
153            .field("enough_data", &self.enough_data)
154            .field("seek_data", &self.seek_data)
155            .finish()
156    }
157}
158
159#[derive(Copy, Clone)]
160#[repr(C)]
161pub struct GstAppSrcClass {
162    pub basesrc_class: gst_base::GstBaseSrcClass,
163    pub need_data: Option<unsafe extern "C" fn(*mut GstAppSrc, c_uint)>,
164    pub enough_data: Option<unsafe extern "C" fn(*mut GstAppSrc)>,
165    pub seek_data: Option<unsafe extern "C" fn(*mut GstAppSrc, u64) -> gboolean>,
166    pub push_buffer:
167        Option<unsafe extern "C" fn(*mut GstAppSrc, *mut gst::GstBuffer) -> gst::GstFlowReturn>,
168    pub end_of_stream: Option<unsafe extern "C" fn(*mut GstAppSrc) -> gst::GstFlowReturn>,
169    pub push_sample:
170        Option<unsafe extern "C" fn(*mut GstAppSrc, *mut gst::GstSample) -> gst::GstFlowReturn>,
171    pub push_buffer_list:
172        Option<unsafe extern "C" fn(*mut GstAppSrc, *mut gst::GstBufferList) -> gst::GstFlowReturn>,
173    pub _gst_reserved: [gpointer; 2],
174}
175
176impl ::std::fmt::Debug for GstAppSrcClass {
177    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
178        f.debug_struct(&format!("GstAppSrcClass @ {self:p}"))
179            .field("basesrc_class", &self.basesrc_class)
180            .field("need_data", &self.need_data)
181            .field("enough_data", &self.enough_data)
182            .field("seek_data", &self.seek_data)
183            .field("push_buffer", &self.push_buffer)
184            .field("end_of_stream", &self.end_of_stream)
185            .field("push_sample", &self.push_sample)
186            .field("push_buffer_list", &self.push_buffer_list)
187            .finish()
188    }
189}
190
191#[repr(C)]
192#[allow(dead_code)]
193pub struct _GstAppSrcPrivate {
194    _data: [u8; 0],
195    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
196}
197
198pub type GstAppSrcPrivate = _GstAppSrcPrivate;
199
200#[repr(C)]
201#[allow(dead_code)]
202pub struct GstAppSrcSimpleCallbacks {
203    _data: [u8; 0],
204    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
205}
206
207impl ::std::fmt::Debug for GstAppSrcSimpleCallbacks {
208    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
209        f.debug_struct(&format!("GstAppSrcSimpleCallbacks @ {self:p}"))
210            .finish()
211    }
212}
213
214// Classes
215#[derive(Copy, Clone)]
216#[repr(C)]
217pub struct GstAppSink {
218    pub basesink: gst_base::GstBaseSink,
219    pub priv_: *mut GstAppSinkPrivate,
220    pub _gst_reserved: [gpointer; 4],
221}
222
223impl ::std::fmt::Debug for GstAppSink {
224    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
225        f.debug_struct(&format!("GstAppSink @ {self:p}"))
226            .field("basesink", &self.basesink)
227            .finish()
228    }
229}
230
231#[derive(Copy, Clone)]
232#[repr(C)]
233pub struct GstAppSrc {
234    pub basesrc: gst_base::GstBaseSrc,
235    pub priv_: *mut GstAppSrcPrivate,
236    pub _gst_reserved: [gpointer; 4],
237}
238
239impl ::std::fmt::Debug for GstAppSrc {
240    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
241        f.debug_struct(&format!("GstAppSrc @ {self:p}"))
242            .field("basesrc", &self.basesrc)
243            .finish()
244    }
245}
246
247unsafe extern "C" {
248
249    //=========================================================================
250    // GstAppLeakyType
251    //=========================================================================
252    #[cfg(feature = "v1_20")]
253    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
254    pub fn gst_app_leaky_type_get_type() -> GType;
255
256    //=========================================================================
257    // GstAppStreamType
258    //=========================================================================
259    pub fn gst_app_stream_type_get_type() -> GType;
260
261    //=========================================================================
262    // GstAppSinkSimpleCallbacks
263    //=========================================================================
264    #[cfg(feature = "v1_28")]
265    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
266    pub fn gst_app_sink_simple_callbacks_get_type() -> GType;
267    #[cfg(feature = "v1_28")]
268    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
269    pub fn gst_app_sink_simple_callbacks_new() -> *mut GstAppSinkSimpleCallbacks;
270    #[cfg(feature = "v1_28")]
271    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
272    pub fn gst_app_sink_simple_callbacks_ref(
273        cb: *mut GstAppSinkSimpleCallbacks,
274    ) -> *mut GstAppSinkSimpleCallbacks;
275    #[cfg(feature = "v1_28")]
276    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
277    pub fn gst_app_sink_simple_callbacks_set_eos(
278        cb: *mut GstAppSinkSimpleCallbacks,
279        eos_cb: GstAppSinkEosCallback,
280        user_data: gpointer,
281        destroy_notify: glib::GDestroyNotify,
282    );
283    #[cfg(feature = "v1_28")]
284    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
285    pub fn gst_app_sink_simple_callbacks_set_new_event(
286        cb: *mut GstAppSinkSimpleCallbacks,
287        new_event_cb: GstAppSinkNewEventCallback,
288        user_data: gpointer,
289        destroy_notify: glib::GDestroyNotify,
290    );
291    #[cfg(feature = "v1_28")]
292    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
293    pub fn gst_app_sink_simple_callbacks_set_new_preroll(
294        cb: *mut GstAppSinkSimpleCallbacks,
295        new_preroll_cb: GstAppSinkNewPrerollCallback,
296        user_data: gpointer,
297        destroy_notify: glib::GDestroyNotify,
298    );
299    #[cfg(feature = "v1_28")]
300    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
301    pub fn gst_app_sink_simple_callbacks_set_new_sample(
302        cb: *mut GstAppSinkSimpleCallbacks,
303        new_sample_cb: GstAppSinkNewSampleCallback,
304        user_data: gpointer,
305        destroy_notify: glib::GDestroyNotify,
306    );
307    #[cfg(feature = "v1_28")]
308    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
309    pub fn gst_app_sink_simple_callbacks_set_propose_allocation(
310        cb: *mut GstAppSinkSimpleCallbacks,
311        propose_allocation_cb: GstAppSinkProposeAllocationCallback,
312        user_data: gpointer,
313        destroy_notify: glib::GDestroyNotify,
314    );
315    #[cfg(feature = "v1_28")]
316    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
317    pub fn gst_app_sink_simple_callbacks_unref(cb: *mut GstAppSinkSimpleCallbacks);
318
319    //=========================================================================
320    // GstAppSrcSimpleCallbacks
321    //=========================================================================
322    #[cfg(feature = "v1_28")]
323    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
324    pub fn gst_app_src_simple_callbacks_get_type() -> GType;
325    #[cfg(feature = "v1_28")]
326    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
327    pub fn gst_app_src_simple_callbacks_new() -> *mut GstAppSrcSimpleCallbacks;
328    #[cfg(feature = "v1_28")]
329    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
330    pub fn gst_app_src_simple_callbacks_ref(
331        cb: *mut GstAppSrcSimpleCallbacks,
332    ) -> *mut GstAppSrcSimpleCallbacks;
333    #[cfg(feature = "v1_28")]
334    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
335    pub fn gst_app_src_simple_callbacks_set_enough_data(
336        cb: *mut GstAppSrcSimpleCallbacks,
337        enough_data_cb: GstAppSrcEnoughDataCallback,
338        user_data: gpointer,
339        destroy_notify: glib::GDestroyNotify,
340    );
341    #[cfg(feature = "v1_28")]
342    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
343    pub fn gst_app_src_simple_callbacks_set_need_data(
344        cb: *mut GstAppSrcSimpleCallbacks,
345        need_data_cb: GstAppSrcNeedDataCallback,
346        user_data: gpointer,
347        destroy_notify: glib::GDestroyNotify,
348    );
349    #[cfg(feature = "v1_28")]
350    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
351    pub fn gst_app_src_simple_callbacks_set_seek_data(
352        cb: *mut GstAppSrcSimpleCallbacks,
353        seek_data_cb: GstAppSrcSeekDataCallback,
354        user_data: gpointer,
355        destroy_notify: glib::GDestroyNotify,
356    );
357    #[cfg(feature = "v1_28")]
358    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
359    pub fn gst_app_src_simple_callbacks_unref(cb: *mut GstAppSrcSimpleCallbacks);
360
361    //=========================================================================
362    // GstAppSink
363    //=========================================================================
364    pub fn gst_app_sink_get_type() -> GType;
365    pub fn gst_app_sink_get_buffer_list_support(appsink: *mut GstAppSink) -> gboolean;
366    pub fn gst_app_sink_get_caps(appsink: *mut GstAppSink) -> *mut gst::GstCaps;
367    #[cfg(feature = "v1_28")]
368    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
369    pub fn gst_app_sink_get_current_level_buffers(appsink: *mut GstAppSink) -> u64;
370    #[cfg(feature = "v1_28")]
371    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
372    pub fn gst_app_sink_get_current_level_bytes(appsink: *mut GstAppSink) -> u64;
373    #[cfg(feature = "v1_28")]
374    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
375    pub fn gst_app_sink_get_current_level_time(appsink: *mut GstAppSink) -> gst::GstClockTime;
376    pub fn gst_app_sink_get_drop(appsink: *mut GstAppSink) -> gboolean;
377    pub fn gst_app_sink_get_emit_signals(appsink: *mut GstAppSink) -> gboolean;
378    #[cfg(feature = "v1_28")]
379    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
380    pub fn gst_app_sink_get_leaky_type(appsink: *mut GstAppSink) -> GstAppLeakyType;
381    pub fn gst_app_sink_get_max_buffers(appsink: *mut GstAppSink) -> c_uint;
382    #[cfg(feature = "v1_24")]
383    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
384    pub fn gst_app_sink_get_max_bytes(appsink: *mut GstAppSink) -> u64;
385    #[cfg(feature = "v1_24")]
386    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
387    pub fn gst_app_sink_get_max_time(appsink: *mut GstAppSink) -> gst::GstClockTime;
388    pub fn gst_app_sink_get_wait_on_eos(appsink: *mut GstAppSink) -> gboolean;
389    pub fn gst_app_sink_is_eos(appsink: *mut GstAppSink) -> gboolean;
390    #[cfg(feature = "v1_20")]
391    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
392    pub fn gst_app_sink_pull_object(appsink: *mut GstAppSink) -> *mut gst::GstMiniObject;
393    pub fn gst_app_sink_pull_preroll(appsink: *mut GstAppSink) -> *mut gst::GstSample;
394    pub fn gst_app_sink_pull_sample(appsink: *mut GstAppSink) -> *mut gst::GstSample;
395    pub fn gst_app_sink_set_buffer_list_support(appsink: *mut GstAppSink, enable_lists: gboolean);
396    pub fn gst_app_sink_set_callbacks(
397        appsink: *mut GstAppSink,
398        callbacks: *mut GstAppSinkCallbacks,
399        user_data: gpointer,
400        notify: glib::GDestroyNotify,
401    );
402    pub fn gst_app_sink_set_caps(appsink: *mut GstAppSink, caps: *const gst::GstCaps);
403    pub fn gst_app_sink_set_drop(appsink: *mut GstAppSink, drop: gboolean);
404    pub fn gst_app_sink_set_emit_signals(appsink: *mut GstAppSink, emit: gboolean);
405    #[cfg(feature = "v1_28")]
406    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
407    pub fn gst_app_sink_set_leaky_type(appsink: *mut GstAppSink, leaky: GstAppLeakyType);
408    pub fn gst_app_sink_set_max_buffers(appsink: *mut GstAppSink, max: c_uint);
409    #[cfg(feature = "v1_24")]
410    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
411    pub fn gst_app_sink_set_max_bytes(appsink: *mut GstAppSink, max: u64);
412    #[cfg(feature = "v1_24")]
413    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
414    pub fn gst_app_sink_set_max_time(appsink: *mut GstAppSink, max: gst::GstClockTime);
415    #[cfg(feature = "v1_28")]
416    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
417    pub fn gst_app_sink_set_simple_callbacks(
418        appsink: *mut GstAppSink,
419        cb: *mut GstAppSinkSimpleCallbacks,
420    );
421    pub fn gst_app_sink_set_wait_on_eos(appsink: *mut GstAppSink, wait: gboolean);
422    #[cfg(feature = "v1_20")]
423    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
424    pub fn gst_app_sink_try_pull_object(
425        appsink: *mut GstAppSink,
426        timeout: gst::GstClockTime,
427    ) -> *mut gst::GstMiniObject;
428    pub fn gst_app_sink_try_pull_preroll(
429        appsink: *mut GstAppSink,
430        timeout: gst::GstClockTime,
431    ) -> *mut gst::GstSample;
432    pub fn gst_app_sink_try_pull_sample(
433        appsink: *mut GstAppSink,
434        timeout: gst::GstClockTime,
435    ) -> *mut gst::GstSample;
436
437    //=========================================================================
438    // GstAppSrc
439    //=========================================================================
440    pub fn gst_app_src_get_type() -> GType;
441    pub fn gst_app_src_end_of_stream(appsrc: *mut GstAppSrc) -> gst::GstFlowReturn;
442    pub fn gst_app_src_get_caps(appsrc: *mut GstAppSrc) -> *mut gst::GstCaps;
443    #[cfg(feature = "v1_20")]
444    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
445    pub fn gst_app_src_get_current_level_buffers(appsrc: *mut GstAppSrc) -> u64;
446    pub fn gst_app_src_get_current_level_bytes(appsrc: *mut GstAppSrc) -> u64;
447    #[cfg(feature = "v1_20")]
448    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
449    pub fn gst_app_src_get_current_level_time(appsrc: *mut GstAppSrc) -> gst::GstClockTime;
450    pub fn gst_app_src_get_duration(appsrc: *mut GstAppSrc) -> gst::GstClockTime;
451    pub fn gst_app_src_get_emit_signals(appsrc: *mut GstAppSrc) -> gboolean;
452    pub fn gst_app_src_get_latency(appsrc: *mut GstAppSrc, min: *mut u64, max: *mut u64);
453    #[cfg(feature = "v1_20")]
454    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
455    pub fn gst_app_src_get_leaky_type(appsrc: *mut GstAppSrc) -> GstAppLeakyType;
456    #[cfg(feature = "v1_20")]
457    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
458    pub fn gst_app_src_get_max_buffers(appsrc: *mut GstAppSrc) -> u64;
459    pub fn gst_app_src_get_max_bytes(appsrc: *mut GstAppSrc) -> u64;
460    #[cfg(feature = "v1_20")]
461    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
462    pub fn gst_app_src_get_max_time(appsrc: *mut GstAppSrc) -> gst::GstClockTime;
463    pub fn gst_app_src_get_size(appsrc: *mut GstAppSrc) -> i64;
464    pub fn gst_app_src_get_stream_type(appsrc: *mut GstAppSrc) -> GstAppStreamType;
465    pub fn gst_app_src_push_buffer(
466        appsrc: *mut GstAppSrc,
467        buffer: *mut gst::GstBuffer,
468    ) -> gst::GstFlowReturn;
469    pub fn gst_app_src_push_buffer_list(
470        appsrc: *mut GstAppSrc,
471        buffer_list: *mut gst::GstBufferList,
472    ) -> gst::GstFlowReturn;
473    pub fn gst_app_src_push_sample(
474        appsrc: *mut GstAppSrc,
475        sample: *mut gst::GstSample,
476    ) -> gst::GstFlowReturn;
477    pub fn gst_app_src_set_callbacks(
478        appsrc: *mut GstAppSrc,
479        callbacks: *mut GstAppSrcCallbacks,
480        user_data: gpointer,
481        notify: glib::GDestroyNotify,
482    );
483    pub fn gst_app_src_set_caps(appsrc: *mut GstAppSrc, caps: *const gst::GstCaps);
484    pub fn gst_app_src_set_duration(appsrc: *mut GstAppSrc, duration: gst::GstClockTime);
485    pub fn gst_app_src_set_emit_signals(appsrc: *mut GstAppSrc, emit: gboolean);
486    pub fn gst_app_src_set_latency(appsrc: *mut GstAppSrc, min: u64, max: u64);
487    #[cfg(feature = "v1_20")]
488    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
489    pub fn gst_app_src_set_leaky_type(appsrc: *mut GstAppSrc, leaky: GstAppLeakyType);
490    #[cfg(feature = "v1_20")]
491    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
492    pub fn gst_app_src_set_max_buffers(appsrc: *mut GstAppSrc, max: u64);
493    pub fn gst_app_src_set_max_bytes(appsrc: *mut GstAppSrc, max: u64);
494    #[cfg(feature = "v1_20")]
495    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
496    pub fn gst_app_src_set_max_time(appsrc: *mut GstAppSrc, max: gst::GstClockTime);
497    #[cfg(feature = "v1_28")]
498    #[cfg_attr(docsrs, doc(cfg(feature = "v1_28")))]
499    pub fn gst_app_src_set_simple_callbacks(
500        appsrc: *mut GstAppSrc,
501        cb: *mut GstAppSrcSimpleCallbacks,
502    );
503    pub fn gst_app_src_set_size(appsrc: *mut GstAppSrc, size: i64);
504    pub fn gst_app_src_set_stream_type(appsrc: *mut GstAppSrc, type_: GstAppStreamType);
505
506}