Regenerate

This commit is contained in:
Vivia Nikolaidou 2020-04-30 19:51:41 +03:00 committed by Sebastian Dröge
parent 2c254c633b
commit ec4a43be89
66 changed files with 1570 additions and 166 deletions

2
gir

@ -1 +1 @@
Subproject commit 2abca1147143e5f5986f14bf6bc794e438bef193 Subproject commit 4c1faa04ddb97fdd11a090509a85632b03ebdaf6

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -39,6 +39,9 @@ pub trait AggregatorExt: 'static {
#[cfg(any(feature = "v1_14", feature = "dox"))] #[cfg(any(feature = "v1_14", feature = "dox"))]
fn get_latency(&self) -> gst::ClockTime; fn get_latency(&self) -> gst::ClockTime;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn negotiate(&self) -> bool;
#[cfg(any(feature = "v1_14", feature = "dox"))] #[cfg(any(feature = "v1_14", feature = "dox"))]
fn set_latency(&self, min_latency: gst::ClockTime, max_latency: gst::ClockTime); fn set_latency(&self, min_latency: gst::ClockTime, max_latency: gst::ClockTime);
@ -48,6 +51,9 @@ pub trait AggregatorExt: 'static {
#[cfg(any(feature = "v1_16", feature = "dox"))] #[cfg(any(feature = "v1_16", feature = "dox"))]
fn simple_get_next_time(&self) -> gst::ClockTime; fn simple_get_next_time(&self) -> gst::ClockTime;
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn update_segment(&self, segment: /*Ignored*/&mut gst::Segment);
fn get_property_start_time(&self) -> u64; fn get_property_start_time(&self) -> u64;
fn set_property_start_time(&self, start_time: u64); fn set_property_start_time(&self, start_time: u64);
@ -88,6 +94,15 @@ impl<O: IsA<Aggregator>> AggregatorExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn negotiate(&self) -> bool {
unsafe {
from_glib(gst_base_sys::gst_aggregator_negotiate(
self.as_ref().to_glib_none().0,
))
}
}
#[cfg(any(feature = "v1_14", feature = "dox"))] #[cfg(any(feature = "v1_14", feature = "dox"))]
fn set_latency(&self, min_latency: gst::ClockTime, max_latency: gst::ClockTime) { fn set_latency(&self, min_latency: gst::ClockTime, max_latency: gst::ClockTime) {
unsafe { unsafe {
@ -118,6 +133,11 @@ impl<O: IsA<Aggregator>> AggregatorExt for O {
} }
} }
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn update_segment(&self, segment: /*Ignored*/&mut gst::Segment) {
// unsafe { TODO: call gst_base_sys:gst_aggregator_update_segment() }
//}
fn get_property_start_time(&self) -> u64 { fn get_property_start_time(&self) -> u64 {
unsafe { unsafe {
let mut value = Value::from_type(<u64 as StaticType>::static_type()); let mut value = Value::from_type(<u64 as StaticType>::static_type());

View file

@ -50,6 +50,9 @@ pub trait BaseSinkExt: 'static {
fn get_render_delay(&self) -> gst::ClockTime; fn get_render_delay(&self) -> gst::ClockTime;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_stats(&self) -> Option<gst::Structure>;
fn get_sync(&self) -> bool; fn get_sync(&self) -> bool;
fn get_throttle_time(&self) -> u64; fn get_throttle_time(&self) -> u64;
@ -146,6 +149,12 @@ pub trait BaseSinkExt: 'static {
f: F, f: F,
) -> SignalHandlerId; ) -> SignalHandlerId;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_stats_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId;
fn connect_property_sync_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_sync_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -221,6 +230,15 @@ impl<O: IsA<BaseSink>> BaseSinkExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_stats(&self) -> Option<gst::Structure> {
unsafe {
from_glib_full(gst_base_sys::gst_base_sink_get_stats(
self.as_ref().to_glib_none().0,
))
}
}
fn get_sync(&self) -> bool { fn get_sync(&self) -> bool {
unsafe { unsafe {
from_glib(gst_base_sys::gst_base_sink_get_sync( from_glib(gst_base_sys::gst_base_sink_get_sync(
@ -684,6 +702,34 @@ impl<O: IsA<BaseSink>> BaseSinkExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_stats_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_stats_trampoline<P, F: Fn(&P) + Send + Sync + 'static>(
this: *mut gst_base_sys::GstBaseSink,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<BaseSink>,
{
let f: &F = &*(f as *const F);
f(&BaseSink::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::stats\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_stats_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_property_sync_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_sync_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,

View file

@ -43,6 +43,9 @@ pub trait BaseSrcExt: 'static {
fn is_live(&self) -> bool; fn is_live(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn negotiate(&self) -> bool;
fn new_seamless_segment(&self, start: i64, stop: i64, time: i64) -> bool; fn new_seamless_segment(&self, start: i64, stop: i64, time: i64) -> bool;
fn set_async(&self, async: bool); fn set_async(&self, async: bool);
@ -131,6 +134,15 @@ impl<O: IsA<BaseSrc>> BaseSrcExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn negotiate(&self) -> bool {
unsafe {
from_glib(gst_base_sys::gst_base_src_negotiate(
self.as_ref().to_glib_none().0,
))
}
}
fn new_seamless_segment(&self, start: i64, stop: i64, time: i64) -> bool { fn new_seamless_segment(&self, start: i64, stop: i64, time: i64) -> bool {
unsafe { unsafe {
from_glib(gst_base_sys::gst_base_src_new_seamless_segment( from_glib(gst_base_sys::gst_base_src_new_seamless_segment(

View file

@ -41,6 +41,9 @@ pub trait BaseTransformExt: 'static {
fn is_qos_enabled(&self) -> bool; fn is_qos_enabled(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn reconfigure(&self) -> bool;
fn reconfigure_sink(&self); fn reconfigure_sink(&self);
fn reconfigure_src(&self); fn reconfigure_src(&self);
@ -106,6 +109,15 @@ impl<O: IsA<BaseTransform>> BaseTransformExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn reconfigure(&self) -> bool {
unsafe {
from_glib(gst_base_sys::gst_base_transform_reconfigure(
self.as_ref().to_glib_none().0,
))
}
}
fn reconfigure_sink(&self) { fn reconfigure_sink(&self) {
unsafe { unsafe {
gst_base_sys::gst_base_transform_reconfigure_sink(self.as_ref().to_glib_none().0); gst_base_sys::gst_base_transform_reconfigure_sink(self.as_ref().to_glib_none().0);

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -70,6 +70,11 @@ impl TestClock {
// unsafe { TODO: call gst_check_sys:gst_test_clock_peek_next_pending_id() } // unsafe { TODO: call gst_check_sys:gst_test_clock_peek_next_pending_id() }
//} //}
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//pub fn process_id(&self, pending_id: /*Ignored*/gst::ClockID) -> bool {
// unsafe { TODO: call gst_check_sys:gst_test_clock_process_id() }
//}
//pub fn process_id_list(&self, pending_list: /*Ignored*/&[&gst::ClockID]) -> u32 { //pub fn process_id_list(&self, pending_list: /*Ignored*/&[&gst::ClockID]) -> u32 {
// unsafe { TODO: call gst_check_sys:gst_test_clock_process_id_list() } // unsafe { TODO: call gst_check_sys:gst_test_clock_process_id_list() }
//} //}

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -0,0 +1,8 @@
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT
#[allow(unused_imports)]
use auto::*;
pub type FrameNumber = i64;

View file

@ -11,9 +11,7 @@ use glib::object::IsA;
use glib::signal::connect_raw; use glib::signal::connect_raw;
use glib::signal::SignalHandlerId; use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
use glib::value::SetValueOptional;
use glib::GString; use glib::GString;
use glib::Value;
use glib_sys; use glib_sys;
use gobject_sys; use gobject_sys;
use std::boxed::Box as Box_; use std::boxed::Box as Box_;
@ -31,7 +29,7 @@ glib_wrapper! {
} }
impl Asset { impl Asset {
pub fn needs_reload(extractable_type: glib::types::Type, id: &str) -> bool { pub fn needs_reload(extractable_type: glib::types::Type, id: Option<&str>) -> bool {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {
from_glib(ges_sys::ges_asset_needs_reload( from_glib(ges_sys::ges_asset_needs_reload(
@ -66,7 +64,7 @@ impl Asset {
Q: FnOnce(Result<Asset, glib::Error>) + Send + 'static, Q: FnOnce(Result<Asset, glib::Error>) + Send + 'static,
>( >(
extractable_type: glib::types::Type, extractable_type: glib::types::Type,
id: &str, id: Option<&str>,
cancellable: Option<&P>, cancellable: Option<&P>,
callback: Q, callback: Q,
) { ) {
@ -103,15 +101,20 @@ impl Asset {
pub fn request_async_future( pub fn request_async_future(
extractable_type: glib::types::Type, extractable_type: glib::types::Type,
id: &str, id: Option<&str>,
) -> Pin<Box_<dyn std::future::Future<Output = Result<Asset, glib::Error>> + 'static>> { ) -> Pin<Box_<dyn std::future::Future<Output = Result<Asset, glib::Error>> + 'static>> {
skip_assert_initialized!(); skip_assert_initialized!();
let id = String::from(id); let id = id.map(ToOwned::to_owned);
Box_::pin(gio::GioFuture::new(&(), move |_obj, send| { Box_::pin(gio::GioFuture::new(&(), move |_obj, send| {
let cancellable = gio::Cancellable::new(); let cancellable = gio::Cancellable::new();
Self::request_async(extractable_type, &id, Some(&cancellable), move |res| { Self::request_async(
send.resolve(res); extractable_type,
}); id.as_ref().map(::std::borrow::Borrow::borrow),
Some(&cancellable),
move |res| {
send.resolve(res);
},
);
cancellable cancellable
})) }))
@ -121,7 +124,7 @@ impl Asset {
pub const NONE_ASSET: Option<&Asset> = None; pub const NONE_ASSET: Option<&Asset> = None;
pub trait AssetExt: 'static { pub trait AssetExt: 'static {
fn extract(&self) -> Result<Option<Extractable>, glib::Error>; fn extract(&self) -> Result<Extractable, glib::Error>;
fn get_error(&self) -> Option<glib::Error>; fn get_error(&self) -> Option<glib::Error>;
@ -139,8 +142,6 @@ pub trait AssetExt: 'static {
fn unproxy<P: IsA<Asset>>(&self, proxy: &P) -> Result<(), glib::error::BoolError>; fn unproxy<P: IsA<Asset>>(&self, proxy: &P) -> Result<(), glib::error::BoolError>;
fn set_property_proxy_target<P: IsA<Asset> + SetValueOptional>(&self, proxy_target: Option<&P>);
fn connect_property_proxy_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_proxy_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_property_proxy_target_notify<F: Fn(&Self) + 'static>(&self, f: F) fn connect_property_proxy_target_notify<F: Fn(&Self) + 'static>(&self, f: F)
@ -148,7 +149,7 @@ pub trait AssetExt: 'static {
} }
impl<O: IsA<Asset>> AssetExt for O { impl<O: IsA<Asset>> AssetExt for O {
fn extract(&self) -> Result<Option<Extractable>, glib::Error> { fn extract(&self) -> Result<Extractable, glib::Error> {
unsafe { unsafe {
let mut error = ptr::null_mut(); let mut error = ptr::null_mut();
let ret = ges_sys::ges_asset_extract(self.as_ref().to_glib_none().0, &mut error); let ret = ges_sys::ges_asset_extract(self.as_ref().to_glib_none().0, &mut error);
@ -220,19 +221,6 @@ impl<O: IsA<Asset>> AssetExt for O {
} }
} }
fn set_property_proxy_target<P: IsA<Asset> + SetValueOptional>(
&self,
proxy_target: Option<&P>,
) {
unsafe {
gobject_sys::g_object_set_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"proxy-target\0".as_ptr() as *const _,
Value::from(proxy_target).to_glib_none().0,
);
}
}
fn connect_property_proxy_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { fn connect_property_proxy_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_proxy_trampoline<P, F: Fn(&P) + 'static>( unsafe extern "C" fn notify_proxy_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESAsset, this: *mut ges_sys::GESAsset,

View file

@ -10,12 +10,15 @@ use glib::signal::connect_raw;
use glib::signal::SignalHandlerId; use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
use glib_sys; use glib_sys;
use gst;
use std::boxed::Box as Box_; use std::boxed::Box as Box_;
use std::mem::transmute; use std::mem::transmute;
use std::ptr;
use Asset; use Asset;
use BaseEffect; use BaseEffect;
use Container; use Container;
use Extractable; use Extractable;
use FrameNumber;
use Layer; use Layer;
use TimelineElement; use TimelineElement;
use Track; use Track;
@ -35,6 +38,12 @@ pub const NONE_CLIP: Option<&Clip> = None;
pub trait ClipExt: 'static { pub trait ClipExt: 'static {
fn add_asset<P: IsA<Asset>>(&self, asset: &P) -> Result<TrackElement, glib::BoolError>; fn add_asset<P: IsA<Asset>>(&self, asset: &P) -> Result<TrackElement, glib::BoolError>;
fn add_child_to_track<P: IsA<TrackElement>, Q: IsA<Track>>(
&self,
child: &P,
track: &Q,
) -> Result<TrackElement, glib::Error>;
fn find_track_element<P: IsA<Track>>( fn find_track_element<P: IsA<Track>>(
&self, &self,
track: Option<&P>, track: Option<&P>,
@ -52,6 +61,11 @@ pub trait ClipExt: 'static {
fn get_supported_formats(&self) -> TrackType; fn get_supported_formats(&self) -> TrackType;
fn get_timeline_time_from_source_frame(
&self,
frame_number: FrameNumber,
) -> Result<gst::ClockTime, glib::Error>;
fn get_top_effect_index<P: IsA<BaseEffect>>(&self, effect: &P) -> i32; fn get_top_effect_index<P: IsA<BaseEffect>>(&self, effect: &P) -> i32;
fn get_top_effect_position<P: IsA<BaseEffect>>(&self, effect: &P) -> i32; fn get_top_effect_position<P: IsA<BaseEffect>>(&self, effect: &P) -> i32;
@ -95,6 +109,27 @@ impl<O: IsA<Clip>> ClipExt for O {
} }
} }
fn add_child_to_track<P: IsA<TrackElement>, Q: IsA<Track>>(
&self,
child: &P,
track: &Q,
) -> Result<TrackElement, glib::Error> {
unsafe {
let mut error = ptr::null_mut();
let ret = ges_sys::ges_clip_add_child_to_track(
self.as_ref().to_glib_none().0,
child.as_ref().to_glib_none().0,
track.as_ref().to_glib_none().0,
&mut error,
);
if error.is_null() {
Ok(from_glib_none(ret))
} else {
Err(from_glib_full(error))
}
}
}
fn find_track_element<P: IsA<Track>>( fn find_track_element<P: IsA<Track>>(
&self, &self,
track: Option<&P>, track: Option<&P>,
@ -137,6 +172,25 @@ impl<O: IsA<Clip>> ClipExt for O {
} }
} }
fn get_timeline_time_from_source_frame(
&self,
frame_number: FrameNumber,
) -> Result<gst::ClockTime, glib::Error> {
unsafe {
let mut error = ptr::null_mut();
let ret = ges_sys::ges_clip_get_timeline_time_from_source_frame(
self.as_ref().to_glib_none().0,
frame_number,
&mut error,
);
if error.is_null() {
Ok(from_glib(ret))
} else {
Err(from_glib_full(error))
}
}
}
fn get_top_effect_index<P: IsA<BaseEffect>>(&self, effect: &P) -> i32 { fn get_top_effect_index<P: IsA<BaseEffect>>(&self, effect: &P) -> i32 {
unsafe { unsafe {
ges_sys::ges_clip_get_top_effect_index( ges_sys::ges_clip_get_top_effect_index(

View file

@ -41,6 +41,7 @@ pub const NONE_CONTAINER: Option<&Container> = None;
pub trait GESContainerExt: 'static { pub trait GESContainerExt: 'static {
fn add<P: IsA<TimelineElement>>(&self, child: &P) -> Result<(), glib::error::BoolError>; fn add<P: IsA<TimelineElement>>(&self, child: &P) -> Result<(), glib::error::BoolError>;
#[cfg_attr(feature = "v1_18", deprecated)]
fn edit( fn edit(
&self, &self,
layers: &[Layer], layers: &[Layer],

View file

@ -17,6 +17,7 @@ use Asset;
use Clip; use Clip;
use Extractable; use Extractable;
use Timeline; use Timeline;
use Track;
use TrackType; use TrackType;
glib_wrapper! { glib_wrapper! {
@ -54,6 +55,8 @@ pub trait LayerExt: 'static {
fn add_clip<P: IsA<Clip>>(&self, clip: &P) -> Result<(), glib::error::BoolError>; fn add_clip<P: IsA<Clip>>(&self, clip: &P) -> Result<(), glib::error::BoolError>;
fn get_active_for_track<P: IsA<Track>>(&self, track: &P) -> bool;
fn get_auto_transition(&self) -> bool; fn get_auto_transition(&self) -> bool;
fn get_clips(&self) -> Vec<Clip>; fn get_clips(&self) -> Vec<Clip>;
@ -70,6 +73,8 @@ pub trait LayerExt: 'static {
fn remove_clip<P: IsA<Clip>>(&self, clip: &P) -> Result<(), glib::error::BoolError>; fn remove_clip<P: IsA<Clip>>(&self, clip: &P) -> Result<(), glib::error::BoolError>;
fn set_active_for_tracks(&self, active: bool, tracks: &[Track]) -> bool;
fn set_auto_transition(&self, auto_transition: bool); fn set_auto_transition(&self, auto_transition: bool);
#[cfg_attr(feature = "v1_16", deprecated)] #[cfg_attr(feature = "v1_16", deprecated)]
@ -77,6 +82,8 @@ pub trait LayerExt: 'static {
fn set_timeline<P: IsA<Timeline>>(&self, timeline: &P); fn set_timeline<P: IsA<Timeline>>(&self, timeline: &P);
//fn connect_active_changed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId;
fn connect_clip_added<F: Fn(&Self, &Clip) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_clip_added<F: Fn(&Self, &Clip) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_clip_removed<F: Fn(&Self, &Clip) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_clip_removed<F: Fn(&Self, &Clip) + 'static>(&self, f: F) -> SignalHandlerId;
@ -124,6 +131,15 @@ impl<O: IsA<Layer>> LayerExt for O {
} }
} }
fn get_active_for_track<P: IsA<Track>>(&self, track: &P) -> bool {
unsafe {
from_glib(ges_sys::ges_layer_get_active_for_track(
self.as_ref().to_glib_none().0,
track.as_ref().to_glib_none().0,
))
}
}
fn get_auto_transition(&self) -> bool { fn get_auto_transition(&self) -> bool {
unsafe { unsafe {
from_glib(ges_sys::ges_layer_get_auto_transition( from_glib(ges_sys::ges_layer_get_auto_transition(
@ -186,6 +202,16 @@ impl<O: IsA<Layer>> LayerExt for O {
} }
} }
fn set_active_for_tracks(&self, active: bool, tracks: &[Track]) -> bool {
unsafe {
from_glib(ges_sys::ges_layer_set_active_for_tracks(
self.as_ref().to_glib_none().0,
active.to_glib(),
tracks.to_glib_none().0,
))
}
}
fn set_auto_transition(&self, auto_transition: bool) { fn set_auto_transition(&self, auto_transition: bool) {
unsafe { unsafe {
ges_sys::ges_layer_set_auto_transition( ges_sys::ges_layer_set_auto_transition(
@ -210,6 +236,10 @@ impl<O: IsA<Layer>> LayerExt for O {
} }
} }
//fn connect_active_changed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Empty ctype tracks: *.PtrArray TypeId { ns_id: 1, id: 17 }
//}
fn connect_clip_added<F: Fn(&Self, &Clip) + 'static>(&self, f: F) -> SignalHandlerId { fn connect_clip_added<F: Fn(&Self, &Clip) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn clip_added_trampoline<P, F: Fn(&P, &Clip) + 'static>( unsafe extern "C" fn clip_added_trampoline<P, F: Fn(&P, &Clip) + 'static>(
this: *mut ges_sys::GESLayer, this: *mut ges_sys::GESLayer,

View file

@ -77,6 +77,9 @@ mod flags;
pub use self::flags::PipelineFlags; pub use self::flags::PipelineFlags;
pub use self::flags::TrackType; pub use self::flags::TrackType;
mod alias;
pub use self::alias::FrameNumber;
#[doc(hidden)] #[doc(hidden)]
pub mod traits { pub mod traits {
pub use super::AssetExt; pub use super::AssetExt;

View file

@ -44,6 +44,9 @@ pub trait ProjectExt: 'static {
profile: &P, profile: &P,
) -> Result<(), glib::error::BoolError>; ) -> Result<(), glib::error::BoolError>;
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn add_formatter(&self, formatter: /*Ignored*/&Formatter);
fn create_asset(&self, id: Option<&str>, extractable_type: glib::types::Type) -> bool; fn create_asset(&self, id: Option<&str>, extractable_type: glib::types::Type) -> bool;
fn create_asset_sync( fn create_asset_sync(
@ -80,6 +83,12 @@ pub trait ProjectExt: 'static {
fn connect_asset_removed<F: Fn(&Self, &Asset) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_asset_removed<F: Fn(&Self, &Asset) + 'static>(&self, f: F) -> SignalHandlerId;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_error_loading<F: Fn(&Self, &Timeline, &glib::Error) + 'static>(
&self,
f: F,
) -> SignalHandlerId;
fn connect_error_loading_asset<F: Fn(&Self, &glib::Error, &str, glib::types::Type) + 'static>( fn connect_error_loading_asset<F: Fn(&Self, &glib::Error, &str, glib::types::Type) + 'static>(
&self, &self,
f: F, f: F,
@ -87,6 +96,9 @@ pub trait ProjectExt: 'static {
fn connect_loaded<F: Fn(&Self, &Timeline) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_loaded<F: Fn(&Self, &Timeline) + 'static>(&self, f: F) -> SignalHandlerId;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_loading<F: Fn(&Self, &Timeline) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_missing_uri<F: Fn(&Self, &glib::Error, &Asset) -> Option<GString> + 'static>( fn connect_missing_uri<F: Fn(&Self, &glib::Error, &Asset) -> Option<GString> + 'static>(
&self, &self,
f: F, f: F,
@ -118,6 +130,11 @@ impl<O: IsA<Project>> ProjectExt for O {
} }
} }
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn add_formatter(&self, formatter: /*Ignored*/&Formatter) {
// unsafe { TODO: call ges_sys:ges_project_add_formatter() }
//}
fn create_asset(&self, id: Option<&str>, extractable_type: glib::types::Type) -> bool { fn create_asset(&self, id: Option<&str>, extractable_type: glib::types::Type) -> bool {
unsafe { unsafe {
from_glib(ges_sys::ges_project_create_asset( from_glib(ges_sys::ges_project_create_asset(
@ -322,6 +339,42 @@ impl<O: IsA<Project>> ProjectExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_error_loading<F: Fn(&Self, &Timeline, &glib::Error) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn error_loading_trampoline<
P,
F: Fn(&P, &Timeline, &glib::Error) + 'static,
>(
this: *mut ges_sys::GESProject,
timeline: *mut ges_sys::GESTimeline,
error: *mut glib_sys::GError,
f: glib_sys::gpointer,
) where
P: IsA<Project>,
{
let f: &F = &*(f as *const F);
f(
&Project::from_glib_borrow(this).unsafe_cast_ref(),
&from_glib_borrow(timeline),
&from_glib_borrow(error),
)
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"error-loading\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
error_loading_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_error_loading_asset< fn connect_error_loading_asset<
F: Fn(&Self, &glib::Error, &str, glib::types::Type) + 'static, F: Fn(&Self, &glib::Error, &str, glib::types::Type) + 'static,
>( >(
@ -388,6 +441,34 @@ impl<O: IsA<Project>> ProjectExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_loading<F: Fn(&Self, &Timeline) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn loading_trampoline<P, F: Fn(&P, &Timeline) + 'static>(
this: *mut ges_sys::GESProject,
timeline: *mut ges_sys::GESTimeline,
f: glib_sys::gpointer,
) where
P: IsA<Project>,
{
let f: &F = &*(f as *const F);
f(
&Project::from_glib_borrow(this).unsafe_cast_ref(),
&from_glib_borrow(timeline),
)
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"loading\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
loading_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_missing_uri<F: Fn(&Self, &glib::Error, &Asset) -> Option<GString> + 'static>( fn connect_missing_uri<F: Fn(&Self, &glib::Error, &Asset) -> Option<GString> + 'static>(
&self, &self,
f: F, f: F,

View file

@ -16,6 +16,7 @@ use std::mem::transmute;
use std::ptr; use std::ptr;
use Asset; use Asset;
use Extractable; use Extractable;
use FrameNumber;
use Group; use Group;
use Layer; use Layer;
use TimelineElement; use TimelineElement;
@ -64,6 +65,7 @@ impl Default for Timeline {
pub const NONE_TIMELINE: Option<&Timeline> = None; pub const NONE_TIMELINE: Option<&Timeline> = None;
pub trait TimelineExt: 'static { pub trait TimelineExt: 'static {
#[cfg_attr(feature = "v1_18", deprecated)]
fn add_layer<P: IsA<Layer>>(&self, layer: &P) -> Result<(), glib::error::BoolError>; fn add_layer<P: IsA<Layer>>(&self, layer: &P) -> Result<(), glib::error::BoolError>;
fn add_track<P: IsA<Track>>(&self, track: &P) -> Result<(), glib::error::BoolError>; fn add_track<P: IsA<Track>>(&self, track: &P) -> Result<(), glib::error::BoolError>;
@ -80,6 +82,10 @@ pub trait TimelineExt: 'static {
fn get_element(&self, name: &str) -> Option<TimelineElement>; fn get_element(&self, name: &str) -> Option<TimelineElement>;
fn get_frame_at(&self, timestamp: gst::ClockTime) -> FrameNumber;
fn get_frame_time(&self, frame_number: FrameNumber) -> gst::ClockTime;
fn get_groups(&self) -> Vec<Group>; fn get_groups(&self) -> Vec<Group>;
fn get_layer(&self, priority: u32) -> Option<Layer>; fn get_layer(&self, priority: u32) -> Option<Layer>;
@ -236,6 +242,21 @@ impl<O: IsA<Timeline>> TimelineExt for O {
} }
} }
fn get_frame_at(&self, timestamp: gst::ClockTime) -> FrameNumber {
unsafe {
ges_sys::ges_timeline_get_frame_at(self.as_ref().to_glib_none().0, timestamp.to_glib())
}
}
fn get_frame_time(&self, frame_number: FrameNumber) -> gst::ClockTime {
unsafe {
from_glib(ges_sys::ges_timeline_get_frame_time(
self.as_ref().to_glib_none().0,
frame_number,
))
}
}
fn get_groups(&self) -> Vec<Group> { fn get_groups(&self) -> Vec<Group> {
unsafe { unsafe {
FromGlibPtrContainer::from_glib_none(ges_sys::ges_timeline_get_groups( FromGlibPtrContainer::from_glib_none(ges_sys::ges_timeline_get_groups(
@ -344,7 +365,7 @@ impl<O: IsA<Timeline>> TimelineExt for O {
layer_priority: i32, layer_priority: i32,
) -> Option<TimelineElement> { ) -> Option<TimelineElement> {
unsafe { unsafe {
from_glib_none(ges_sys::ges_timeline_paste_element( from_glib_full(ges_sys::ges_timeline_paste_element(
self.as_ref().to_glib_none().0, self.as_ref().to_glib_none().0,
element.as_ref().to_glib_none().0, element.as_ref().to_glib_none().0,
position.to_glib(), position.to_glib(),
@ -469,7 +490,7 @@ impl<O: IsA<Timeline>> TimelineExt for O {
} }
//fn connect_group_removed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId { //fn connect_group_removed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Empty ctype children: *.PtrArray TypeId { ns_id: 1, id: 51 } // Empty ctype children: *.PtrArray TypeId { ns_id: 1, id: 52 }
//} //}
fn connect_layer_added<F: Fn(&Self, &Layer) + 'static>(&self, f: F) -> SignalHandlerId { fn connect_layer_added<F: Fn(&Self, &Layer) + 'static>(&self, f: F) -> SignalHandlerId {
@ -527,7 +548,7 @@ impl<O: IsA<Timeline>> TimelineExt for O {
} }
//fn connect_select_tracks_for_object<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId { //fn connect_select_tracks_for_object<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Empty ctype return value *.PtrArray TypeId { ns_id: 1, id: 16 } // Empty ctype return value *.PtrArray TypeId { ns_id: 1, id: 17 }
//} //}
fn connect_snapping_ended<F: Fn(&Self, &TrackElement, &TrackElement, u64) + 'static>( fn connect_snapping_ended<F: Fn(&Self, &TrackElement, &TrackElement, u64) + 'static>(

View file

@ -16,8 +16,16 @@ use glib_sys;
use gobject_sys; use gobject_sys;
use gst; use gst;
use std::boxed::Box as Box_; use std::boxed::Box as Box_;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use std::mem;
use std::mem::transmute; use std::mem::transmute;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use Edge;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use EditMode;
use Extractable; use Extractable;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use Layer;
use Timeline; use Timeline;
use TrackType; use TrackType;
@ -36,6 +44,16 @@ pub trait TimelineElementExt: 'static {
fn copy(&self, deep: bool) -> Result<TimelineElement, glib::BoolError>; fn copy(&self, deep: bool) -> Result<TimelineElement, glib::BoolError>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn edit(
&self,
layers: &[Layer],
new_layer_priority: i64,
mode: EditMode,
edge: Edge,
position: u64,
) -> bool;
//fn get_child_properties(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs); //fn get_child_properties(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
//fn get_child_property(&self, property_name: &str, value: /*Ignored*/glib::Value) -> bool; //fn get_child_property(&self, property_name: &str, value: /*Ignored*/glib::Value) -> bool;
@ -55,6 +73,9 @@ pub trait TimelineElementExt: 'static {
fn get_name(&self) -> Option<GString>; fn get_name(&self) -> Option<GString>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_natural_framerate(&self) -> Option<(i32, i32)>;
fn get_parent(&self) -> Option<TimelineElement>; fn get_parent(&self) -> Option<TimelineElement>;
fn get_priority(&self) -> u32; fn get_priority(&self) -> u32;
@ -102,6 +123,7 @@ pub trait TimelineElementExt: 'static {
fn set_parent<P: IsA<TimelineElement>>(&self, parent: &P) fn set_parent<P: IsA<TimelineElement>>(&self, parent: &P)
-> Result<(), glib::error::BoolError>; -> Result<(), glib::error::BoolError>;
#[cfg_attr(feature = "v1_10", deprecated)]
fn set_priority(&self, priority: u32) -> bool; fn set_priority(&self, priority: u32) -> bool;
fn set_start(&self, start: gst::ClockTime) -> bool; fn set_start(&self, start: gst::ClockTime) -> bool;
@ -118,6 +140,10 @@ pub trait TimelineElementExt: 'static {
fn set_property_serialize(&self, serialize: bool); fn set_property_serialize(&self, serialize: bool);
//fn connect_child_property_added<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId;
//fn connect_child_property_removed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId;
//fn connect_deep_notify<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId; //fn connect_deep_notify<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId;
fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
@ -131,6 +157,7 @@ pub trait TimelineElementExt: 'static {
fn connect_property_parent_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_parent_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
#[cfg_attr(feature = "v1_10", deprecated)]
fn connect_property_priority_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_priority_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_property_serialize_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_serialize_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
@ -155,6 +182,27 @@ impl<O: IsA<TimelineElement>> TimelineElementExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn edit(
&self,
layers: &[Layer],
new_layer_priority: i64,
mode: EditMode,
edge: Edge,
position: u64,
) -> bool {
unsafe {
from_glib(ges_sys::ges_timeline_element_edit(
self.as_ref().to_glib_none().0,
layers.to_glib_none().0,
new_layer_priority,
mode.to_glib(),
edge.to_glib(),
position,
))
}
}
//fn get_child_properties(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) { //fn get_child_properties(&self, first_property_name: &str, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
// unsafe { TODO: call ges_sys:ges_timeline_element_get_child_properties() } // unsafe { TODO: call ges_sys:ges_timeline_element_get_child_properties() }
//} //}
@ -208,6 +256,26 @@ impl<O: IsA<TimelineElement>> TimelineElementExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_natural_framerate(&self) -> Option<(i32, i32)> {
unsafe {
let mut framerate_n = mem::MaybeUninit::uninit();
let mut framerate_d = mem::MaybeUninit::uninit();
let ret = from_glib(ges_sys::ges_timeline_element_get_natural_framerate(
self.as_ref().to_glib_none().0,
framerate_n.as_mut_ptr(),
framerate_d.as_mut_ptr(),
));
let framerate_n = framerate_n.assume_init();
let framerate_d = framerate_d.assume_init();
if ret {
Some((framerate_n, framerate_d))
} else {
None
}
}
}
fn get_parent(&self) -> Option<TimelineElement> { fn get_parent(&self) -> Option<TimelineElement> {
unsafe { unsafe {
from_glib_full(ges_sys::ges_timeline_element_get_parent( from_glib_full(ges_sys::ges_timeline_element_get_parent(
@ -481,6 +549,14 @@ impl<O: IsA<TimelineElement>> TimelineElementExt for O {
} }
} }
//fn connect_child_property_added<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Ignored prop: GObject.ParamSpec
//}
//fn connect_child_property_removed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Ignored prop: GObject.ParamSpec
//}
//fn connect_deep_notify<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId { //fn connect_deep_notify<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Ignored prop: GObject.ParamSpec // Ignored prop: GObject.ParamSpec
//} //}

View file

@ -9,6 +9,8 @@ use glib::object::IsA;
use glib::signal::connect_raw; use glib::signal::connect_raw;
use glib::signal::SignalHandlerId; use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::GString;
use glib::StaticType; use glib::StaticType;
use glib::Value; use glib::Value;
use glib_sys; use glib_sys;
@ -48,6 +50,9 @@ pub trait GESTrackExt: 'static {
fn get_mixing(&self) -> bool; fn get_mixing(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_restriction_caps(&self) -> Option<gst::Caps>;
fn get_timeline(&self) -> Option<Timeline>; fn get_timeline(&self) -> Option<Timeline>;
fn remove_element<P: IsA<TrackElement>>( fn remove_element<P: IsA<TrackElement>>(
@ -67,6 +72,12 @@ pub trait GESTrackExt: 'static {
fn get_property_duration(&self) -> u64; fn get_property_duration(&self) -> u64;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_property_id(&self) -> Option<GString>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_property_id(&self, id: Option<&str>);
fn get_property_restriction_caps(&self) -> Option<gst::Caps>; fn get_property_restriction_caps(&self) -> Option<gst::Caps>;
fn get_property_track_type(&self) -> TrackType; fn get_property_track_type(&self) -> TrackType;
@ -85,6 +96,9 @@ pub trait GESTrackExt: 'static {
fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_id_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_property_mixing_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_mixing_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_property_restriction_caps_notify<F: Fn(&Self) + 'static>( fn connect_property_restriction_caps_notify<F: Fn(&Self) + 'static>(
@ -130,6 +144,15 @@ impl<O: IsA<Track>> GESTrackExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_restriction_caps(&self) -> Option<gst::Caps> {
unsafe {
from_glib_full(ges_sys::ges_track_get_restriction_caps(
self.as_ref().to_glib_none().0,
))
}
}
fn get_timeline(&self) -> Option<Timeline> { fn get_timeline(&self) -> Option<Timeline> {
unsafe { unsafe {
from_glib_none(ges_sys::ges_track_get_timeline( from_glib_none(ges_sys::ges_track_get_timeline(
@ -205,6 +228,30 @@ impl<O: IsA<Track>> GESTrackExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_property_id(&self) -> Option<GString> {
unsafe {
let mut value = Value::from_type(<GString as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"id\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value.get().expect("Return Value for property `id` getter")
}
}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_property_id(&self, id: Option<&str>) {
unsafe {
gobject_sys::g_object_set_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"id\0".as_ptr() as *const _,
Value::from(id).to_glib_none().0,
);
}
}
fn get_property_restriction_caps(&self) -> Option<gst::Caps> { fn get_property_restriction_caps(&self) -> Option<gst::Caps> {
unsafe { unsafe {
let mut value = Value::from_type(<gst::Caps as StaticType>::static_type()); let mut value = Value::from_type(<gst::Caps as StaticType>::static_type());
@ -344,6 +391,31 @@ impl<O: IsA<Track>> GESTrackExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_id_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_id_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESTrack,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<Track>,
{
let f: &F = &*(f as *const F);
f(&Track::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::id\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_id_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_property_mixing_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { fn connect_property_mixing_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_mixing_trampoline<P, F: Fn(&P) + 'static>( unsafe extern "C" fn notify_mixing_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESTrack, this: *mut ges_sys::GESTrack,

View file

@ -43,6 +43,7 @@ pub trait TrackElementExt: 'static {
whitelist: &[&str], whitelist: &[&str],
); );
#[cfg_attr(feature = "v1_18", deprecated)]
fn edit( fn edit(
&self, &self,
layers: &[Layer], layers: &[Layer],
@ -65,6 +66,8 @@ pub trait TrackElementExt: 'static {
fn get_track_type(&self) -> TrackType; fn get_track_type(&self) -> TrackType;
fn has_internal_source(&self) -> bool;
fn is_active(&self) -> bool; fn is_active(&self) -> bool;
//fn lookup_child(&self, prop_name: &str, pspec: /*Ignored*/glib::ParamSpec) -> Option<gst::Element>; //fn lookup_child(&self, prop_name: &str, pspec: /*Ignored*/glib::ParamSpec) -> Option<gst::Element>;
@ -75,16 +78,25 @@ pub trait TrackElementExt: 'static {
//fn set_control_source(&self, source: /*Ignored*/&gst::ControlSource, property_name: &str, binding_type: &str) -> bool; //fn set_control_source(&self, source: /*Ignored*/&gst::ControlSource, property_name: &str, binding_type: &str) -> bool;
fn set_has_internal_source(&self, has_internal_source: bool);
fn set_track_type(&self, type_: TrackType); fn set_track_type(&self, type_: TrackType);
fn get_property_active(&self) -> bool; fn get_property_active(&self) -> bool;
fn get_property_has_internal_source(&self) -> bool;
//fn connect_control_binding_added<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId; //fn connect_control_binding_added<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId;
//fn connect_control_binding_removed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId; //fn connect_control_binding_removed<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId;
fn connect_property_active_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_active_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_property_has_internal_source_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId;
fn connect_property_track_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_track_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
fn connect_property_track_type_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_track_type_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
@ -178,6 +190,14 @@ impl<O: IsA<TrackElement>> TrackElementExt for O {
} }
} }
fn has_internal_source(&self) -> bool {
unsafe {
from_glib(ges_sys::ges_track_element_has_internal_source(
self.as_ref().to_glib_none().0,
))
}
}
fn is_active(&self) -> bool { fn is_active(&self) -> bool {
unsafe { unsafe {
from_glib(ges_sys::ges_track_element_is_active( from_glib(ges_sys::ges_track_element_is_active(
@ -215,6 +235,15 @@ impl<O: IsA<TrackElement>> TrackElementExt for O {
// unsafe { TODO: call ges_sys:ges_track_element_set_control_source() } // unsafe { TODO: call ges_sys:ges_track_element_set_control_source() }
//} //}
fn set_has_internal_source(&self, has_internal_source: bool) {
unsafe {
ges_sys::ges_track_element_set_has_internal_source(
self.as_ref().to_glib_none().0,
has_internal_source.to_glib(),
);
}
}
fn set_track_type(&self, type_: TrackType) { fn set_track_type(&self, type_: TrackType) {
unsafe { unsafe {
ges_sys::ges_track_element_set_track_type( ges_sys::ges_track_element_set_track_type(
@ -239,6 +268,21 @@ impl<O: IsA<TrackElement>> TrackElementExt for O {
} }
} }
fn get_property_has_internal_source(&self) -> bool {
unsafe {
let mut value = Value::from_type(<bool as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"has-internal-source\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `has-internal-source` getter")
.unwrap()
}
}
//fn connect_control_binding_added<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId { //fn connect_control_binding_added<Unsupported or ignored types>(&self, f: F) -> SignalHandlerId {
// Ignored control_binding: Gst.ControlBinding // Ignored control_binding: Gst.ControlBinding
//} //}
@ -271,6 +315,33 @@ impl<O: IsA<TrackElement>> TrackElementExt for O {
} }
} }
fn connect_property_has_internal_source_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_has_internal_source_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESTrackElement,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<TrackElement>,
{
let f: &F = &*(f as *const F);
f(&TrackElement::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::has-internal-source\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_has_internal_source_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_property_track_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { fn connect_property_track_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_track_trampoline<P, F: Fn(&P) + 'static>( unsafe extern "C" fn notify_track_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESTrackElement, this: *mut ges_sys::GESTrackElement,

View file

@ -9,6 +9,8 @@ use glib::object::IsA;
use glib::signal::connect_raw; use glib::signal::connect_raw;
use glib::signal::SignalHandlerId; use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::StaticType;
use glib::Value; use glib::Value;
use glib_sys; use glib_sys;
use gobject_sys; use gobject_sys;
@ -59,13 +61,25 @@ pub trait UriClipAssetExt: 'static {
fn get_info(&self) -> Option<gst_pbutils::DiscovererInfo>; fn get_info(&self) -> Option<gst_pbutils::DiscovererInfo>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_max_duration(&self) -> gst::ClockTime;
fn get_stream_assets(&self) -> Vec<UriSourceAsset>; fn get_stream_assets(&self) -> Vec<UriSourceAsset>;
fn is_image(&self) -> bool; fn is_image(&self) -> bool;
fn set_property_duration(&self, duration: u64); fn set_property_duration(&self, duration: u64);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_property_is_nested_timeline(&self) -> bool;
fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId; fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_is_nested_timeline_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId;
} }
impl<O: IsA<UriClipAsset>> UriClipAssetExt for O { impl<O: IsA<UriClipAsset>> UriClipAssetExt for O {
@ -85,6 +99,15 @@ impl<O: IsA<UriClipAsset>> UriClipAssetExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_max_duration(&self) -> gst::ClockTime {
unsafe {
from_glib(ges_sys::ges_uri_clip_asset_get_max_duration(
self.as_ref().to_glib_none().0,
))
}
}
fn get_stream_assets(&self) -> Vec<UriSourceAsset> { fn get_stream_assets(&self) -> Vec<UriSourceAsset> {
unsafe { unsafe {
FromGlibPtrContainer::from_glib_none(ges_sys::ges_uri_clip_asset_get_stream_assets( FromGlibPtrContainer::from_glib_none(ges_sys::ges_uri_clip_asset_get_stream_assets(
@ -111,6 +134,22 @@ impl<O: IsA<UriClipAsset>> UriClipAssetExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_property_is_nested_timeline(&self) -> bool {
unsafe {
let mut value = Value::from_type(<bool as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"is-nested-timeline\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `is-nested-timeline` getter")
.unwrap()
}
}
fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId { fn connect_property_duration_notify<F: Fn(&Self) + 'static>(&self, f: F) -> SignalHandlerId {
unsafe extern "C" fn notify_duration_trampoline<P, F: Fn(&P) + 'static>( unsafe extern "C" fn notify_duration_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESUriClipAsset, this: *mut ges_sys::GESUriClipAsset,
@ -134,4 +173,32 @@ impl<O: IsA<UriClipAsset>> UriClipAssetExt for O {
) )
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_is_nested_timeline_notify<F: Fn(&Self) + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_is_nested_timeline_trampoline<P, F: Fn(&P) + 'static>(
this: *mut ges_sys::GESUriClipAsset,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<UriClipAsset>,
{
let f: &F = &*(f as *const F);
f(&UriClipAsset::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::is-nested-timeline\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_is_nested_timeline_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
} }

View file

@ -26,6 +26,8 @@ pub trait UriSourceAssetExt: 'static {
fn get_stream_info(&self) -> Option<gst_pbutils::DiscovererStreamInfo>; fn get_stream_info(&self) -> Option<gst_pbutils::DiscovererStreamInfo>;
fn get_stream_uri(&self) -> Option<GString>; fn get_stream_uri(&self) -> Option<GString>;
fn is_image(&self) -> bool;
} }
impl<O: IsA<UriSourceAsset>> UriSourceAssetExt for O { impl<O: IsA<UriSourceAsset>> UriSourceAssetExt for O {
@ -52,4 +54,12 @@ impl<O: IsA<UriSourceAsset>> UriSourceAssetExt for O {
)) ))
} }
} }
fn is_image(&self) -> bool {
unsafe {
from_glib(ges_sys::ges_uri_source_asset_is_image(
self.as_ref().to_glib_none().0,
))
}
}
} }

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -41,12 +41,6 @@ pub fn init() -> Result<(), glib::BoolError> {
} }
} }
/// Deinitialize GStreamer Editing Services
///
/// # Safety
///
/// This must only be called once during the lifetime of the process, once no GStreamer threads
/// are running anymore and all GStreamer resources are released.
pub unsafe fn deinit() { pub unsafe fn deinit() {
ges_sys::ges_deinit(); ges_sys::ges_deinit();
} }

View file

@ -129,6 +129,9 @@ pub enum GLFormat {
Rgba16, Rgba16,
DepthComponent16, DepthComponent16,
Depth24Stencil8, Depth24Stencil8,
Rgb10A2,
R16,
Rg16,
#[doc(hidden)] #[doc(hidden)]
__Unknown(i32), __Unknown(i32),
} }
@ -155,6 +158,9 @@ impl ToGlib for GLFormat {
GLFormat::Rgba16 => gst_gl_sys::GST_GL_RGBA16, GLFormat::Rgba16 => gst_gl_sys::GST_GL_RGBA16,
GLFormat::DepthComponent16 => gst_gl_sys::GST_GL_DEPTH_COMPONENT16, GLFormat::DepthComponent16 => gst_gl_sys::GST_GL_DEPTH_COMPONENT16,
GLFormat::Depth24Stencil8 => gst_gl_sys::GST_GL_DEPTH24_STENCIL8, GLFormat::Depth24Stencil8 => gst_gl_sys::GST_GL_DEPTH24_STENCIL8,
GLFormat::Rgb10A2 => gst_gl_sys::GST_GL_RGB10_A2,
GLFormat::R16 => gst_gl_sys::GST_GL_R16,
GLFormat::Rg16 => gst_gl_sys::GST_GL_RG16,
GLFormat::__Unknown(value) => value, GLFormat::__Unknown(value) => value,
} }
} }
@ -181,6 +187,9 @@ impl FromGlib<gst_gl_sys::GstGLFormat> for GLFormat {
32859 => GLFormat::Rgba16, 32859 => GLFormat::Rgba16,
33189 => GLFormat::DepthComponent16, 33189 => GLFormat::DepthComponent16,
35056 => GLFormat::Depth24Stencil8, 35056 => GLFormat::Depth24Stencil8,
32857 => GLFormat::Rgb10A2,
33322 => GLFormat::R16,
33324 => GLFormat::Rg16,
value => GLFormat::__Unknown(value), value => GLFormat::__Unknown(value),
} }
} }

View file

@ -75,6 +75,7 @@ bitflags! {
const EGL = 32; const EGL = 32;
const VIV_FB = 64; const VIV_FB = 64;
const GBM = 128; const GBM = 128;
const EGL_DEVICE = 256;
const ANY = 4294967295; const ANY = 4294967295;
} }
} }

View file

@ -34,6 +34,9 @@ pub trait GLBaseFilterExt: 'static {
#[cfg(any(feature = "v1_16", feature = "dox"))] #[cfg(any(feature = "v1_16", feature = "dox"))]
fn find_gl_context(&self) -> bool; fn find_gl_context(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_gl_context(&self) -> Option<GLContext>;
fn get_property_context(&self) -> Option<GLContext>; fn get_property_context(&self) -> Option<GLContext>;
fn connect_property_context_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_context_notify<F: Fn(&Self) + Send + Sync + 'static>(
@ -52,6 +55,15 @@ impl<O: IsA<GLBaseFilter>> GLBaseFilterExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_gl_context(&self) -> Option<GLContext> {
unsafe {
from_glib_full(gst_gl_sys::gst_gl_base_filter_get_gl_context(
self.as_ref().to_glib_none().0,
))
}
}
fn get_property_context(&self) -> Option<GLContext> { fn get_property_context(&self) -> Option<GLContext> {
unsafe { unsafe {
let mut value = Value::from_type(<GLContext as StaticType>::static_type()); let mut value = Value::from_type(<GLContext as StaticType>::static_type());

View file

@ -57,14 +57,23 @@ pub trait GLDisplayExt: 'static {
fn filter_gl_api(&self, gl_api: GLAPI); fn filter_gl_api(&self, gl_api: GLAPI);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_foreign_display(&self) -> bool;
fn get_gl_api(&self) -> GLAPI; fn get_gl_api(&self) -> GLAPI;
fn get_gl_api_unlocked(&self) -> GLAPI; fn get_gl_api_unlocked(&self) -> GLAPI;
fn get_handle_type(&self) -> GLDisplayType; fn get_handle_type(&self) -> GLDisplayType;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn remove_context<P: IsA<GLContext>>(&self, context: &P);
fn remove_window<P: IsA<GLWindow>>(&self, window: &P) -> Result<(), glib::error::BoolError>; fn remove_window<P: IsA<GLWindow>>(&self, window: &P) -> Result<(), glib::error::BoolError>;
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn retrieve_window(&self, data: /*Unimplemented*/Option<Fundamental: Pointer>, compare_func: /*Unimplemented*/FnMut(/*Unimplemented*/Option<Fundamental: Pointer>, /*Unimplemented*/Option<Fundamental: Pointer>) -> i32) -> Option<GLWindow>;
fn connect_create_context<F: Fn(&Self, &GLContext) -> GLContext + Send + Sync + 'static>( fn connect_create_context<F: Fn(&Self, &GLContext) -> GLContext + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -123,6 +132,15 @@ impl<O: IsA<GLDisplay>> GLDisplayExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_foreign_display(&self) -> bool {
unsafe {
from_glib(gst_gl_sys::gst_gl_display_get_foreign_display(
self.as_ref().to_glib_none().0,
))
}
}
fn get_gl_api(&self) -> GLAPI { fn get_gl_api(&self) -> GLAPI {
unsafe { unsafe {
from_glib(gst_gl_sys::gst_gl_display_get_gl_api( from_glib(gst_gl_sys::gst_gl_display_get_gl_api(
@ -147,6 +165,16 @@ impl<O: IsA<GLDisplay>> GLDisplayExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn remove_context<P: IsA<GLContext>>(&self, context: &P) {
unsafe {
gst_gl_sys::gst_gl_display_remove_context(
self.as_ref().to_glib_none().0,
context.as_ref().to_glib_none().0,
);
}
}
fn remove_window<P: IsA<GLWindow>>(&self, window: &P) -> Result<(), glib::error::BoolError> { fn remove_window<P: IsA<GLWindow>>(&self, window: &P) -> Result<(), glib::error::BoolError> {
unsafe { unsafe {
glib_result_from_gboolean!( glib_result_from_gboolean!(
@ -159,6 +187,11 @@ impl<O: IsA<GLDisplay>> GLDisplayExt for O {
} }
} }
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn retrieve_window(&self, data: /*Unimplemented*/Option<Fundamental: Pointer>, compare_func: /*Unimplemented*/FnMut(/*Unimplemented*/Option<Fundamental: Pointer>, /*Unimplemented*/Option<Fundamental: Pointer>) -> i32) -> Option<GLWindow> {
// unsafe { TODO: call gst_gl_sys:gst_gl_display_retrieve_window() }
//}
fn connect_create_context<F: Fn(&Self, &GLContext) -> GLContext + Send + Sync + 'static>( fn connect_create_context<F: Fn(&Self, &GLContext) -> GLContext + Send + Sync + 'static>(
&self, &self,
f: F, f: F,

View file

@ -55,6 +55,9 @@ pub trait GLWindowExt: 'static {
fn handle_events(&self, handle_events: bool); fn handle_events(&self, handle_events: bool);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn has_output_surface(&self) -> bool;
fn queue_resize(&self); fn queue_resize(&self);
fn quit(&self); fn quit(&self);
@ -67,6 +70,8 @@ pub trait GLWindowExt: 'static {
fn send_mouse_event(&self, event_type: &str, button: i32, posx: f64, posy: f64); fn send_mouse_event(&self, event_type: &str, button: i32, posx: f64, posy: f64);
fn send_scroll_event(&self, posx: f64, posy: f64, delta_x: f64, delta_y: f64);
fn set_preferred_size(&self, width: i32, height: i32); fn set_preferred_size(&self, width: i32, height: i32);
fn set_render_rectangle( fn set_render_rectangle(
@ -88,6 +93,12 @@ pub trait GLWindowExt: 'static {
&self, &self,
f: F, f: F,
) -> SignalHandlerId; ) -> SignalHandlerId;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_scroll_event<F: Fn(&Self, f64, f64, f64, f64) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId;
} }
impl<O: IsA<GLWindow>> GLWindowExt for O { impl<O: IsA<GLWindow>> GLWindowExt for O {
@ -138,6 +149,15 @@ impl<O: IsA<GLWindow>> GLWindowExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn has_output_surface(&self) -> bool {
unsafe {
from_glib(gst_gl_sys::gst_gl_window_has_output_surface(
self.as_ref().to_glib_none().0,
))
}
}
fn queue_resize(&self) { fn queue_resize(&self) {
unsafe { unsafe {
gst_gl_sys::gst_gl_window_queue_resize(self.as_ref().to_glib_none().0); gst_gl_sys::gst_gl_window_queue_resize(self.as_ref().to_glib_none().0);
@ -184,6 +204,18 @@ impl<O: IsA<GLWindow>> GLWindowExt for O {
} }
} }
fn send_scroll_event(&self, posx: f64, posy: f64, delta_x: f64, delta_y: f64) {
unsafe {
gst_gl_sys::gst_gl_window_send_scroll_event(
self.as_ref().to_glib_none().0,
posx,
posy,
delta_x,
delta_y,
);
}
}
fn set_preferred_size(&self, width: i32, height: i32) { fn set_preferred_size(&self, width: i32, height: i32) {
unsafe { unsafe {
gst_gl_sys::gst_gl_window_set_preferred_size( gst_gl_sys::gst_gl_window_set_preferred_size(
@ -294,4 +326,44 @@ impl<O: IsA<GLWindow>> GLWindowExt for O {
) )
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_scroll_event<F: Fn(&Self, f64, f64, f64, f64) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn scroll_event_trampoline<
P,
F: Fn(&P, f64, f64, f64, f64) + Send + Sync + 'static,
>(
this: *mut gst_gl_sys::GstGLWindow,
x: libc::c_double,
y: libc::c_double,
delta_x: libc::c_double,
delta_y: libc::c_double,
f: glib_sys::gpointer,
) where
P: IsA<GLWindow>,
{
let f: &F = &*(f as *const F);
f(
&GLWindow::from_glib_borrow(this).unsafe_cast_ref(),
x,
y,
delta_x,
delta_y,
)
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"scroll-event\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
scroll_event_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
} }

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -72,6 +72,9 @@ pub trait EncodingProfileExt: 'static {
fn get_preset_name(&self) -> Option<GString>; fn get_preset_name(&self) -> Option<GString>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_single_segment(&self) -> bool;
fn get_type_nick(&self) -> Option<GString>; fn get_type_nick(&self) -> Option<GString>;
fn is_enabled(&self) -> bool; fn is_enabled(&self) -> bool;
@ -161,6 +164,15 @@ impl<O: IsA<EncodingProfile>> EncodingProfileExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_single_segment(&self) -> bool {
unsafe {
from_glib(gst_pbutils_sys::gst_encoding_profile_get_single_segment(
self.as_ref().to_glib_none().0,
))
}
}
fn get_type_nick(&self) -> Option<GString> { fn get_type_nick(&self) -> Option<GString> {
unsafe { unsafe {
from_glib_none(gst_pbutils_sys::gst_encoding_profile_get_type_nick( from_glib_none(gst_pbutils_sys::gst_encoding_profile_get_type_nick(

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -20,8 +20,8 @@ pub enum RTCPFBType {
RtpfbTypeTmmbr, RtpfbTypeTmmbr,
RtpfbTypeTmmbn, RtpfbTypeTmmbn,
RtpfbTypeRtcpSrReq, RtpfbTypeRtcpSrReq,
RtpfbTypeTwcc,
PsfbTypeSli, PsfbTypeSli,
PsfbTypeAfb,
PsfbTypeTstn, PsfbTypeTstn,
PsfbTypeVbcn, PsfbTypeVbcn,
#[doc(hidden)] #[doc(hidden)]
@ -39,8 +39,8 @@ impl ToGlib for RTCPFBType {
RTCPFBType::RtpfbTypeTmmbr => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_TMMBR, RTCPFBType::RtpfbTypeTmmbr => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_TMMBR,
RTCPFBType::RtpfbTypeTmmbn => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_TMMBN, RTCPFBType::RtpfbTypeTmmbn => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_TMMBN,
RTCPFBType::RtpfbTypeRtcpSrReq => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ, RTCPFBType::RtpfbTypeRtcpSrReq => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_RTCP_SR_REQ,
RTCPFBType::RtpfbTypeTwcc => gst_rtp_sys::GST_RTCP_RTPFB_TYPE_TWCC,
RTCPFBType::PsfbTypeSli => gst_rtp_sys::GST_RTCP_PSFB_TYPE_SLI, RTCPFBType::PsfbTypeSli => gst_rtp_sys::GST_RTCP_PSFB_TYPE_SLI,
RTCPFBType::PsfbTypeAfb => gst_rtp_sys::GST_RTCP_PSFB_TYPE_AFB,
RTCPFBType::PsfbTypeTstn => gst_rtp_sys::GST_RTCP_PSFB_TYPE_TSTN, RTCPFBType::PsfbTypeTstn => gst_rtp_sys::GST_RTCP_PSFB_TYPE_TSTN,
RTCPFBType::PsfbTypeVbcn => gst_rtp_sys::GST_RTCP_PSFB_TYPE_VBCN, RTCPFBType::PsfbTypeVbcn => gst_rtp_sys::GST_RTCP_PSFB_TYPE_VBCN,
RTCPFBType::__Unknown(value) => value, RTCPFBType::__Unknown(value) => value,
@ -58,8 +58,8 @@ impl FromGlib<gst_rtp_sys::GstRTCPFBType> for RTCPFBType {
3 => RTCPFBType::RtpfbTypeTmmbr, 3 => RTCPFBType::RtpfbTypeTmmbr,
4 => RTCPFBType::RtpfbTypeTmmbn, 4 => RTCPFBType::RtpfbTypeTmmbn,
5 => RTCPFBType::RtpfbTypeRtcpSrReq, 5 => RTCPFBType::RtpfbTypeRtcpSrReq,
15 => RTCPFBType::RtpfbTypeTwcc,
2 => RTCPFBType::PsfbTypeSli, 2 => RTCPFBType::PsfbTypeSli,
15 => RTCPFBType::PsfbTypeAfb,
6 => RTCPFBType::PsfbTypeTstn, 6 => RTCPFBType::PsfbTypeTstn,
7 => RTCPFBType::PsfbTypeVbcn, 7 => RTCPFBType::PsfbTypeVbcn,
value => RTCPFBType::__Unknown(value), value => RTCPFBType::__Unknown(value),

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -24,6 +24,8 @@ use RTSPFilterResult;
use RTSPMountPoints; use RTSPMountPoints;
use RTSPSession; use RTSPSession;
use RTSPSessionPool; use RTSPSessionPool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use RTSPStreamTransport;
use RTSPThreadPool; use RTSPThreadPool;
glib_wrapper! { glib_wrapper! {
@ -59,10 +61,16 @@ pub trait RTSPClientExt: 'static {
//fn get_connection(&self) -> /*Ignored*/Option<gst_rtsp::RTSPConnection>; //fn get_connection(&self) -> /*Ignored*/Option<gst_rtsp::RTSPConnection>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_content_length_limit(&self) -> u32;
fn get_mount_points(&self) -> Option<RTSPMountPoints>; fn get_mount_points(&self) -> Option<RTSPMountPoints>;
fn get_session_pool(&self) -> Option<RTSPSessionPool>; fn get_session_pool(&self) -> Option<RTSPSessionPool>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_stream_transport(&self, channel: u8) -> Option<RTSPStreamTransport>;
fn get_thread_pool(&self) -> Option<RTSPThreadPool>; fn get_thread_pool(&self) -> Option<RTSPThreadPool>;
//fn handle_message(&self, message: /*Ignored*/&mut gst_rtsp::RTSPMessage) -> gst_rtsp::RTSPResult; //fn handle_message(&self, message: /*Ignored*/&mut gst_rtsp::RTSPMessage) -> gst_rtsp::RTSPResult;
@ -78,6 +86,9 @@ pub trait RTSPClientExt: 'static {
//fn set_connection(&self, conn: /*Ignored*/&mut gst_rtsp::RTSPConnection) -> bool; //fn set_connection(&self, conn: /*Ignored*/&mut gst_rtsp::RTSPConnection) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_content_length_limit(&self, limit: u32);
fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>); fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>);
//fn set_send_func(&self, func: /*Unimplemented*/Fn(&RTSPClient, /*Ignored*/gst_rtsp::RTSPMessage, bool) -> bool, user_data: /*Unimplemented*/Option<Fundamental: Pointer>); //fn set_send_func(&self, func: /*Unimplemented*/Fn(&RTSPClient, /*Ignored*/gst_rtsp::RTSPMessage, bool) -> bool, user_data: /*Unimplemented*/Option<Fundamental: Pointer>);
@ -93,6 +104,10 @@ pub trait RTSPClientExt: 'static {
fn set_property_drop_backlog(&self, drop_backlog: bool); fn set_property_drop_backlog(&self, drop_backlog: bool);
fn get_property_post_session_timeout(&self) -> i32;
fn set_property_post_session_timeout(&self, post_session_timeout: i32);
fn connect_announce_request<F: Fn(&Self, &RTSPContext) + Send + Sync + 'static>( fn connect_announce_request<F: Fn(&Self, &RTSPContext) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -249,6 +264,11 @@ pub trait RTSPClientExt: 'static {
f: F, f: F,
) -> SignalHandlerId; ) -> SignalHandlerId;
fn connect_property_post_session_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId;
fn connect_property_session_pool_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_session_pool_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -274,6 +294,15 @@ impl<O: IsA<RTSPClient>> RTSPClientExt for O {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_client_get_connection() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_client_get_connection() }
//} //}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_content_length_limit(&self) -> u32 {
unsafe {
gst_rtsp_server_sys::gst_rtsp_client_get_content_length_limit(
self.as_ref().to_glib_none().0,
)
}
}
fn get_mount_points(&self) -> Option<RTSPMountPoints> { fn get_mount_points(&self) -> Option<RTSPMountPoints> {
unsafe { unsafe {
from_glib_full(gst_rtsp_server_sys::gst_rtsp_client_get_mount_points( from_glib_full(gst_rtsp_server_sys::gst_rtsp_client_get_mount_points(
@ -290,6 +319,16 @@ impl<O: IsA<RTSPClient>> RTSPClientExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_stream_transport(&self, channel: u8) -> Option<RTSPStreamTransport> {
unsafe {
from_glib_none(gst_rtsp_server_sys::gst_rtsp_client_get_stream_transport(
self.as_ref().to_glib_none().0,
channel,
))
}
}
fn get_thread_pool(&self) -> Option<RTSPThreadPool> { fn get_thread_pool(&self) -> Option<RTSPThreadPool> {
unsafe { unsafe {
from_glib_full(gst_rtsp_server_sys::gst_rtsp_client_get_thread_pool( from_glib_full(gst_rtsp_server_sys::gst_rtsp_client_get_thread_pool(
@ -362,6 +401,16 @@ impl<O: IsA<RTSPClient>> RTSPClientExt for O {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_client_set_connection() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_client_set_connection() }
//} //}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_content_length_limit(&self, limit: u32) {
unsafe {
gst_rtsp_server_sys::gst_rtsp_client_set_content_length_limit(
self.as_ref().to_glib_none().0,
limit,
);
}
}
fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>) { fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>) {
unsafe { unsafe {
gst_rtsp_server_sys::gst_rtsp_client_set_mount_points( gst_rtsp_server_sys::gst_rtsp_client_set_mount_points(
@ -423,6 +472,31 @@ impl<O: IsA<RTSPClient>> RTSPClientExt for O {
} }
} }
fn get_property_post_session_timeout(&self) -> i32 {
unsafe {
let mut value = Value::from_type(<i32 as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"post-session-timeout\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `post-session-timeout` getter")
.unwrap()
}
}
fn set_property_post_session_timeout(&self, post_session_timeout: i32) {
unsafe {
gobject_sys::g_object_set_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"post-session-timeout\0".as_ptr() as *const _,
Value::from(&post_session_timeout).to_glib_none().0,
);
}
}
fn connect_announce_request<F: Fn(&Self, &RTSPContext) + Send + Sync + 'static>( fn connect_announce_request<F: Fn(&Self, &RTSPContext) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -1284,6 +1358,36 @@ impl<O: IsA<RTSPClient>> RTSPClientExt for O {
} }
} }
fn connect_property_post_session_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_post_session_timeout_trampoline<
P,
F: Fn(&P) + Send + Sync + 'static,
>(
this: *mut gst_rtsp_server_sys::GstRTSPClient,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<RTSPClient>,
{
let f: &F = &*(f as *const F);
f(&RTSPClient::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::post-session-timeout\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_post_session_timeout_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_property_session_pool_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_session_pool_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,

View file

@ -18,6 +18,8 @@ use gst_rtsp;
use gst_rtsp_server_sys; use gst_rtsp_server_sys;
use libc; use libc;
use std::boxed::Box as Box_; use std::boxed::Box as Box_;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use std::mem;
use std::mem::transmute; use std::mem::transmute;
use RTSPAddressPool; use RTSPAddressPool;
use RTSPMediaStatus; use RTSPMediaStatus;
@ -96,6 +98,12 @@ pub trait RTSPMediaExt: 'static {
fn get_range_string(&self, play: bool, unit: gst_rtsp::RTSPRangeUnit) -> Option<GString>; fn get_range_string(&self, play: bool, unit: gst_rtsp::RTSPRangeUnit) -> Option<GString>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rate_control(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rates(&self) -> Option<(f64, f64)>;
fn get_retransmission_time(&self) -> gst::ClockTime; fn get_retransmission_time(&self) -> gst::ClockTime;
fn get_status(&self) -> RTSPMediaStatus; fn get_status(&self) -> RTSPMediaStatus;
@ -110,11 +118,17 @@ pub trait RTSPMediaExt: 'static {
//fn handle_sdp(&self, sdp: /*Ignored*/&mut gst_sdp::SDPMessage) -> bool; //fn handle_sdp(&self, sdp: /*Ignored*/&mut gst_sdp::SDPMessage) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn has_completed_sender(&self) -> bool;
#[cfg(any(feature = "v1_16", feature = "dox"))] #[cfg(any(feature = "v1_16", feature = "dox"))]
fn is_bind_mcast_address(&self) -> bool; fn is_bind_mcast_address(&self) -> bool;
fn is_eos_shutdown(&self) -> bool; fn is_eos_shutdown(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn is_receive_only(&self) -> bool;
fn is_reusable(&self) -> bool; fn is_reusable(&self) -> bool;
fn is_shared(&self) -> bool; fn is_shared(&self) -> bool;
@ -123,15 +137,21 @@ pub trait RTSPMediaExt: 'static {
fn is_time_provider(&self) -> bool; fn is_time_provider(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn lock(&self);
fn n_streams(&self) -> u32; fn n_streams(&self) -> u32;
fn prepare(&self, thread: Option<&RTSPThread>) -> Result<(), glib::error::BoolError>; fn prepare(&self, thread: Option<&RTSPThread>) -> Result<(), glib::error::BoolError>;
//fn seek(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange) -> bool; //fn seek(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange) -> bool;
//#[cfg(any(feature = "v1_14", feature = "dox"))] //#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn seek_full(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange, flags: /*Ignored*/gst::SeekFlags) -> bool; //fn seek_full(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange, flags: /*Ignored*/gst::SeekFlags) -> bool;
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn seek_trickmode(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange, flags: /*Ignored*/gst::SeekFlags, rate: f64, trickmode_interval: gst::ClockTime) -> bool;
//#[cfg(any(feature = "v1_14", feature = "dox"))] //#[cfg(any(feature = "v1_14", feature = "dox"))]
//fn seekable(&self) -> /*Ignored*/gst::ClockTimeDiff; //fn seekable(&self) -> /*Ignored*/gst::ClockTimeDiff;
@ -166,6 +186,9 @@ pub trait RTSPMediaExt: 'static {
fn set_publish_clock_mode(&self, mode: RTSPPublishClockMode); fn set_publish_clock_mode(&self, mode: RTSPPublishClockMode);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_rate_control(&self, enabled: bool);
fn set_retransmission_time(&self, time: gst::ClockTime); fn set_retransmission_time(&self, time: gst::ClockTime);
fn set_reusable(&self, reusable: bool); fn set_reusable(&self, reusable: bool);
@ -184,6 +207,9 @@ pub trait RTSPMediaExt: 'static {
fn suspend(&self) -> Result<(), glib::error::BoolError>; fn suspend(&self) -> Result<(), glib::error::BoolError>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn unlock(&self);
fn unprepare(&self) -> Result<(), glib::error::BoolError>; fn unprepare(&self) -> Result<(), glib::error::BoolError>;
fn unsuspend(&self) -> Result<(), glib::error::BoolError>; fn unsuspend(&self) -> Result<(), glib::error::BoolError>;
@ -440,6 +466,35 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rate_control(&self) -> bool {
unsafe {
from_glib(gst_rtsp_server_sys::gst_rtsp_media_get_rate_control(
self.as_ref().to_glib_none().0,
))
}
}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rates(&self) -> Option<(f64, f64)> {
unsafe {
let mut rate = mem::MaybeUninit::uninit();
let mut applied_rate = mem::MaybeUninit::uninit();
let ret = from_glib(gst_rtsp_server_sys::gst_rtsp_media_get_rates(
self.as_ref().to_glib_none().0,
rate.as_mut_ptr(),
applied_rate.as_mut_ptr(),
));
let rate = rate.assume_init();
let applied_rate = applied_rate.assume_init();
if ret {
Some((rate, applied_rate))
} else {
None
}
}
}
fn get_retransmission_time(&self) -> gst::ClockTime { fn get_retransmission_time(&self) -> gst::ClockTime {
unsafe { unsafe {
from_glib(gst_rtsp_server_sys::gst_rtsp_media_get_retransmission_time( from_glib(gst_rtsp_server_sys::gst_rtsp_media_get_retransmission_time(
@ -489,6 +544,15 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_handle_sdp() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_handle_sdp() }
//} //}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn has_completed_sender(&self) -> bool {
unsafe {
from_glib(gst_rtsp_server_sys::gst_rtsp_media_has_completed_sender(
self.as_ref().to_glib_none().0,
))
}
}
#[cfg(any(feature = "v1_16", feature = "dox"))] #[cfg(any(feature = "v1_16", feature = "dox"))]
fn is_bind_mcast_address(&self) -> bool { fn is_bind_mcast_address(&self) -> bool {
unsafe { unsafe {
@ -506,6 +570,15 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn is_receive_only(&self) -> bool {
unsafe {
from_glib(gst_rtsp_server_sys::gst_rtsp_media_is_receive_only(
self.as_ref().to_glib_none().0,
))
}
}
fn is_reusable(&self) -> bool { fn is_reusable(&self) -> bool {
unsafe { unsafe {
from_glib(gst_rtsp_server_sys::gst_rtsp_media_is_reusable( from_glib(gst_rtsp_server_sys::gst_rtsp_media_is_reusable(
@ -538,6 +611,13 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn lock(&self) {
unsafe {
gst_rtsp_server_sys::gst_rtsp_media_lock(self.as_ref().to_glib_none().0);
}
}
fn n_streams(&self) -> u32 { fn n_streams(&self) -> u32 {
unsafe { gst_rtsp_server_sys::gst_rtsp_media_n_streams(self.as_ref().to_glib_none().0) } unsafe { gst_rtsp_server_sys::gst_rtsp_media_n_streams(self.as_ref().to_glib_none().0) }
} }
@ -558,11 +638,16 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seek() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seek() }
//} //}
//#[cfg(any(feature = "v1_14", feature = "dox"))] //#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn seek_full(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange, flags: /*Ignored*/gst::SeekFlags) -> bool { //fn seek_full(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange, flags: /*Ignored*/gst::SeekFlags) -> bool {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seek_full() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seek_full() }
//} //}
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn seek_trickmode(&self, range: /*Ignored*/&mut gst_rtsp::RTSPTimeRange, flags: /*Ignored*/gst::SeekFlags, rate: f64, trickmode_interval: gst::ClockTime) -> bool {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seek_trickmode() }
//}
//#[cfg(any(feature = "v1_14", feature = "dox"))] //#[cfg(any(feature = "v1_14", feature = "dox"))]
//fn seekable(&self) -> /*Ignored*/gst::ClockTimeDiff { //fn seekable(&self) -> /*Ignored*/gst::ClockTimeDiff {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seekable() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_media_seekable() }
@ -692,6 +777,16 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_rate_control(&self, enabled: bool) {
unsafe {
gst_rtsp_server_sys::gst_rtsp_media_set_rate_control(
self.as_ref().to_glib_none().0,
enabled.to_glib(),
);
}
}
fn set_retransmission_time(&self, time: gst::ClockTime) { fn set_retransmission_time(&self, time: gst::ClockTime) {
unsafe { unsafe {
gst_rtsp_server_sys::gst_rtsp_media_set_retransmission_time( gst_rtsp_server_sys::gst_rtsp_media_set_retransmission_time(
@ -769,6 +864,13 @@ impl<O: IsA<RTSPMedia>> RTSPMediaExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn unlock(&self) {
unsafe {
gst_rtsp_server_sys::gst_rtsp_media_unlock(self.as_ref().to_glib_none().0);
}
}
fn unprepare(&self) -> Result<(), glib::error::BoolError> { fn unprepare(&self) -> Result<(), glib::error::BoolError> {
unsafe { unsafe {
glib_result_from_gboolean!( glib_result_from_gboolean!(

View file

@ -10,7 +10,10 @@ use glib::signal::connect_raw;
use glib::signal::SignalHandlerId; use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
use glib::GString; use glib::GString;
use glib::StaticType;
use glib::Value;
use glib_sys; use glib_sys;
use gobject_sys;
use gst_rtsp_server_sys; use gst_rtsp_server_sys;
use std::boxed::Box as Box_; use std::boxed::Box as Box_;
use std::mem::transmute; use std::mem::transmute;
@ -90,6 +93,9 @@ pub trait RTSPServerExt: 'static {
fn get_bound_port(&self) -> i32; fn get_bound_port(&self) -> i32;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_content_length_limit(&self) -> u32;
fn get_mount_points(&self) -> Option<RTSPMountPoints>; fn get_mount_points(&self) -> Option<RTSPMountPoints>;
fn get_service(&self) -> Option<GString>; fn get_service(&self) -> Option<GString>;
@ -104,6 +110,9 @@ pub trait RTSPServerExt: 'static {
fn set_backlog(&self, backlog: i32); fn set_backlog(&self, backlog: i32);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_content_length_limit(&self, limit: u32);
fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>); fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>);
fn set_service(&self, service: &str); fn set_service(&self, service: &str);
@ -120,6 +129,10 @@ pub trait RTSPServerExt: 'static {
initial_buffer: Option<&str>, initial_buffer: Option<&str>,
) -> Result<(), glib::error::BoolError>; ) -> Result<(), glib::error::BoolError>;
fn get_property_content_length_limit(&self) -> u32;
fn set_property_content_length_limit(&self, content_length_limit: u32);
fn connect_client_connected<F: Fn(&Self, &RTSPClient) + Send + Sync + 'static>( fn connect_client_connected<F: Fn(&Self, &RTSPClient) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -140,6 +153,11 @@ pub trait RTSPServerExt: 'static {
f: F, f: F,
) -> SignalHandlerId; ) -> SignalHandlerId;
fn connect_property_content_length_limit_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId;
fn connect_property_mount_points_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_mount_points_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -264,6 +282,15 @@ impl<O: IsA<RTSPServer>> RTSPServerExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_content_length_limit(&self) -> u32 {
unsafe {
gst_rtsp_server_sys::gst_rtsp_server_get_content_length_limit(
self.as_ref().to_glib_none().0,
)
}
}
fn get_mount_points(&self) -> Option<RTSPMountPoints> { fn get_mount_points(&self) -> Option<RTSPMountPoints> {
unsafe { unsafe {
from_glib_full(gst_rtsp_server_sys::gst_rtsp_server_get_mount_points( from_glib_full(gst_rtsp_server_sys::gst_rtsp_server_get_mount_points(
@ -323,6 +350,16 @@ impl<O: IsA<RTSPServer>> RTSPServerExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_content_length_limit(&self, limit: u32) {
unsafe {
gst_rtsp_server_sys::gst_rtsp_server_set_content_length_limit(
self.as_ref().to_glib_none().0,
limit,
);
}
}
fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>) { fn set_mount_points<P: IsA<RTSPMountPoints>>(&self, mounts: Option<&P>) {
unsafe { unsafe {
gst_rtsp_server_sys::gst_rtsp_server_set_mount_points( gst_rtsp_server_sys::gst_rtsp_server_set_mount_points(
@ -380,6 +417,31 @@ impl<O: IsA<RTSPServer>> RTSPServerExt for O {
} }
} }
fn get_property_content_length_limit(&self) -> u32 {
unsafe {
let mut value = Value::from_type(<u32 as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"content-length-limit\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `content-length-limit` getter")
.unwrap()
}
}
fn set_property_content_length_limit(&self, content_length_limit: u32) {
unsafe {
gobject_sys::g_object_set_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"content-length-limit\0".as_ptr() as *const _,
Value::from(&content_length_limit).to_glib_none().0,
);
}
}
fn connect_client_connected<F: Fn(&Self, &RTSPClient) + Send + Sync + 'static>( fn connect_client_connected<F: Fn(&Self, &RTSPClient) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -494,6 +556,36 @@ impl<O: IsA<RTSPServer>> RTSPServerExt for O {
} }
} }
fn connect_property_content_length_limit_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_content_length_limit_trampoline<
P,
F: Fn(&P) + Send + Sync + 'static,
>(
this: *mut gst_rtsp_server_sys::GstRTSPServer,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<RTSPServer>,
{
let f: &F = &*(f as *const F);
f(&RTSPServer::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::content-length-limit\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_content_length_limit_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_property_mount_points_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_mount_points_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,

View file

@ -83,10 +83,19 @@ pub trait RTSPSessionExt: 'static {
fn touch(&self); fn touch(&self);
fn get_property_extra_timeout(&self) -> u32;
fn set_property_extra_timeout(&self, extra_timeout: u32);
fn get_property_timeout_always_visible(&self) -> bool; fn get_property_timeout_always_visible(&self) -> bool;
fn set_property_timeout_always_visible(&self, timeout_always_visible: bool); fn set_property_timeout_always_visible(&self, timeout_always_visible: bool);
fn connect_property_extra_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId;
fn connect_property_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,
@ -253,6 +262,31 @@ impl<O: IsA<RTSPSession>> RTSPSessionExt for O {
} }
} }
fn get_property_extra_timeout(&self) -> u32 {
unsafe {
let mut value = Value::from_type(<u32 as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"extra-timeout\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `extra-timeout` getter")
.unwrap()
}
}
fn set_property_extra_timeout(&self, extra_timeout: u32) {
unsafe {
gobject_sys::g_object_set_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"extra-timeout\0".as_ptr() as *const _,
Value::from(&extra_timeout).to_glib_none().0,
);
}
}
fn get_property_timeout_always_visible(&self) -> bool { fn get_property_timeout_always_visible(&self) -> bool {
unsafe { unsafe {
let mut value = Value::from_type(<bool as StaticType>::static_type()); let mut value = Value::from_type(<bool as StaticType>::static_type());
@ -278,6 +312,33 @@ impl<O: IsA<RTSPSession>> RTSPSessionExt for O {
} }
} }
fn connect_property_extra_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_extra_timeout_trampoline<P, F: Fn(&P) + Send + Sync + 'static>(
this: *mut gst_rtsp_server_sys::GstRTSPSession,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<RTSPSession>,
{
let f: &F = &*(f as *const F);
f(&RTSPSession::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::extra-timeout\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_extra_timeout_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
fn connect_property_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>( fn connect_property_timeout_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self, &self,
f: F, f: F,

View file

@ -110,6 +110,12 @@ pub trait RTSPStreamExt: 'static {
fn get_publish_clock_mode(&self) -> RTSPPublishClockMode; fn get_publish_clock_mode(&self) -> RTSPPublishClockMode;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rate_control(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rates(&self) -> Option<(f64, f64)>;
fn get_retransmission_pt(&self) -> u32; fn get_retransmission_pt(&self) -> u32;
fn get_retransmission_time(&self) -> gst::ClockTime; fn get_retransmission_time(&self) -> gst::ClockTime;
@ -242,6 +248,9 @@ pub trait RTSPStreamExt: 'static {
fn set_publish_clock_mode(&self, mode: RTSPPublishClockMode); fn set_publish_clock_mode(&self, mode: RTSPPublishClockMode);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_rate_control(&self, enabled: bool);
fn set_retransmission_pt(&self, rtx_pt: u32); fn set_retransmission_pt(&self, rtx_pt: u32);
fn set_retransmission_time(&self, time: gst::ClockTime); fn set_retransmission_time(&self, time: gst::ClockTime);
@ -466,6 +475,35 @@ impl<O: IsA<RTSPStream>> RTSPStreamExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rate_control(&self) -> bool {
unsafe {
from_glib(gst_rtsp_server_sys::gst_rtsp_stream_get_rate_control(
self.as_ref().to_glib_none().0,
))
}
}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_rates(&self) -> Option<(f64, f64)> {
unsafe {
let mut rate = mem::MaybeUninit::uninit();
let mut applied_rate = mem::MaybeUninit::uninit();
let ret = from_glib(gst_rtsp_server_sys::gst_rtsp_stream_get_rates(
self.as_ref().to_glib_none().0,
rate.as_mut_ptr(),
applied_rate.as_mut_ptr(),
));
let rate = rate.assume_init();
let applied_rate = applied_rate.assume_init();
if ret {
Some((rate, applied_rate))
} else {
None
}
}
}
fn get_retransmission_pt(&self) -> u32 { fn get_retransmission_pt(&self) -> u32 {
unsafe { unsafe {
gst_rtsp_server_sys::gst_rtsp_stream_get_retransmission_pt( gst_rtsp_server_sys::gst_rtsp_stream_get_retransmission_pt(
@ -948,6 +986,16 @@ impl<O: IsA<RTSPStream>> RTSPStreamExt for O {
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_rate_control(&self, enabled: bool) {
unsafe {
gst_rtsp_server_sys::gst_rtsp_stream_set_rate_control(
self.as_ref().to_glib_none().0,
enabled.to_glib(),
);
}
}
fn set_retransmission_pt(&self, rtx_pt: u32) { fn set_retransmission_pt(&self, rtx_pt: u32) {
unsafe { unsafe {
gst_rtsp_server_sys::gst_rtsp_stream_set_retransmission_pt( gst_rtsp_server_sys::gst_rtsp_stream_set_retransmission_pt(

View file

@ -47,12 +47,12 @@ pub trait RTSPStreamTransportExt: 'static {
fn send_rtcp(&self, buffer: &gst::Buffer) -> Result<(), glib::error::BoolError>; fn send_rtcp(&self, buffer: &gst::Buffer) -> Result<(), glib::error::BoolError>;
//#[cfg(any(feature = "v1_16", feature = "dox"))] //#[cfg(any(feature = "v1_16", feature = "dox"))]
//fn send_rtcp_list(&self, buffer_list: /*Ignored*/&mut gst::BufferList) -> bool; //fn send_rtcp_list(&self, buffer_list: /*Ignored*/&gst::BufferList) -> bool;
fn send_rtp(&self, buffer: &gst::Buffer) -> Result<(), glib::error::BoolError>; fn send_rtp(&self, buffer: &gst::Buffer) -> Result<(), glib::error::BoolError>;
//#[cfg(any(feature = "v1_16", feature = "dox"))] //#[cfg(any(feature = "v1_16", feature = "dox"))]
//fn send_rtp_list(&self, buffer_list: /*Ignored*/&mut gst::BufferList) -> bool; //fn send_rtp_list(&self, buffer_list: /*Ignored*/&gst::BufferList) -> bool;
fn set_active(&self, active: bool) -> Result<(), glib::error::BoolError>; fn set_active(&self, active: bool) -> Result<(), glib::error::BoolError>;
@ -140,7 +140,7 @@ impl<O: IsA<RTSPStreamTransport>> RTSPStreamTransportExt for O {
} }
//#[cfg(any(feature = "v1_16", feature = "dox"))] //#[cfg(any(feature = "v1_16", feature = "dox"))]
//fn send_rtcp_list(&self, buffer_list: /*Ignored*/&mut gst::BufferList) -> bool { //fn send_rtcp_list(&self, buffer_list: /*Ignored*/&gst::BufferList) -> bool {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_stream_transport_send_rtcp_list() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_stream_transport_send_rtcp_list() }
//} //}
@ -157,7 +157,7 @@ impl<O: IsA<RTSPStreamTransport>> RTSPStreamTransportExt for O {
} }
//#[cfg(any(feature = "v1_16", feature = "dox"))] //#[cfg(any(feature = "v1_16", feature = "dox"))]
//fn send_rtp_list(&self, buffer_list: /*Ignored*/&mut gst::BufferList) -> bool { //fn send_rtp_list(&self, buffer_list: /*Ignored*/&gst::BufferList) -> bool {
// unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_stream_transport_send_rtp_list() } // unsafe { TODO: call gst_rtsp_server_sys:gst_rtsp_stream_transport_send_rtp_list() }
//} //}

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -36,6 +36,15 @@ impl RTSPUrl {
} }
} }
pub fn get_request_uri_with_control(&self, control_path: &str) -> Option<GString> {
unsafe {
from_glib_full(gst_rtsp_sys::gst_rtsp_url_get_request_uri_with_control(
self.to_glib_none().0,
control_path.to_glib_none().0,
))
}
}
pub fn set_port(&mut self, port: u16) -> RTSPResult { pub fn set_port(&mut self, port: u16) -> RTSPResult {
unsafe { unsafe {
from_glib(gst_rtsp_sys::gst_rtsp_url_set_port( from_glib(gst_rtsp_sys::gst_rtsp_url_set_port(

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -14,66 +14,6 @@ use gst_video_sys;
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)] #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
#[non_exhaustive] #[non_exhaustive]
pub enum VideoAlphaMode {
Copy,
Set,
Mult,
#[doc(hidden)]
__Unknown(i32),
}
#[doc(hidden)]
impl ToGlib for VideoAlphaMode {
type GlibType = gst_video_sys::GstVideoAlphaMode;
fn to_glib(&self) -> gst_video_sys::GstVideoAlphaMode {
match *self {
VideoAlphaMode::Copy => gst_video_sys::GST_VIDEO_ALPHA_MODE_COPY,
VideoAlphaMode::Set => gst_video_sys::GST_VIDEO_ALPHA_MODE_SET,
VideoAlphaMode::Mult => gst_video_sys::GST_VIDEO_ALPHA_MODE_MULT,
VideoAlphaMode::__Unknown(value) => value,
}
}
}
#[doc(hidden)]
impl FromGlib<gst_video_sys::GstVideoAlphaMode> for VideoAlphaMode {
fn from_glib(value: gst_video_sys::GstVideoAlphaMode) -> Self {
skip_assert_initialized!();
match value {
0 => VideoAlphaMode::Copy,
1 => VideoAlphaMode::Set,
2 => VideoAlphaMode::Mult,
value => VideoAlphaMode::__Unknown(value),
}
}
}
impl StaticType for VideoAlphaMode {
fn static_type() -> Type {
unsafe { from_glib(gst_video_sys::gst_video_alpha_mode_get_type()) }
}
}
impl<'a> FromValueOptional<'a> for VideoAlphaMode {
unsafe fn from_value_optional(value: &Value) -> Option<Self> {
Some(FromValue::from_value(value))
}
}
impl<'a> FromValue<'a> for VideoAlphaMode {
unsafe fn from_value(value: &Value) -> Self {
from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
}
}
impl SetValue for VideoAlphaMode {
unsafe fn set_value(value: &mut Value, this: &Self) {
gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
}
}
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
pub enum VideoAFDSpec { pub enum VideoAFDSpec {
DvbEtsi, DvbEtsi,
AtscA53, AtscA53,
@ -135,6 +75,7 @@ impl SetValue for VideoAFDSpec {
#[cfg(any(feature = "v1_18", feature = "dox"))] #[cfg(any(feature = "v1_18", feature = "dox"))]
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)] #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
#[non_exhaustive]
pub enum VideoAFDValue { pub enum VideoAFDValue {
Unavailable, Unavailable,
_169TopAligned, _169TopAligned,
@ -230,6 +171,67 @@ impl SetValue for VideoAFDValue {
} }
} }
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
#[non_exhaustive]
pub enum VideoAlphaMode {
Copy,
Set,
Mult,
#[doc(hidden)]
__Unknown(i32),
}
#[doc(hidden)]
impl ToGlib for VideoAlphaMode {
type GlibType = gst_video_sys::GstVideoAlphaMode;
fn to_glib(&self) -> gst_video_sys::GstVideoAlphaMode {
match *self {
VideoAlphaMode::Copy => gst_video_sys::GST_VIDEO_ALPHA_MODE_COPY,
VideoAlphaMode::Set => gst_video_sys::GST_VIDEO_ALPHA_MODE_SET,
VideoAlphaMode::Mult => gst_video_sys::GST_VIDEO_ALPHA_MODE_MULT,
VideoAlphaMode::__Unknown(value) => value,
}
}
}
#[doc(hidden)]
impl FromGlib<gst_video_sys::GstVideoAlphaMode> for VideoAlphaMode {
fn from_glib(value: gst_video_sys::GstVideoAlphaMode) -> Self {
skip_assert_initialized!();
match value {
0 => VideoAlphaMode::Copy,
1 => VideoAlphaMode::Set,
2 => VideoAlphaMode::Mult,
value => VideoAlphaMode::__Unknown(value),
}
}
}
impl StaticType for VideoAlphaMode {
fn static_type() -> Type {
unsafe { from_glib(gst_video_sys::gst_video_alpha_mode_get_type()) }
}
}
impl<'a> FromValueOptional<'a> for VideoAlphaMode {
unsafe fn from_value_optional(value: &Value) -> Option<Self> {
Some(FromValue::from_value(value))
}
}
impl<'a> FromValue<'a> for VideoAlphaMode {
unsafe fn from_value(value: &Value) -> Self {
from_glib(gobject_sys::g_value_get_enum(value.to_glib_none().0))
}
}
impl SetValue for VideoAlphaMode {
unsafe fn set_value(value: &mut Value, this: &Self) {
gobject_sys::g_value_set_enum(value.to_glib_none_mut().0, this.to_glib())
}
}
#[cfg(any(feature = "v1_16", feature = "dox"))] #[cfg(any(feature = "v1_16", feature = "dox"))]
#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)] #[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone, Copy)]
#[non_exhaustive] #[non_exhaustive]
@ -758,6 +760,17 @@ pub enum VideoFormat {
Y410, Y410,
Vuya, Vuya,
Bgr10a2Le, Bgr10a2Le,
Rgb10a2Le,
Y44416be,
Y44416le,
P016Be,
P016Le,
P012Be,
P012Le,
Y212Be,
Y212Le,
Y412Be,
Y412Le,
#[doc(hidden)] #[doc(hidden)]
__Unknown(i32), __Unknown(i32),
} }
@ -854,6 +867,17 @@ impl ToGlib for VideoFormat {
VideoFormat::Y410 => gst_video_sys::GST_VIDEO_FORMAT_Y410, VideoFormat::Y410 => gst_video_sys::GST_VIDEO_FORMAT_Y410,
VideoFormat::Vuya => gst_video_sys::GST_VIDEO_FORMAT_VUYA, VideoFormat::Vuya => gst_video_sys::GST_VIDEO_FORMAT_VUYA,
VideoFormat::Bgr10a2Le => gst_video_sys::GST_VIDEO_FORMAT_BGR10A2_LE, VideoFormat::Bgr10a2Le => gst_video_sys::GST_VIDEO_FORMAT_BGR10A2_LE,
VideoFormat::Rgb10a2Le => gst_video_sys::GST_VIDEO_FORMAT_RGB10A2_LE,
VideoFormat::Y44416be => gst_video_sys::GST_VIDEO_FORMAT_Y444_16BE,
VideoFormat::Y44416le => gst_video_sys::GST_VIDEO_FORMAT_Y444_16LE,
VideoFormat::P016Be => gst_video_sys::GST_VIDEO_FORMAT_P016_BE,
VideoFormat::P016Le => gst_video_sys::GST_VIDEO_FORMAT_P016_LE,
VideoFormat::P012Be => gst_video_sys::GST_VIDEO_FORMAT_P012_BE,
VideoFormat::P012Le => gst_video_sys::GST_VIDEO_FORMAT_P012_LE,
VideoFormat::Y212Be => gst_video_sys::GST_VIDEO_FORMAT_Y212_BE,
VideoFormat::Y212Le => gst_video_sys::GST_VIDEO_FORMAT_Y212_LE,
VideoFormat::Y412Be => gst_video_sys::GST_VIDEO_FORMAT_Y412_BE,
VideoFormat::Y412Le => gst_video_sys::GST_VIDEO_FORMAT_Y412_LE,
VideoFormat::__Unknown(value) => value, VideoFormat::__Unknown(value) => value,
} }
} }
@ -950,6 +974,17 @@ impl FromGlib<gst_video_sys::GstVideoFormat> for VideoFormat {
83 => VideoFormat::Y410, 83 => VideoFormat::Y410,
84 => VideoFormat::Vuya, 84 => VideoFormat::Vuya,
85 => VideoFormat::Bgr10a2Le, 85 => VideoFormat::Bgr10a2Le,
86 => VideoFormat::Rgb10a2Le,
87 => VideoFormat::Y44416be,
88 => VideoFormat::Y44416le,
89 => VideoFormat::P016Be,
90 => VideoFormat::P016Le,
91 => VideoFormat::P012Be,
92 => VideoFormat::P012Le,
93 => VideoFormat::Y212Be,
94 => VideoFormat::Y212Le,
95 => VideoFormat::Y412Be,
96 => VideoFormat::Y412Le,
value => VideoFormat::__Unknown(value), value => VideoFormat::__Unknown(value),
} }
} }
@ -1575,6 +1610,9 @@ pub enum VideoTransferFunction {
Log316, Log316,
Bt202012, Bt202012,
Adobergb, Adobergb,
Bt202010,
Smpte2084,
AribStdB67,
#[doc(hidden)] #[doc(hidden)]
__Unknown(i32), __Unknown(i32),
} }
@ -1598,6 +1636,9 @@ impl ToGlib for VideoTransferFunction {
VideoTransferFunction::Log316 => gst_video_sys::GST_VIDEO_TRANSFER_LOG316, VideoTransferFunction::Log316 => gst_video_sys::GST_VIDEO_TRANSFER_LOG316,
VideoTransferFunction::Bt202012 => gst_video_sys::GST_VIDEO_TRANSFER_BT2020_12, VideoTransferFunction::Bt202012 => gst_video_sys::GST_VIDEO_TRANSFER_BT2020_12,
VideoTransferFunction::Adobergb => gst_video_sys::GST_VIDEO_TRANSFER_ADOBERGB, VideoTransferFunction::Adobergb => gst_video_sys::GST_VIDEO_TRANSFER_ADOBERGB,
VideoTransferFunction::Bt202010 => gst_video_sys::GST_VIDEO_TRANSFER_BT2020_10,
VideoTransferFunction::Smpte2084 => gst_video_sys::GST_VIDEO_TRANSFER_SMPTE2084,
VideoTransferFunction::AribStdB67 => gst_video_sys::GST_VIDEO_TRANSFER_ARIB_STD_B67,
VideoTransferFunction::__Unknown(value) => value, VideoTransferFunction::__Unknown(value) => value,
} }
} }
@ -1621,6 +1662,9 @@ impl FromGlib<gst_video_sys::GstVideoTransferFunction> for VideoTransferFunction
10 => VideoTransferFunction::Log316, 10 => VideoTransferFunction::Log316,
11 => VideoTransferFunction::Bt202012, 11 => VideoTransferFunction::Bt202012,
12 => VideoTransferFunction::Adobergb, 12 => VideoTransferFunction::Adobergb,
13 => VideoTransferFunction::Bt202010,
14 => VideoTransferFunction::Smpte2084,
15 => VideoTransferFunction::AribStdB67,
value => VideoTransferFunction::__Unknown(value), value => VideoTransferFunction::__Unknown(value),
} }
} }

View file

@ -22,6 +22,7 @@ bitflags! {
const FIRST_IN_BUNDLE = 33554432; const FIRST_IN_BUNDLE = 33554432;
const TOP_FIELD = 10485760; const TOP_FIELD = 10485760;
const BOTTOM_FIELD = 8388608; const BOTTOM_FIELD = 8388608;
const MARKER = 512;
const LAST = 268435456; const LAST = 268435456;
} }
} }
@ -486,3 +487,31 @@ impl FromGlib<gst_video_sys::GstVideoTimeCodeFlags> for VideoTimeCodeFlags {
VideoTimeCodeFlags::from_bits_truncate(value) VideoTimeCodeFlags::from_bits_truncate(value)
} }
} }
#[cfg(any(feature = "v1_10", feature = "dox"))]
impl StaticType for VideoTimeCodeFlags {
fn static_type() -> Type {
unsafe { from_glib(gst_video_sys::gst_video_time_code_flags_get_type()) }
}
}
#[cfg(any(feature = "v1_10", feature = "dox"))]
impl<'a> FromValueOptional<'a> for VideoTimeCodeFlags {
unsafe fn from_value_optional(value: &Value) -> Option<Self> {
Some(FromValue::from_value(value))
}
}
#[cfg(any(feature = "v1_10", feature = "dox"))]
impl<'a> FromValue<'a> for VideoTimeCodeFlags {
unsafe fn from_value(value: &Value) -> Self {
from_glib(gobject_sys::g_value_get_flags(value.to_glib_none().0))
}
}
#[cfg(any(feature = "v1_10", feature = "dox"))]
impl SetValue for VideoTimeCodeFlags {
unsafe fn set_value(value: &mut Value, this: &Self) {
gobject_sys::g_value_set_flags(value.to_glib_none_mut().0, this.to_glib())
}
}

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -3,10 +3,28 @@
// DO NOT EDIT // DO NOT EDIT
use glib; use glib;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::object::Cast;
use glib::object::IsA; use glib::object::IsA;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::signal::connect_raw;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::StaticType;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::Value;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib_sys;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use gobject_sys;
use gst; use gst;
use gst_video_sys; use gst_video_sys;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use std::boxed::Box as Box_;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use std::mem::transmute;
use VideoCodecFrame; use VideoCodecFrame;
glib_wrapper! { glib_wrapper! {
@ -56,6 +74,18 @@ pub trait VideoDecoderExt: 'static {
fn set_packetized(&self, packetized: bool); fn set_packetized(&self, packetized: bool);
fn set_use_default_pad_acceptcaps(&self, use_: bool); fn set_use_default_pad_acceptcaps(&self, use_: bool);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_property_qos(&self) -> bool;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_property_qos(&self, qos: bool);
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_qos_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId;
} }
impl<O: IsA<VideoDecoder>> VideoDecoderExt for O { impl<O: IsA<VideoDecoder>> VideoDecoderExt for O {
@ -190,4 +220,59 @@ impl<O: IsA<VideoDecoder>> VideoDecoderExt for O {
); );
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_property_qos(&self) -> bool {
unsafe {
let mut value = Value::from_type(<bool as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"qos\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `qos` getter")
.unwrap()
}
}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn set_property_qos(&self, qos: bool) {
unsafe {
gobject_sys::g_object_set_property(
self.to_glib_none().0 as *mut gobject_sys::GObject,
b"qos\0".as_ptr() as *const _,
Value::from(&qos).to_glib_none().0,
);
}
}
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn connect_property_qos_notify<F: Fn(&Self) + Send + Sync + 'static>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_qos_trampoline<P, F: Fn(&P) + Send + Sync + 'static>(
this: *mut gst_video_sys::GstVideoDecoder,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) where
P: IsA<VideoDecoder>,
{
let f: &F = &*(f as *const F);
f(&VideoDecoder::from_glib_borrow(this).unsafe_cast_ref())
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::qos\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_qos_trampoline::<Self, F> as *const (),
)),
Box_::into_raw(f),
)
}
}
} }

View file

@ -38,7 +38,6 @@ pub trait VideoEncoderExtManual: 'static {
frame: Option<VideoCodecFrame>, frame: Option<VideoCodecFrame>,
) -> Result<gst::FlowSuccess, gst::FlowError>; ) -> Result<gst::FlowSuccess, gst::FlowError>;
#[cfg(any(feature = "v1_18", feature = "dox"))] #[cfg(any(feature = "v1_18", feature = "dox"))]
fn finish_subframe(&self, frame: &VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>; fn finish_subframe(&self, frame: &VideoCodecFrame) -> Result<gst::FlowSuccess, gst::FlowError>;

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -3,13 +3,25 @@
// DO NOT EDIT // DO NOT EDIT
use glib::object::ObjectType as ObjectType_; use glib::object::ObjectType as ObjectType_;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::signal::connect_raw;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib::signal::SignalHandlerId;
use glib::translate::*; use glib::translate::*;
use glib::StaticType; use glib::StaticType;
use glib::Value; use glib::Value;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use glib_sys;
use gobject_sys; use gobject_sys;
use gst_web_rtc_sys; use gst_web_rtc_sys;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use std::boxed::Box as Box_;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use std::mem::transmute;
use WebRTCRTPReceiver; use WebRTCRTPReceiver;
use WebRTCRTPSender; use WebRTCRTPSender;
#[cfg(any(feature = "v1_18", feature = "dox"))]
use WebRTCRTPTransceiverDirection;
glib_wrapper! { glib_wrapper! {
pub struct WebRTCRTPTransceiver(Object<gst_web_rtc_sys::GstWebRTCRTPTransceiver, gst_web_rtc_sys::GstWebRTCRTPTransceiverClass, WebRTCRTPTransceiverClass>); pub struct WebRTCRTPTransceiver(Object<gst_web_rtc_sys::GstWebRTCRTPTransceiver, gst_web_rtc_sys::GstWebRTCRTPTransceiverClass, WebRTCRTPTransceiverClass>);
@ -20,6 +32,34 @@ glib_wrapper! {
} }
impl WebRTCRTPTransceiver { impl WebRTCRTPTransceiver {
#[cfg(any(feature = "v1_18", feature = "dox"))]
pub fn get_property_direction(&self) -> WebRTCRTPTransceiverDirection {
unsafe {
let mut value =
Value::from_type(<WebRTCRTPTransceiverDirection as StaticType>::static_type());
gobject_sys::g_object_get_property(
self.as_ptr() as *mut gobject_sys::GObject,
b"direction\0".as_ptr() as *const _,
value.to_glib_none_mut().0,
);
value
.get()
.expect("Return Value for property `direction` getter")
.unwrap()
}
}
#[cfg(any(feature = "v1_18", feature = "dox"))]
pub fn set_property_direction(&self, direction: WebRTCRTPTransceiverDirection) {
unsafe {
gobject_sys::g_object_set_property(
self.as_ptr() as *mut gobject_sys::GObject,
b"direction\0".as_ptr() as *const _,
Value::from(&direction).to_glib_none().0,
);
}
}
pub fn get_property_mlineindex(&self) -> u32 { pub fn get_property_mlineindex(&self) -> u32 {
unsafe { unsafe {
let mut value = Value::from_type(<u32 as StaticType>::static_type()); let mut value = Value::from_type(<u32 as StaticType>::static_type());
@ -62,6 +102,36 @@ impl WebRTCRTPTransceiver {
.expect("Return Value for property `sender` getter") .expect("Return Value for property `sender` getter")
} }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
pub fn connect_property_direction_notify<
F: Fn(&WebRTCRTPTransceiver) + Send + Sync + 'static,
>(
&self,
f: F,
) -> SignalHandlerId {
unsafe extern "C" fn notify_direction_trampoline<
F: Fn(&WebRTCRTPTransceiver) + Send + Sync + 'static,
>(
this: *mut gst_web_rtc_sys::GstWebRTCRTPTransceiver,
_param_spec: glib_sys::gpointer,
f: glib_sys::gpointer,
) {
let f: &F = &*(f as *const F);
f(&from_glib_borrow(this))
}
unsafe {
let f: Box_<F> = Box_::new(f);
connect_raw(
self.as_ptr() as *mut _,
b"notify::direction\0".as_ptr() as *const _,
Some(transmute::<_, unsafe extern "C" fn()>(
notify_direction_trampoline::<F> as *const (),
)),
Box_::into_raw(f),
)
}
}
} }
unsafe impl Send for WebRTCRTPTransceiver {} unsafe impl Send for WebRTCRTPTransceiver {}

View file

@ -40,7 +40,7 @@ pub const NONE_ALLOCATOR: Option<&Allocator> = None;
pub trait AllocatorExt: 'static { pub trait AllocatorExt: 'static {
//fn alloc(&self, size: usize, params: /*Ignored*/Option<&mut AllocationParams>) -> /*Ignored*/Option<Memory>; //fn alloc(&self, size: usize, params: /*Ignored*/Option<&mut AllocationParams>) -> /*Ignored*/Option<Memory>;
//fn free(&self, memory: /*Ignored*/&mut Memory); //fn free(&self, memory: /*Ignored*/&Memory);
fn set_default(&self); fn set_default(&self);
} }
@ -50,7 +50,7 @@ impl<O: IsA<Allocator>> AllocatorExt for O {
// unsafe { TODO: call gst_sys:gst_allocator_alloc() } // unsafe { TODO: call gst_sys:gst_allocator_alloc() }
//} //}
//fn free(&self, memory: /*Ignored*/&mut Memory) { //fn free(&self, memory: /*Ignored*/&Memory) {
// unsafe { TODO: call gst_sys:gst_allocator_free() } // unsafe { TODO: call gst_sys:gst_allocator_free() }
//} //}

View file

@ -61,6 +61,9 @@ pub trait GstBinExt: 'static {
#[cfg(any(feature = "v1_10", feature = "dox"))] #[cfg(any(feature = "v1_10", feature = "dox"))]
fn get_suppressed_flags(&self) -> ElementFlags; fn get_suppressed_flags(&self) -> ElementFlags;
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn iterate_all_by_element_factory_name(&self, factory_name: &str) -> /*Ignored*/Option<Iterator>;
//fn iterate_all_by_interface(&self, iface: glib::types::Type) -> /*Ignored*/Option<Iterator>; //fn iterate_all_by_interface(&self, iface: glib::types::Type) -> /*Ignored*/Option<Iterator>;
//fn iterate_elements(&self) -> /*Ignored*/Option<Iterator>; //fn iterate_elements(&self) -> /*Ignored*/Option<Iterator>;
@ -187,6 +190,11 @@ impl<O: IsA<Bin>> GstBinExt for O {
} }
} }
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//fn iterate_all_by_element_factory_name(&self, factory_name: &str) -> /*Ignored*/Option<Iterator> {
// unsafe { TODO: call gst_sys:gst_bin_iterate_all_by_element_factory_name() }
//}
//fn iterate_all_by_interface(&self, iface: glib::types::Type) -> /*Ignored*/Option<Iterator> { //fn iterate_all_by_interface(&self, iface: glib::types::Type) -> /*Ignored*/Option<Iterator> {
// unsafe { TODO: call gst_sys:gst_bin_iterate_all_by_interface() } // unsafe { TODO: call gst_sys:gst_bin_iterate_all_by_interface() }
//} //}

View file

@ -62,11 +62,27 @@ impl DateTime {
unsafe { from_glib_full(gst_sys::gst_date_time_new_from_unix_epoch_local_time(secs)) } unsafe { from_glib_full(gst_sys::gst_date_time_new_from_unix_epoch_local_time(secs)) }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
pub fn new_from_unix_epoch_local_time_usecs(usecs: i64) -> DateTime {
assert_initialized_main_thread!();
unsafe {
from_glib_full(gst_sys::gst_date_time_new_from_unix_epoch_local_time_usecs(
usecs,
))
}
}
pub fn new_from_unix_epoch_utc(secs: i64) -> DateTime { pub fn new_from_unix_epoch_utc(secs: i64) -> DateTime {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { from_glib_full(gst_sys::gst_date_time_new_from_unix_epoch_utc(secs)) } unsafe { from_glib_full(gst_sys::gst_date_time_new_from_unix_epoch_utc(secs)) }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
pub fn new_from_unix_epoch_utc_usecs(usecs: i64) -> DateTime {
assert_initialized_main_thread!();
unsafe { from_glib_full(gst_sys::gst_date_time_new_from_unix_epoch_utc_usecs(usecs)) }
}
pub fn new_local_time( pub fn new_local_time(
year: i32, year: i32,
month: i32, month: i32,

View file

@ -338,6 +338,7 @@ pub enum ClockType {
Realtime, Realtime,
Monotonic, Monotonic,
Other, Other,
Tai,
#[doc(hidden)] #[doc(hidden)]
__Unknown(i32), __Unknown(i32),
} }
@ -351,6 +352,7 @@ impl ToGlib for ClockType {
ClockType::Realtime => gst_sys::GST_CLOCK_TYPE_REALTIME, ClockType::Realtime => gst_sys::GST_CLOCK_TYPE_REALTIME,
ClockType::Monotonic => gst_sys::GST_CLOCK_TYPE_MONOTONIC, ClockType::Monotonic => gst_sys::GST_CLOCK_TYPE_MONOTONIC,
ClockType::Other => gst_sys::GST_CLOCK_TYPE_OTHER, ClockType::Other => gst_sys::GST_CLOCK_TYPE_OTHER,
ClockType::Tai => gst_sys::GST_CLOCK_TYPE_TAI,
ClockType::__Unknown(value) => value, ClockType::__Unknown(value) => value,
} }
} }
@ -364,6 +366,7 @@ impl FromGlib<gst_sys::GstClockType> for ClockType {
0 => ClockType::Realtime, 0 => ClockType::Realtime,
1 => ClockType::Monotonic, 1 => ClockType::Monotonic,
2 => ClockType::Other, 2 => ClockType::Other,
3 => ClockType::Tai,
value => ClockType::__Unknown(value), value => ClockType::__Unknown(value),
} }
} }
@ -624,6 +627,7 @@ pub enum EventType {
Protection, Protection,
SegmentDone, SegmentDone,
Gap, Gap,
InstantRateChange,
Qos, Qos,
Seek, Seek,
Navigation, Navigation,
@ -632,6 +636,7 @@ pub enum EventType {
Reconfigure, Reconfigure,
TocSelect, TocSelect,
SelectStreams, SelectStreams,
InstantRateSyncTime,
CustomUpstream, CustomUpstream,
CustomDownstream, CustomDownstream,
CustomDownstreamOob, CustomDownstreamOob,
@ -664,6 +669,7 @@ impl ToGlib for EventType {
EventType::Protection => gst_sys::GST_EVENT_PROTECTION, EventType::Protection => gst_sys::GST_EVENT_PROTECTION,
EventType::SegmentDone => gst_sys::GST_EVENT_SEGMENT_DONE, EventType::SegmentDone => gst_sys::GST_EVENT_SEGMENT_DONE,
EventType::Gap => gst_sys::GST_EVENT_GAP, EventType::Gap => gst_sys::GST_EVENT_GAP,
EventType::InstantRateChange => gst_sys::GST_EVENT_INSTANT_RATE_CHANGE,
EventType::Qos => gst_sys::GST_EVENT_QOS, EventType::Qos => gst_sys::GST_EVENT_QOS,
EventType::Seek => gst_sys::GST_EVENT_SEEK, EventType::Seek => gst_sys::GST_EVENT_SEEK,
EventType::Navigation => gst_sys::GST_EVENT_NAVIGATION, EventType::Navigation => gst_sys::GST_EVENT_NAVIGATION,
@ -672,6 +678,7 @@ impl ToGlib for EventType {
EventType::Reconfigure => gst_sys::GST_EVENT_RECONFIGURE, EventType::Reconfigure => gst_sys::GST_EVENT_RECONFIGURE,
EventType::TocSelect => gst_sys::GST_EVENT_TOC_SELECT, EventType::TocSelect => gst_sys::GST_EVENT_TOC_SELECT,
EventType::SelectStreams => gst_sys::GST_EVENT_SELECT_STREAMS, EventType::SelectStreams => gst_sys::GST_EVENT_SELECT_STREAMS,
EventType::InstantRateSyncTime => gst_sys::GST_EVENT_INSTANT_RATE_SYNC_TIME,
EventType::CustomUpstream => gst_sys::GST_EVENT_CUSTOM_UPSTREAM, EventType::CustomUpstream => gst_sys::GST_EVENT_CUSTOM_UPSTREAM,
EventType::CustomDownstream => gst_sys::GST_EVENT_CUSTOM_DOWNSTREAM, EventType::CustomDownstream => gst_sys::GST_EVENT_CUSTOM_DOWNSTREAM,
EventType::CustomDownstreamOob => gst_sys::GST_EVENT_CUSTOM_DOWNSTREAM_OOB, EventType::CustomDownstreamOob => gst_sys::GST_EVENT_CUSTOM_DOWNSTREAM_OOB,
@ -704,6 +711,7 @@ impl FromGlib<gst_sys::GstEventType> for EventType {
33310 => EventType::Protection, 33310 => EventType::Protection,
38406 => EventType::SegmentDone, 38406 => EventType::SegmentDone,
40966 => EventType::Gap, 40966 => EventType::Gap,
46090 => EventType::InstantRateChange,
48641 => EventType::Qos, 48641 => EventType::Qos,
51201 => EventType::Seek, 51201 => EventType::Seek,
53761 => EventType::Navigation, 53761 => EventType::Navigation,
@ -712,6 +720,7 @@ impl FromGlib<gst_sys::GstEventType> for EventType {
61441 => EventType::Reconfigure, 61441 => EventType::Reconfigure,
64001 => EventType::TocSelect, 64001 => EventType::TocSelect,
66561 => EventType::SelectStreams, 66561 => EventType::SelectStreams,
66817 => EventType::InstantRateSyncTime,
69121 => EventType::CustomUpstream, 69121 => EventType::CustomUpstream,
71686 => EventType::CustomDownstream, 71686 => EventType::CustomDownstream,
74242 => EventType::CustomDownstreamOob, 74242 => EventType::CustomDownstreamOob,

View file

@ -992,6 +992,8 @@ bitflags! {
const SNAP_NEAREST = 96; const SNAP_NEAREST = 96;
const TRICKMODE_KEY_UNITS = 128; const TRICKMODE_KEY_UNITS = 128;
const TRICKMODE_NO_AUDIO = 256; const TRICKMODE_NO_AUDIO = 256;
const TRICKMODE_FORWARD_PREDICTED = 512;
const INSTANT_RATE_CHANGE = 1024;
} }
} }
@ -1045,6 +1047,7 @@ bitflags! {
const SKIP = 16; const SKIP = 16;
const SEGMENT = 8; const SEGMENT = 8;
const TRICKMODE_KEY_UNITS = 128; const TRICKMODE_KEY_UNITS = 128;
const TRICKMODE_FORWARD_PREDICTED = 512;
const TRICKMODE_NO_AUDIO = 256; const TRICKMODE_NO_AUDIO = 256;
} }
} }
@ -1093,6 +1096,7 @@ impl SetValue for SegmentFlags {
#[cfg(any(feature = "v1_12", feature = "dox"))] #[cfg(any(feature = "v1_12", feature = "dox"))]
bitflags! { bitflags! {
pub struct StackTraceFlags: u32 { pub struct StackTraceFlags: u32 {
const NONE = 0;
const FULL = 1; const FULL = 1;
} }
} }

View file

@ -210,6 +210,15 @@ pub fn parse_launchv(argv: &[&str]) -> Result<Element, glib::Error> {
} }
} }
//#[cfg(any(feature = "v1_18", feature = "dox"))]
//pub fn tracing_get_active_tracers() -> /*Ignored*/Vec<Tracer> {
// unsafe { TODO: call gst_sys:gst_tracing_get_active_tracers() }
//}
//pub fn tracing_register_hook<P: FnOnce() + Send + Sync + 'static>(tracer: /*Ignored*/&Tracer, detail: &str, func: P) {
// unsafe { TODO: call gst_sys:gst_tracing_register_hook() }
//}
pub fn update_registry() -> Result<(), glib::error::BoolError> { pub fn update_registry() -> Result<(), glib::error::BoolError> {
assert_initialized_main_thread!(); assert_initialized_main_thread!();
unsafe { unsafe {

View file

@ -103,6 +103,9 @@ pub trait PadExt: 'static {
fn get_peer(&self) -> Option<Pad>; fn get_peer(&self) -> Option<Pad>;
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_single_internal_link(&self) -> Option<Pad>;
fn get_sticky_event(&self, event_type: EventType, idx: u32) -> Option<Event>; fn get_sticky_event(&self, event_type: EventType, idx: u32) -> Option<Event>;
#[cfg(any(feature = "v1_10", feature = "dox"))] #[cfg(any(feature = "v1_10", feature = "dox"))]
@ -325,6 +328,15 @@ impl<O: IsA<Pad>> PadExt for O {
unsafe { from_glib_full(gst_sys::gst_pad_get_peer(self.as_ref().to_glib_none().0)) } unsafe { from_glib_full(gst_sys::gst_pad_get_peer(self.as_ref().to_glib_none().0)) }
} }
#[cfg(any(feature = "v1_18", feature = "dox"))]
fn get_single_internal_link(&self) -> Option<Pad> {
unsafe {
from_glib_full(gst_sys::gst_pad_get_single_internal_link(
self.as_ref().to_glib_none().0,
))
}
}
fn get_sticky_event(&self, event_type: EventType, idx: u32) -> Option<Event> { fn get_sticky_event(&self, event_type: EventType, idx: u32) -> Option<Event> {
unsafe { unsafe {
from_glib_full(gst_sys::gst_pad_get_sticky_event( from_glib_full(gst_sys::gst_pad_get_sticky_event(

View file

@ -1,2 +1,2 @@
Generated by gir (https://github.com/gtk-rs/gir @ b3eb90b) Generated by gir (https://github.com/gtk-rs/gir @ 4c1faa0)
from gir-files (https://github.com/gtk-rs/gir-files @ 5ccbec37) from gir-files (https://github.com/gtk-rs/gir-files @ 333658f7)

View file

@ -31,7 +31,6 @@ pub trait UnixBusExtManual: 'static {
} }
impl UnixBusExtManual for Bus { impl UnixBusExtManual for Bus {
/// This is supported on **Unix** only.
fn get_pollfd(&self) -> unix::io::RawFd { fn get_pollfd(&self) -> unix::io::RawFd {
#[cfg(unix)] #[cfg(unix)]
unsafe { unsafe {

View file

@ -31,7 +31,6 @@ pub trait WindowsBusExtManual: 'static {
} }
impl WindowsBusExtManual for Bus { impl WindowsBusExtManual for Bus {
/// This is supported on **Windows** only.
fn get_pollfd(&self) -> windows::io::RawHandle { fn get_pollfd(&self) -> windows::io::RawHandle {
#[cfg(windows)] #[cfg(windows)]
unsafe { unsafe {

View file

@ -13,7 +13,6 @@ use std::fmt;
use DateTime; use DateTime;
impl DateTime { impl DateTime {
/// Get the [`DateTime`](struct.DateTime.html) in UTC
pub fn to_utc(&self) -> Result<DateTime, glib::BoolError> { pub fn to_utc(&self) -> Result<DateTime, glib::BoolError> {
if !self.has_time() { if !self.has_time() {
// No time => no TZ offset // No time => no TZ offset
@ -67,25 +66,25 @@ impl DateTime {
} }
impl cmp::PartialOrd for DateTime { impl cmp::PartialOrd for DateTime {
/// *NOTE 1:* When comparing a partially defined [`DateTime`](struct.DateTime.html) `d1` // *NOTE 1:* When comparing a partially defined [`DateTime`](struct.DateTime.html) `d1`
/// such as *"2019/8/20"* with a [`DateTime`](struct.DateTime.html) with a time part `d2` // such as *"2019/8/20"* with a [`DateTime`](struct.DateTime.html) with a time part `d2`
/// such as *"2019/8/20 21:10"*: // such as *"2019/8/20 21:10"*:
/// //
/// - `d1` includes `d2`, // - `d1` includes `d2`,
/// - neither `d1` < `d2` nor `d1` > `d2`, // - neither `d1` < `d2` nor `d1` > `d2`,
/// - and `d1` != `d2`, // - and `d1` != `d2`,
/// //
/// so we can only return `None`. // so we can only return `None`.
/// //
/// This is the reason why [`DateTime`](struct.DateTime.html) neither implements // This is the reason why [`DateTime`](struct.DateTime.html) neither implements
/// [`Ord`](https://doc.rust-lang.org/nightly/std/cmp/trait.Ord.html) // [`Ord`](https://doc.rust-lang.org/nightly/std/cmp/trait.Ord.html)
/// nor [`Eq`](https://doc.rust-lang.org/nightly/std/cmp/trait.Eq.html). // nor [`Eq`](https://doc.rust-lang.org/nightly/std/cmp/trait.Eq.html).
/// //
/// *NOTE 2:* When comparing a [`DateTime`](struct.DateTime.html) `d1` without a TZ offset // *NOTE 2:* When comparing a [`DateTime`](struct.DateTime.html) `d1` without a TZ offset
/// such as *"2019/8/20"* with a [`DateTime`](struct.DateTime.html) `d2` with a TZ offset // such as *"2019/8/20"* with a [`DateTime`](struct.DateTime.html) `d2` with a TZ offset
/// such as *"2019/8/20 21:10 +02:00"*, we can't tell in which TZ `d1` is expressed and which // such as *"2019/8/20 21:10 +02:00"*, we can't tell in which TZ `d1` is expressed and which
/// time should be considered for an offset, therefore the two [`DateTime`s](struct.DateTime.html) // time should be considered for an offset, therefore the two [`DateTime`s](struct.DateTime.html)
/// are compared in the same TZ. // are compared in the same TZ.
fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> { fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
#[inline] #[inline]
fn get_cmp(delta: i32) -> Option<cmp::Ordering> { fn get_cmp(delta: i32) -> Option<cmp::Ordering> {
@ -187,7 +186,6 @@ impl cmp::PartialOrd for DateTime {
} }
impl cmp::PartialEq for DateTime { impl cmp::PartialEq for DateTime {
/// See the notes for the [`DateTime` `PartialOrd` trait](struct.DateTime.html#impl-PartialOrd%3CDateTime%3E)
fn eq(&self, other: &Self) -> bool { fn eq(&self, other: &Self) -> bool {
self.partial_cmp(other) self.partial_cmp(other)
.map_or_else(|| false, |cmp| cmp == cmp::Ordering::Equal) .map_or_else(|| false, |cmp| cmp == cmp::Ordering::Equal)

View file

@ -28,9 +28,6 @@ use glib_sys::gpointer;
use gobject_sys; use gobject_sys;
use gst_sys; use gst_sys;
/// An error returned from the [`get`](struct.StructureRef.html#method.get)
/// or [`get_some`](struct.StructureRef.html#method.get_some) functions
/// on a [`StructureRef`](struct.StructureRef.html)
#[derive(Clone, Debug, Eq, PartialEq)] #[derive(Clone, Debug, Eq, PartialEq)]
pub enum GetError<'name> { pub enum GetError<'name> {
FieldNotFound { FieldNotFound {