mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-12-22 08:07:07 +00:00
gstreamer: Autogenerate some more API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1182>
This commit is contained in:
parent
7490846309
commit
a028e807df
35 changed files with 375 additions and 477 deletions
|
@ -159,16 +159,6 @@ name = "GstApp.AppSrc"
|
|||
status = "generate"
|
||||
final_type = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push_buffer"
|
||||
# Pass by value
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push_buffer_list"
|
||||
# Pass by value
|
||||
manual = true
|
||||
|
||||
[[object.signal]]
|
||||
name = "end-of-stream"
|
||||
# Action signal
|
||||
|
|
|
@ -219,29 +219,6 @@ impl AppSrc {
|
|||
AppSrcBuilder::default()
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_app_src_push_buffer")]
|
||||
pub fn push_buffer(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_app_src_push_buffer(
|
||||
self.to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_app_src_push_buffer_list")]
|
||||
pub fn push_buffer_list(
|
||||
&self,
|
||||
list: gst::BufferList,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_app_src_push_buffer_list(
|
||||
self.to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_app_src_set_callbacks")]
|
||||
pub fn set_callbacks(&self, callbacks: AppSrcCallbacks) {
|
||||
use once_cell::sync::Lazy;
|
||||
|
|
|
@ -109,6 +109,29 @@ impl AppSrc {
|
|||
unsafe { from_glib(ffi::gst_app_src_get_stream_type(self.to_glib_none().0)) }
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_app_src_push_buffer")]
|
||||
pub fn push_buffer(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_app_src_push_buffer(
|
||||
self.to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_app_src_push_buffer_list")]
|
||||
pub fn push_buffer_list(
|
||||
&self,
|
||||
buffer_list: gst::BufferList,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_app_src_push_buffer_list(
|
||||
self.to_glib_none().0,
|
||||
buffer_list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_app_src_push_sample")]
|
||||
pub fn push_sample(&self, sample: &gst::Sample) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
|
|
|
@ -72,6 +72,15 @@ name = "Gst.ClockTime"
|
|||
status = "manual"
|
||||
conversion_type = "Option"
|
||||
|
||||
[[object]]
|
||||
name = "Gst.FlowReturn"
|
||||
status = "manual"
|
||||
must_use = true
|
||||
[object.conversion_type]
|
||||
variant = "Result"
|
||||
ok_type = "gst::FlowSuccess"
|
||||
err_type = "gst::FlowError"
|
||||
|
||||
[[object]]
|
||||
name = "Gst.Object"
|
||||
# For renaming the trait...
|
||||
|
@ -142,14 +151,6 @@ name = "GstAudio.AudioDecoder"
|
|||
status = "generate"
|
||||
manual_traits = ["AudioDecoderExtManual"]
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_frame"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_subframe"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "get_latency"
|
||||
[[object.function.parameter]]
|
||||
|
@ -204,11 +205,6 @@ manual_traits = ["AudioDecoderExtManual"]
|
|||
name = "GstAudio.AudioEncoder"
|
||||
status = "generate"
|
||||
manual_traits = ["AudioEncoderExtManual"]
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_frame"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "negotiate"
|
||||
manual = true
|
||||
|
|
|
@ -21,19 +21,6 @@ extern "C" {
|
|||
}
|
||||
|
||||
pub trait AudioDecoderExtManual: 'static {
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
frames: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
fn finish_subframe(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
fn negotiate(&self) -> Result<(), gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
|
@ -63,35 +50,6 @@ pub trait AudioDecoderExtManual: 'static {
|
|||
}
|
||||
|
||||
impl<O: IsA<AudioDecoder>> AudioDecoderExtManual for O {
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
frames: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_audio_decoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.map(|b| b.into_glib_ptr()).unwrap_or(ptr::null_mut()),
|
||||
frames,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
#[doc(alias = "gst_audio_decoder_finish_subframe")]
|
||||
fn finish_subframe(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_audio_decoder_finish_subframe(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.map(|b| b.into_glib_ptr()).unwrap_or(ptr::null_mut()),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_audio_decoder_negotiate")]
|
||||
fn negotiate(&self) -> Result<(), gst::FlowError> {
|
||||
unsafe {
|
||||
|
|
|
@ -7,13 +7,6 @@ use glib::{prelude::*, translate::*};
|
|||
use crate::AudioEncoder;
|
||||
|
||||
pub trait AudioEncoderExtManual: 'static {
|
||||
#[doc(alias = "gst_audio_encoder_finish_frame")]
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
frames: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_audio_encoder_negotiate")]
|
||||
fn negotiate(&self) -> Result<(), gst::FlowError>;
|
||||
|
||||
|
@ -33,20 +26,6 @@ pub trait AudioEncoderExtManual: 'static {
|
|||
}
|
||||
|
||||
impl<O: IsA<AudioEncoder>> AudioEncoderExtManual for O {
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
frames: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_audio_encoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.map(|b| b.into_glib_ptr()).unwrap_or(ptr::null_mut()),
|
||||
frames,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn negotiate(&self) -> Result<(), gst::FlowError> {
|
||||
unsafe {
|
||||
let ret = from_glib(ffi::gst_audio_encoder_negotiate(
|
||||
|
|
|
@ -31,6 +31,19 @@ pub trait AudioDecoderExt: 'static {
|
|||
#[doc(alias = "gst_audio_decoder_allocate_output_buffer")]
|
||||
fn allocate_output_buffer(&self, size: usize) -> gst::Buffer;
|
||||
|
||||
#[doc(alias = "gst_audio_decoder_finish_frame")]
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buf: Option<gst::Buffer>,
|
||||
frames: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
#[doc(alias = "gst_audio_decoder_finish_subframe")]
|
||||
fn finish_subframe(&self, buf: Option<gst::Buffer>)
|
||||
-> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_audio_decoder_get_audio_info")]
|
||||
#[doc(alias = "get_audio_info")]
|
||||
fn audio_info(&self) -> AudioInfo;
|
||||
|
@ -152,6 +165,34 @@ impl<O: IsA<AudioDecoder>> AudioDecoderExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buf: Option<gst::Buffer>,
|
||||
frames: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_audio_decoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buf.into_glib_ptr(),
|
||||
frames,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
fn finish_subframe(
|
||||
&self,
|
||||
buf: Option<gst::Buffer>,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_audio_decoder_finish_subframe(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buf.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn audio_info(&self) -> AudioInfo {
|
||||
unsafe {
|
||||
from_glib_none(ffi::gst_audio_decoder_get_audio_info(
|
||||
|
|
|
@ -31,6 +31,13 @@ pub trait AudioEncoderExt: 'static {
|
|||
#[doc(alias = "gst_audio_encoder_allocate_output_buffer")]
|
||||
fn allocate_output_buffer(&self, size: usize) -> gst::Buffer;
|
||||
|
||||
#[doc(alias = "gst_audio_encoder_finish_frame")]
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
samples: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_audio_encoder_get_audio_info")]
|
||||
#[doc(alias = "get_audio_info")]
|
||||
fn audio_info(&self) -> AudioInfo;
|
||||
|
@ -156,6 +163,20 @@ impl<O: IsA<AudioEncoder>> AudioEncoderExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn finish_frame(
|
||||
&self,
|
||||
buffer: Option<gst::Buffer>,
|
||||
samples: i32,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_audio_encoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
samples,
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn audio_info(&self) -> AudioInfo {
|
||||
unsafe {
|
||||
from_glib_none(ffi::gst_audio_encoder_get_audio_info(
|
||||
|
|
|
@ -208,16 +208,6 @@ manual_traits = ["AggregatorExtManual"]
|
|||
name = "get_allocator"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_buffer"
|
||||
# Takes ownership
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_buffer_list"
|
||||
# Takes ownership
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "selected_samples"
|
||||
# Info parameter
|
||||
|
|
|
@ -21,17 +21,6 @@ pub trait AggregatorExtManual: 'static {
|
|||
#[doc(alias = "gst_aggregator_get_allocator")]
|
||||
fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams);
|
||||
|
||||
#[doc(alias = "gst_aggregator_finish_buffer")]
|
||||
fn finish_buffer(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_18", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_18")))]
|
||||
#[doc(alias = "gst_aggregator_finish_buffer_list")]
|
||||
fn finish_buffer_list(
|
||||
&self,
|
||||
bufferlist: gst::BufferList,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
#[doc(alias = "min-upstream-latency")]
|
||||
|
@ -105,29 +94,6 @@ impl<O: IsA<Aggregator>> AggregatorExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn finish_buffer(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_aggregator_finish_buffer(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_18", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_18")))]
|
||||
fn finish_buffer_list(
|
||||
&self,
|
||||
bufferlist: gst::BufferList,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_aggregator_finish_buffer_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
bufferlist.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
fn min_upstream_latency(&self) -> gst::ClockTime {
|
||||
|
|
|
@ -30,6 +30,17 @@ unsafe impl Send for Aggregator {}
|
|||
unsafe impl Sync for Aggregator {}
|
||||
|
||||
pub trait AggregatorExt: 'static {
|
||||
#[doc(alias = "gst_aggregator_finish_buffer")]
|
||||
fn finish_buffer(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_18", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_18")))]
|
||||
#[doc(alias = "gst_aggregator_finish_buffer_list")]
|
||||
fn finish_buffer_list(
|
||||
&self,
|
||||
bufferlist: gst::BufferList,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_aggregator_get_buffer_pool")]
|
||||
#[doc(alias = "get_buffer_pool")]
|
||||
fn buffer_pool(&self) -> Option<gst::BufferPool>;
|
||||
|
@ -139,6 +150,29 @@ pub trait AggregatorExt: 'static {
|
|||
}
|
||||
|
||||
impl<O: IsA<Aggregator>> AggregatorExt for O {
|
||||
fn finish_buffer(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_aggregator_finish_buffer(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_18", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_18")))]
|
||||
fn finish_buffer_list(
|
||||
&self,
|
||||
bufferlist: gst::BufferList,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_aggregator_finish_buffer_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
bufferlist.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn buffer_pool(&self) -> Option<gst::BufferPool> {
|
||||
unsafe {
|
||||
from_glib_full(ffi::gst_aggregator_get_buffer_pool(
|
||||
|
|
|
@ -21,6 +21,7 @@ generate = [
|
|||
"GstRtp.RTCPSDESType",
|
||||
"GstRtp.RTCPType",
|
||||
"GstRtp.RTCPXRType",
|
||||
"GstRtp.RTPBaseDepayload",
|
||||
"GstRtp.RTPHeaderExtensionDirection",
|
||||
"GstRtp.RTPHeaderExtensionFlags",
|
||||
"GstRtp.RTPPayload",
|
||||
|
@ -80,20 +81,6 @@ status = "generate"
|
|||
name = "rtp_source_meta_api_get_type"
|
||||
ignore = true
|
||||
|
||||
[[object]]
|
||||
name = "GstRtp.RTPBaseDepayload"
|
||||
status = "generate"
|
||||
|
||||
[[object.function]]
|
||||
name = "push"
|
||||
# Move buffer
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push_list"
|
||||
# Move buffer list
|
||||
manual = true
|
||||
|
||||
[[object]]
|
||||
name = "GstRtp.RTPBasePayload"
|
||||
status = "generate"
|
||||
|
@ -104,16 +91,6 @@ manual_traits = ["RTPHeaderExtensionExtManual"]
|
|||
# varargs function
|
||||
ignore = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push"
|
||||
# Move buffer
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push_list"
|
||||
# Move buffer list
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "set_outcaps_structure"
|
||||
# StructureRef instead of Structure
|
||||
|
|
|
@ -35,6 +35,12 @@ pub trait RTPBaseDepayloadExt: 'static {
|
|||
#[doc(alias = "gst_rtp_base_depayload_is_source_info_enabled")]
|
||||
fn is_source_info_enabled(&self) -> bool;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_depayload_push")]
|
||||
fn push(&self, out_buf: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_depayload_push_list")]
|
||||
fn push_list(&self, out_list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
#[doc(alias = "gst_rtp_base_depayload_set_source_info_enabled")]
|
||||
|
@ -145,6 +151,24 @@ impl<O: IsA<RTPBaseDepayload>> RTPBaseDepayloadExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn push(&self, out_buf: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_depayload_push(
|
||||
self.as_ref().to_glib_none().0,
|
||||
out_buf.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push_list(&self, out_list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_depayload_push_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
out_list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_16", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
fn set_source_info_enabled(&self, enable: bool) {
|
||||
|
|
|
@ -49,6 +49,12 @@ pub trait RTPBasePayloadExt: 'static {
|
|||
#[doc(alias = "gst_rtp_base_payload_is_source_info_enabled")]
|
||||
fn is_source_info_enabled(&self) -> bool;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_payload_push")]
|
||||
fn push(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_payload_push_list")]
|
||||
fn push_list(&self, list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_payload_set_options")]
|
||||
fn set_options(&self, media: &str, dynamic: bool, encoding_name: &str, clock_rate: u32);
|
||||
|
||||
|
@ -320,6 +326,24 @@ impl<O: IsA<RTPBasePayload>> RTPBasePayloadExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn push(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_payload_push(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push_list(&self, list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_payload_push_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn set_options(&self, media: &str, dynamic: bool, encoding_name: &str, clock_rate: u32) {
|
||||
unsafe {
|
||||
ffi::gst_rtp_base_payload_set_options(
|
||||
|
|
|
@ -1,38 +1,14 @@
|
|||
use glib::{object::IsA, translate::*};
|
||||
use glib::object::IsA;
|
||||
|
||||
use crate::RTPBaseDepayload;
|
||||
|
||||
pub trait RTPBaseDepayloadExtManual: 'static {
|
||||
#[doc(alias = "gst_rtp_base_depayload_push")]
|
||||
fn push(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_depayload_push_list")]
|
||||
fn push_list(&self, list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
fn sink_pad(&self) -> &gst::Pad;
|
||||
|
||||
fn src_pad(&self) -> &gst::Pad;
|
||||
}
|
||||
|
||||
impl<O: IsA<RTPBaseDepayload>> RTPBaseDepayloadExtManual for O {
|
||||
fn push(&self, out_buf: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_depayload_push(
|
||||
self.as_ref().to_glib_none().0,
|
||||
out_buf.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push_list(&self, out_list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_depayload_push_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
out_list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn sink_pad(&self) -> &gst::Pad {
|
||||
unsafe {
|
||||
let elt = &*(self.as_ptr() as *const ffi::GstRTPBaseDepayload);
|
||||
|
|
|
@ -11,12 +11,6 @@ pub trait RTPBasePayloadExtManual: 'static {
|
|||
#[doc(alias = "gst_rtp_base_payload_set_outcaps")]
|
||||
fn set_outcaps(&self, s: Option<&gst::StructureRef>) -> Result<(), glib::error::BoolError>;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_payload_push")]
|
||||
fn push(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_rtp_base_payload_push_list")]
|
||||
fn push_list(&self, list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
fn sink_pad(&self) -> &gst::Pad;
|
||||
|
||||
fn src_pad(&self) -> &gst::Pad;
|
||||
|
@ -39,24 +33,6 @@ impl<O: IsA<RTPBasePayload>> RTPBasePayloadExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn push(&self, buffer: gst::Buffer) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_payload_push(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push_list(&self, list: gst::BufferList) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_rtp_base_payload_push_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn sink_pad(&self) -> &gst::Pad {
|
||||
unsafe {
|
||||
let elt = &*(self.as_ptr() as *const ffi::GstRTPBasePayload);
|
||||
|
|
|
@ -54,7 +54,6 @@ manual = [
|
|||
"Gst.BufferPoolAcquireParams",
|
||||
"Gst.ClockTimeDiff",
|
||||
"Gst.Element",
|
||||
"Gst.FlowReturn",
|
||||
"Gst.Format",
|
||||
"Gst.Memory",
|
||||
"Gst.Message",
|
||||
|
@ -94,13 +93,22 @@ name = "Gst.Event"
|
|||
status = "manual"
|
||||
ref_mode = "ref"
|
||||
|
||||
[[object]]
|
||||
name = "Gst.FlowReturn"
|
||||
status = "manual"
|
||||
must_use = true
|
||||
[object.conversion_type]
|
||||
variant = "Result"
|
||||
ok_type = "gst::FlowSuccess"
|
||||
err_type = "gst::FlowError"
|
||||
|
||||
[[object]]
|
||||
name = "Gst.Query"
|
||||
status = "manual"
|
||||
ref_mode = "ref"
|
||||
|
||||
[[object]]
|
||||
name = "gst.Structure"
|
||||
name = "Gst.Structure"
|
||||
status = "manual"
|
||||
ref_mode = "ref"
|
||||
|
||||
|
@ -201,11 +209,9 @@ status = "generate"
|
|||
|
||||
[[object.function]]
|
||||
name = "send_event"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "send_event_simple"
|
||||
manual = true
|
||||
[[object.function.parameter]]
|
||||
name = "structure"
|
||||
move = true
|
||||
|
||||
[[object.function]]
|
||||
name = "send_key_event"
|
||||
|
@ -439,18 +445,6 @@ manual_traits = ["VideoDecoderExtManual"]
|
|||
name = "allocate_output_frame_with_params"
|
||||
ignore = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_frame"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "release_frame"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "drop_frame"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_subframe"
|
||||
manual = true
|
||||
|
@ -529,10 +523,6 @@ manual_traits = ["VideoEncoderExtManual"]
|
|||
name = "allocate_output_frame_with_params"
|
||||
ignore = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_frame"
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "finish_subframe"
|
||||
manual = true
|
||||
|
|
|
@ -36,6 +36,14 @@ pub trait NavigationExt: 'static {
|
|||
#[doc(alias = "gst_navigation_send_command")]
|
||||
fn send_command(&self, command: NavigationCommand);
|
||||
|
||||
#[doc(alias = "gst_navigation_send_event")]
|
||||
fn send_event(&self, structure: gst::Structure);
|
||||
|
||||
#[cfg(any(feature = "v1_22", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_22")))]
|
||||
#[doc(alias = "gst_navigation_send_event_simple")]
|
||||
fn send_event_simple(&self, event: gst::Event);
|
||||
|
||||
#[doc(alias = "gst_navigation_send_key_event")]
|
||||
fn send_key_event(&self, event: &str, key: &str);
|
||||
|
||||
|
@ -55,6 +63,26 @@ impl<O: IsA<Navigation>> NavigationExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn send_event(&self, structure: gst::Structure) {
|
||||
unsafe {
|
||||
ffi::gst_navigation_send_event(
|
||||
self.as_ref().to_glib_none().0,
|
||||
structure.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_22", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_22")))]
|
||||
fn send_event_simple(&self, event: gst::Event) {
|
||||
unsafe {
|
||||
ffi::gst_navigation_send_event_simple(
|
||||
self.as_ref().to_glib_none().0,
|
||||
event.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn send_key_event(&self, event: &str, key: &str) {
|
||||
unsafe {
|
||||
ffi::gst_navigation_send_key_event(
|
||||
|
|
|
@ -38,6 +38,12 @@ pub trait VideoDecoderExt: 'static {
|
|||
#[doc(alias = "gst_video_decoder_allocate_output_buffer")]
|
||||
fn allocate_output_buffer(&self) -> Result<gst::Buffer, glib::BoolError>;
|
||||
|
||||
#[doc(alias = "gst_video_decoder_drop_frame")]
|
||||
fn drop_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_video_decoder_finish_frame")]
|
||||
fn finish_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_video_decoder_get_buffer_pool")]
|
||||
#[doc(alias = "get_buffer_pool")]
|
||||
fn buffer_pool(&self) -> Option<gst::BufferPool>;
|
||||
|
@ -83,7 +89,7 @@ pub trait VideoDecoderExt: 'static {
|
|||
fn is_subframe_mode(&self) -> bool;
|
||||
|
||||
#[doc(alias = "gst_video_decoder_have_frame")]
|
||||
fn have_frame(&self) -> gst::FlowReturn;
|
||||
fn have_frame(&self) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_video_decoder_merge_tags")]
|
||||
fn merge_tags(&self, tags: Option<&gst::TagList>, mode: gst::TagMergeMode);
|
||||
|
@ -91,6 +97,9 @@ pub trait VideoDecoderExt: 'static {
|
|||
#[doc(alias = "gst_video_decoder_proxy_getcaps")]
|
||||
fn proxy_getcaps(&self, caps: Option<&gst::Caps>, filter: Option<&gst::Caps>) -> gst::Caps;
|
||||
|
||||
#[doc(alias = "gst_video_decoder_release_frame")]
|
||||
fn release_frame(&self, frame: VideoCodecFrame);
|
||||
|
||||
#[cfg(any(feature = "v1_20", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_20")))]
|
||||
#[doc(alias = "gst_video_decoder_request_sync_point")]
|
||||
|
@ -234,6 +243,24 @@ impl<O: IsA<VideoDecoder>> VideoDecoderExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn drop_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_video_decoder_drop_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn finish_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_video_decoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn buffer_pool(&self) -> Option<gst::BufferPool> {
|
||||
unsafe {
|
||||
from_glib_full(ffi::gst_video_decoder_get_buffer_pool(
|
||||
|
@ -303,9 +330,9 @@ impl<O: IsA<VideoDecoder>> VideoDecoderExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn have_frame(&self) -> gst::FlowReturn {
|
||||
fn have_frame(&self) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
from_glib(ffi::gst_video_decoder_have_frame(
|
||||
try_from_glib(ffi::gst_video_decoder_have_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
))
|
||||
}
|
||||
|
@ -331,6 +358,15 @@ impl<O: IsA<VideoDecoder>> VideoDecoderExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn release_frame(&self, frame: VideoCodecFrame) {
|
||||
unsafe {
|
||||
ffi::gst_video_decoder_release_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_20", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_20")))]
|
||||
fn request_sync_point(
|
||||
|
|
|
@ -31,6 +31,9 @@ pub trait VideoEncoderExt: 'static {
|
|||
#[doc(alias = "gst_video_encoder_allocate_output_buffer")]
|
||||
fn allocate_output_buffer(&self, size: usize) -> gst::Buffer;
|
||||
|
||||
#[doc(alias = "gst_video_encoder_finish_frame")]
|
||||
fn finish_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[doc(alias = "gst_video_encoder_get_max_encode_time")]
|
||||
#[doc(alias = "get_max_encode_time")]
|
||||
fn max_encode_time(&self, frame: &VideoCodecFrame) -> gst::ClockTimeDiff;
|
||||
|
@ -87,6 +90,15 @@ impl<O: IsA<VideoEncoder>> VideoEncoderExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn finish_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_video_encoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn max_encode_time(&self, frame: &VideoCodecFrame) -> gst::ClockTimeDiff {
|
||||
unsafe {
|
||||
ffi::gst_video_encoder_get_max_encode_time(
|
||||
|
|
|
@ -41,8 +41,6 @@ mod enums;
|
|||
#[cfg(feature = "serde")]
|
||||
mod flag_serde;
|
||||
|
||||
mod navigation;
|
||||
|
||||
mod caps;
|
||||
pub use crate::caps::VideoCapsBuilder;
|
||||
|
||||
|
@ -159,7 +157,7 @@ pub mod prelude {
|
|||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_16")))]
|
||||
pub use crate::video_aggregator_pad::VideoAggregatorPadExtManual;
|
||||
pub use crate::{
|
||||
auto::traits::*, navigation::NavigationExtManual, video_buffer_pool::VideoBufferPoolConfig,
|
||||
auto::traits::*, video_buffer_pool::VideoBufferPoolConfig,
|
||||
video_decoder::VideoDecoderExtManual, video_encoder::VideoEncoderExtManual,
|
||||
video_format::VideoFormatIteratorExt, video_frame::VideoBufferExt,
|
||||
video_overlay::VideoOverlayExtManual,
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
use glib::{
|
||||
object::IsA,
|
||||
translate::{IntoGlibPtr, ToGlibPtr},
|
||||
};
|
||||
|
||||
use crate::auto::Navigation;
|
||||
|
||||
pub trait NavigationExtManual: 'static {
|
||||
#[doc(alias = "gst_navigation_send_event")]
|
||||
fn send_event(&self, structure: gst::Structure);
|
||||
|
||||
#[cfg(any(feature = "v1_22", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_22")))]
|
||||
#[doc(alias = "gst_navigation_send_event_simple")]
|
||||
fn send_event_simple(&self, event: gst::Event);
|
||||
}
|
||||
|
||||
impl<O: IsA<Navigation>> NavigationExtManual for O {
|
||||
fn send_event(&self, structure: gst::Structure) {
|
||||
unsafe {
|
||||
ffi::gst_navigation_send_event(
|
||||
self.as_ref().to_glib_none().0,
|
||||
structure.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_22", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_22")))]
|
||||
fn send_event_simple(&self, event: gst::Event) {
|
||||
unsafe {
|
||||
ffi::gst_navigation_send_event_simple(
|
||||
self.as_ref().to_glib_none().0,
|
||||
event.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -45,10 +45,6 @@ pub trait VideoDecoderExtManual: 'static {
|
|||
#[doc(alias = "get_allocator")]
|
||||
fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams);
|
||||
|
||||
fn finish_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
fn release_frame(&self, frame: VideoCodecFrame);
|
||||
fn drop_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_20", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_20")))]
|
||||
#[doc(alias = "gst_video_decoder_finish_subframe")]
|
||||
|
@ -146,36 +142,6 @@ impl<O: IsA<VideoDecoder>> VideoDecoderExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_video_decoder_finish_frame")]
|
||||
fn finish_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_video_decoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_video_decoder_release_frame")]
|
||||
fn release_frame(&self, frame: VideoCodecFrame) {
|
||||
unsafe {
|
||||
ffi::gst_video_decoder_release_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_video_decoder_drop_frame")]
|
||||
fn drop_frame(&self, frame: VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_video_decoder_drop_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_video_decoder_get_latency")]
|
||||
fn latency(&self) -> (gst::ClockTime, Option<gst::ClockTime>) {
|
||||
let mut min_latency = gst::ffi::GST_CLOCK_TIME_NONE;
|
||||
|
|
|
@ -32,12 +32,6 @@ pub trait VideoEncoderExtManual: 'static {
|
|||
#[doc(alias = "gst_video_encoder_get_allocator")]
|
||||
fn allocator(&self) -> (Option<gst::Allocator>, gst::AllocationParams);
|
||||
|
||||
#[doc(alias = "gst_video_encoder_finish_frame")]
|
||||
fn finish_frame(
|
||||
&self,
|
||||
frame: Option<VideoCodecFrame>,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError>;
|
||||
|
||||
#[cfg(any(feature = "v1_18", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_18")))]
|
||||
#[doc(alias = "gst_video_encoder_finish_subframe")]
|
||||
|
@ -105,18 +99,6 @@ impl<O: IsA<VideoEncoder>> VideoEncoderExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn finish_frame(
|
||||
&self,
|
||||
frame: Option<VideoCodecFrame>,
|
||||
) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_video_encoder_finish_frame(
|
||||
self.as_ref().to_glib_none().0,
|
||||
frame.map(|f| f.into_glib_ptr()).unwrap_or(ptr::null_mut()),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_18", feature = "dox"))]
|
||||
#[cfg_attr(feature = "dox", doc(cfg(feature = "v1_18")))]
|
||||
fn finish_subframe(&self, frame: &VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError> {
|
||||
|
|
|
@ -532,11 +532,6 @@ manual_traits = ["BufferPoolExtManual"]
|
|||
# Params and return value
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "release_buffer"
|
||||
# Takes ownership
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "set_active"
|
||||
[object.function.return]
|
||||
|
@ -605,8 +600,8 @@ final_type = true
|
|||
|
||||
[[object.function]]
|
||||
name = "post"
|
||||
# transfer ownership of the message
|
||||
manual = true
|
||||
[object.function.return]
|
||||
bool_return_is_error = "Failed to post message"
|
||||
|
||||
[[object]]
|
||||
name = "Gst.Caps"
|
||||
|
@ -1085,8 +1080,8 @@ manual_traits = ["ElementExtManual"]
|
|||
|
||||
[[object.function]]
|
||||
name = "post_message"
|
||||
# takes ownership of message
|
||||
manual = true
|
||||
[object.function.return]
|
||||
bool_return_is_error = "Failed to post message"
|
||||
|
||||
[[object.function]]
|
||||
name = "add_pad"
|
||||
|
@ -1604,26 +1599,6 @@ manual_traits = ["PadExtManual"]
|
|||
# Don't use a ulong
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "chain"
|
||||
# Move buffer
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push"
|
||||
# Move buffer
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "chain_list"
|
||||
# Move buffer
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "push_list"
|
||||
# Move buffer
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "pull_range"
|
||||
# Buffer can be NULL
|
||||
|
@ -1926,11 +1901,6 @@ final_type = true
|
|||
# useless and unsafe
|
||||
ignore = true
|
||||
|
||||
[[object.function]]
|
||||
name = "set_cache_data"
|
||||
# pass by value
|
||||
manual = true
|
||||
|
||||
[[object.function]]
|
||||
name = "get_cache_data"
|
||||
# structure ref
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
|
||||
// DO NOT EDIT
|
||||
|
||||
use crate::Object;
|
||||
use crate::{Buffer, Object};
|
||||
use glib::{prelude::*, translate::*};
|
||||
|
||||
glib::wrapper! {
|
||||
|
@ -45,6 +45,9 @@ pub trait BufferPoolExt: 'static {
|
|||
#[doc(alias = "gst_buffer_pool_is_active")]
|
||||
fn is_active(&self) -> bool;
|
||||
|
||||
#[doc(alias = "gst_buffer_pool_release_buffer")]
|
||||
fn release_buffer(&self, buffer: Buffer);
|
||||
|
||||
#[doc(alias = "gst_buffer_pool_set_active")]
|
||||
fn set_active(&self, active: bool) -> Result<(), glib::error::BoolError>;
|
||||
|
||||
|
@ -78,6 +81,15 @@ impl<O: IsA<BufferPool>> BufferPoolExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn release_buffer(&self, buffer: Buffer) {
|
||||
unsafe {
|
||||
ffi::gst_buffer_pool_release_buffer(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn set_active(&self, active: bool) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib::result_from_gboolean!(
|
||||
|
|
|
@ -74,6 +74,16 @@ impl Bus {
|
|||
unsafe { from_glib_full(ffi::gst_bus_pop(self.to_glib_none().0)) }
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_bus_post")]
|
||||
pub fn post(&self, message: Message) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib::result_from_gboolean!(
|
||||
ffi::gst_bus_post(self.to_glib_none().0, message.into_glib_ptr()),
|
||||
"Failed to post message"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_bus_remove_signal_watch")]
|
||||
pub fn remove_signal_watch(&self) {
|
||||
unsafe {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#![allow(deprecated)]
|
||||
|
||||
use crate::{
|
||||
Bus, Caps, Clock, ClockTime, Context, ElementFactory, Object, Pad, PadTemplate, State,
|
||||
Bus, Caps, Clock, ClockTime, Context, ElementFactory, Message, Object, Pad, PadTemplate, State,
|
||||
StateChange, StateChangeError, StateChangeReturn, StateChangeSuccess, URIType,
|
||||
};
|
||||
use glib::{
|
||||
|
@ -139,6 +139,9 @@ pub trait ElementExt: 'static {
|
|||
#[doc(alias = "gst_element_no_more_pads")]
|
||||
fn no_more_pads(&self);
|
||||
|
||||
#[doc(alias = "gst_element_post_message")]
|
||||
fn post_message(&self, message: Message) -> Result<(), glib::error::BoolError>;
|
||||
|
||||
#[doc(alias = "gst_element_provide_clock")]
|
||||
fn provide_clock(&self) -> Option<Clock>;
|
||||
|
||||
|
@ -437,6 +440,18 @@ impl<O: IsA<Element>> ElementExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn post_message(&self, message: Message) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib::result_from_gboolean!(
|
||||
ffi::gst_element_post_message(
|
||||
self.as_ref().to_glib_none().0,
|
||||
message.into_glib_ptr()
|
||||
),
|
||||
"Failed to post message"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn provide_clock(&self) -> Option<Clock> {
|
||||
unsafe {
|
||||
from_glib_full(ffi::gst_element_provide_clock(
|
||||
|
|
|
@ -4,8 +4,8 @@
|
|||
// DO NOT EDIT
|
||||
|
||||
use crate::{
|
||||
Caps, Element, Event, FlowError, FlowSuccess, Object, PadDirection, PadLinkCheck, PadLinkError,
|
||||
PadLinkSuccess, PadMode, PadTemplate, Stream, TaskState,
|
||||
Buffer, BufferList, Caps, Element, Event, FlowError, FlowSuccess, Object, PadDirection,
|
||||
PadLinkCheck, PadLinkError, PadLinkSuccess, PadMode, PadTemplate, Stream, TaskState,
|
||||
};
|
||||
use glib::{
|
||||
prelude::*,
|
||||
|
@ -37,6 +37,12 @@ pub trait PadExt: 'static {
|
|||
#[doc(alias = "gst_pad_can_link")]
|
||||
fn can_link(&self, sinkpad: &impl IsA<Pad>) -> bool;
|
||||
|
||||
#[doc(alias = "gst_pad_chain")]
|
||||
fn chain(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>;
|
||||
|
||||
#[doc(alias = "gst_pad_chain_list")]
|
||||
fn chain_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError>;
|
||||
|
||||
#[doc(alias = "gst_pad_check_reconfigure")]
|
||||
fn check_reconfigure(&self) -> bool;
|
||||
|
||||
|
@ -172,6 +178,12 @@ pub trait PadExt: 'static {
|
|||
#[doc(alias = "gst_pad_peer_query_caps")]
|
||||
fn peer_query_caps(&self, filter: Option<&Caps>) -> Caps;
|
||||
|
||||
#[doc(alias = "gst_pad_push")]
|
||||
fn push(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>;
|
||||
|
||||
#[doc(alias = "gst_pad_push_list")]
|
||||
fn push_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError>;
|
||||
|
||||
#[doc(alias = "gst_pad_query_accept_caps")]
|
||||
fn query_accept_caps(&self, caps: &Caps) -> bool;
|
||||
|
||||
|
@ -238,6 +250,24 @@ impl<O: IsA<Pad>> PadExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn chain(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_chain(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn chain_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_chain_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn check_reconfigure(&self) -> bool {
|
||||
unsafe {
|
||||
from_glib(ffi::gst_pad_check_reconfigure(
|
||||
|
@ -501,6 +531,24 @@ impl<O: IsA<Pad>> PadExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn push(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_push(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_push_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn query_accept_caps(&self, caps: &Caps) -> bool {
|
||||
unsafe {
|
||||
from_glib(ffi::gst_pad_query_accept_caps(
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
|
||||
// DO NOT EDIT
|
||||
|
||||
use crate::{Object, PluginDependencyFlags};
|
||||
use glib::translate::*;
|
||||
use crate::{Object, PluginDependencyFlags, Structure};
|
||||
use glib::{prelude::*, translate::*};
|
||||
use std::{fmt, ptr};
|
||||
|
||||
glib::wrapper! {
|
||||
|
@ -126,6 +126,13 @@ impl Plugin {
|
|||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_plugin_set_cache_data")]
|
||||
pub fn set_cache_data(&self, cache_data: Structure) {
|
||||
unsafe {
|
||||
ffi::gst_plugin_set_cache_data(self.to_glib_none().0, cache_data.into_glib_ptr());
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_plugin_load_by_name")]
|
||||
pub fn load_by_name(name: &str) -> Result<Plugin, glib::BoolError> {
|
||||
assert_initialized_main_thread!();
|
||||
|
|
|
@ -344,8 +344,6 @@ pub trait BufferPoolExtManual: 'static {
|
|||
&self,
|
||||
params: Option<&BufferPoolAcquireParams>,
|
||||
) -> Result<crate::Buffer, crate::FlowError>;
|
||||
#[doc(alias = "gst_buffer_pool_release_buffer")]
|
||||
fn release_buffer(&self, buffer: crate::Buffer);
|
||||
}
|
||||
|
||||
impl<O: IsA<BufferPool>> BufferPoolExtManual for O {
|
||||
|
@ -393,15 +391,6 @@ impl<O: IsA<BufferPool>> BufferPoolExtManual for O {
|
|||
.map(|_| from_glib_full(buffer))
|
||||
}
|
||||
}
|
||||
|
||||
fn release_buffer(&self, buffer: crate::Buffer) {
|
||||
unsafe {
|
||||
ffi::gst_buffer_pool_release_buffer(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
|
@ -304,16 +304,6 @@ impl Bus {
|
|||
future::ready(message_types.contains(&message_type))
|
||||
})
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_bus_post")]
|
||||
pub fn post(&self, message: crate::Message) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib::result_from_gboolean!(
|
||||
ffi::gst_bus_post(self.to_glib_none().0, message.into_glib_ptr()),
|
||||
"Failed to post message"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
|
|
|
@ -155,8 +155,6 @@ pub trait ElementExtManual: 'static {
|
|||
structure: crate::Structure,
|
||||
);
|
||||
|
||||
#[doc(alias = "gst_element_post_message")]
|
||||
fn post_message(&self, message: crate::Message) -> Result<(), glib::error::BoolError>;
|
||||
fn post_error_message(&self, msg: crate::ErrorMessage);
|
||||
|
||||
#[doc(alias = "gst_element_iterate_pads")]
|
||||
|
@ -430,18 +428,6 @@ impl<O: IsA<Element>> ElementExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn post_message(&self, message: crate::Message) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib::result_from_gboolean!(
|
||||
ffi::gst_element_post_message(
|
||||
self.as_ref().to_glib_none().0,
|
||||
message.into_glib_ptr()
|
||||
),
|
||||
"Failed to post message"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn post_error_message(&self, msg: crate::ErrorMessage) {
|
||||
let crate::ErrorMessage {
|
||||
error_domain,
|
||||
|
|
|
@ -11,9 +11,8 @@ use std::{
|
|||
use glib::{ffi::gpointer, prelude::*, translate::*};
|
||||
|
||||
use crate::{
|
||||
element::ElementExtManual,
|
||||
format::{FormattedValue, SpecificFormattedValueFullRange, SpecificFormattedValueIntrinsic},
|
||||
prelude::PadExt,
|
||||
prelude::*,
|
||||
Buffer, BufferList, Event, FlowError, FlowReturn, FlowSuccess, Format, GenericFormattedValue,
|
||||
LoggableError, Pad, PadFlags, PadProbeReturn, PadProbeType, Query, QueryRef, StaticPadTemplate,
|
||||
};
|
||||
|
@ -100,16 +99,6 @@ pub trait PadExtManual: 'static {
|
|||
#[doc(alias = "gst_pad_remove_probe")]
|
||||
fn remove_probe(&self, id: PadProbeId);
|
||||
|
||||
#[doc(alias = "gst_pad_chain")]
|
||||
fn chain(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>;
|
||||
#[doc(alias = "gst_pad_push")]
|
||||
fn push(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError>;
|
||||
|
||||
#[doc(alias = "gst_pad_chain_list")]
|
||||
fn chain_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError>;
|
||||
#[doc(alias = "gst_pad_push_list")]
|
||||
fn push_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError>;
|
||||
|
||||
#[doc(alias = "gst_pad_pull_range")]
|
||||
fn pull_range(&self, offset: u64, size: u32) -> Result<Buffer, FlowError>;
|
||||
fn pull_range_fill(
|
||||
|
@ -341,42 +330,6 @@ impl<O: IsA<Pad>> PadExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn chain(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_chain(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push(&self, buffer: Buffer) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_push(
|
||||
self.as_ref().to_glib_none().0,
|
||||
buffer.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn chain_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_chain_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn push_list(&self, list: BufferList) -> Result<FlowSuccess, FlowError> {
|
||||
unsafe {
|
||||
try_from_glib(ffi::gst_pad_push_list(
|
||||
self.as_ref().to_glib_none().0,
|
||||
list.into_glib_ptr(),
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
fn range(&self, offset: u64, size: u32) -> Result<Buffer, FlowError> {
|
||||
unsafe {
|
||||
let mut buffer = ptr::null_mut();
|
||||
|
@ -1918,7 +1871,6 @@ mod tests {
|
|||
use std::sync::{atomic::AtomicUsize, mpsc::channel, Arc, Mutex};
|
||||
|
||||
use super::*;
|
||||
use crate::prelude::*;
|
||||
|
||||
#[test]
|
||||
fn test_event_chain_functions() {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
use glib::{prelude::*, translate::*};
|
||||
|
||||
use crate::{Plugin, PluginFlags, Structure, StructureRef};
|
||||
use crate::{Plugin, PluginFlags, StructureRef};
|
||||
|
||||
impl Plugin {
|
||||
#[doc(alias = "get_cache_data")]
|
||||
|
@ -17,13 +17,6 @@ impl Plugin {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(alias = "gst_plugin_set_cache_data")]
|
||||
pub fn set_cache_data(&self, cache_data: Structure) {
|
||||
unsafe {
|
||||
ffi::gst_plugin_set_cache_data(self.to_glib_none().0, cache_data.into_glib_ptr());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub trait GstPluginExtManual: 'static {
|
||||
|
|
Loading…
Reference in a new issue