1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
// DO NOT EDIT

use crate::BaseSrc;

glib::wrapper! {
    /// This class is mostly useful for elements that cannot do
    /// random access, or at least very slowly. The source usually
    /// prefers to push out a fixed size buffer.
    ///
    /// Subclasses usually operate in a format that is different from the
    /// default GST_FORMAT_BYTES format of [`BaseSrc`][crate::BaseSrc].
    ///
    /// Classes extending this base class will usually be scheduled
    /// in a push based mode. If the peer accepts to operate without
    /// offsets and within the limits of the allowed block size, this
    /// class can operate in getrange based mode automatically. To make
    /// this possible, the subclass should implement and override the
    /// SCHEDULING query.
    ///
    /// The subclass should extend the methods from the baseclass in
    /// addition to the ::create method.
    ///
    /// Seeking, flushing, scheduling and sync is all handled by this
    /// base class.
    ///
    /// # Implements
    ///
    /// [`BaseSrcExt`][trait@crate::prelude::BaseSrcExt], [`trait@gst::prelude::ElementExt`], [`trait@gst::prelude::ObjectExt`], [`trait@glib::ObjectExt`], [`BaseSrcExtManual`][trait@crate::prelude::BaseSrcExtManual]
    #[doc(alias = "GstPushSrc")]
    pub struct PushSrc(Object<ffi::GstPushSrc, ffi::GstPushSrcClass>) @extends BaseSrc, gst::Element, gst::Object;

    match fn {
        type_ => || ffi::gst_push_src_get_type(),
    }
}

impl PushSrc {
    pub const NONE: Option<&'static PushSrc> = None;
}

unsafe impl Send for PushSrc {}
unsafe impl Sync for PushSrc {}