2018-10-31 16:10:30 +00:00
// 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
use Error ;
use PipelineFlags ;
use Timeline ;
use ffi ;
use glib ;
use glib ::StaticType ;
use glib ::Value ;
2019-01-16 11:32:39 +00:00
use glib ::object ::Cast ;
2018-10-31 16:10:30 +00:00
use glib ::object ::IsA ;
use glib ::signal ::SignalHandlerId ;
2018-12-08 09:05:20 +00:00
use glib ::signal ::connect_raw ;
2018-10-31 16:10:30 +00:00
use glib ::translate ::* ;
use glib_ffi ;
use gobject_ffi ;
use gst ;
use gst_pbutils ;
use std ::boxed ::Box as Box_ ;
use std ::mem ::transmute ;
use std ::ptr ;
glib_wrapper! {
2019-01-16 11:32:39 +00:00
pub struct Pipeline ( Object < ffi ::GESPipeline , ffi ::GESPipelineClass , PipelineClass > ) @ extends gst ::Pipeline , gst ::Element , gst ::Object ;
2018-10-31 16:10:30 +00:00
match fn {
get_type = > | | ffi ::ges_pipeline_get_type ( ) ,
}
}
impl Pipeline {
pub fn new ( ) -> Pipeline {
assert_initialized_main_thread! ( ) ;
unsafe {
from_glib_none ( ffi ::ges_pipeline_new ( ) )
}
}
}
impl Default for Pipeline {
fn default ( ) -> Self {
Self ::new ( )
}
}
2019-01-16 11:32:39 +00:00
pub const NONE_PIPELINE : Option < & Pipeline > = None ;
2018-12-08 09:05:20 +00:00
pub trait GESPipelineExt : 'static {
2018-10-31 16:10:30 +00:00
fn get_mode ( & self ) -> PipelineFlags ;
fn get_thumbnail ( & self , caps : & gst ::Caps ) -> Option < gst ::Sample > ;
fn get_thumbnail_rgb24 ( & self , width : i32 , height : i32 ) -> Option < gst ::Sample > ;
fn preview_get_audio_sink ( & self ) -> Option < gst ::Element > ;
fn preview_get_video_sink ( & self ) -> Option < gst ::Element > ;
fn preview_set_audio_sink < P : IsA < gst ::Element > > ( & self , sink : & P ) ;
fn preview_set_video_sink < P : IsA < gst ::Element > > ( & self , sink : & P ) ;
fn save_thumbnail ( & self , width : i32 , height : i32 , format : & str , location : & str ) -> Result < ( ) , Error > ;
2018-11-04 18:30:58 +00:00
fn set_mode ( & self , mode : PipelineFlags ) -> Result < ( ) , glib ::error ::BoolError > ;
2018-10-31 16:10:30 +00:00
2018-11-04 18:30:58 +00:00
fn set_render_settings < P : IsA < gst_pbutils ::EncodingProfile > > ( & self , output_uri : & str , profile : & P ) -> Result < ( ) , glib ::error ::BoolError > ;
2018-10-31 16:10:30 +00:00
2019-02-07 10:03:01 +00:00
fn set_timeline < P : IsA < Timeline > > ( & self , timeline : & P ) -> Result < ( ) , glib ::error ::BoolError > ;
2018-10-31 16:10:30 +00:00
fn get_property_audio_filter ( & self ) -> Option < gst ::Element > ;
2018-12-08 09:05:20 +00:00
fn set_property_audio_filter < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , audio_filter : Option < & P > ) ;
2018-10-31 16:10:30 +00:00
fn get_property_audio_sink ( & self ) -> Option < gst ::Element > ;
2018-12-08 09:05:20 +00:00
fn set_property_audio_sink < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , audio_sink : Option < & P > ) ;
2018-10-31 16:10:30 +00:00
fn get_property_timeline ( & self ) -> Option < Timeline > ;
fn get_property_video_filter ( & self ) -> Option < gst ::Element > ;
2018-12-08 09:05:20 +00:00
fn set_property_video_filter < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , video_filter : Option < & P > ) ;
2018-10-31 16:10:30 +00:00
fn get_property_video_sink ( & self ) -> Option < gst ::Element > ;
2018-12-08 09:05:20 +00:00
fn set_property_video_sink < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , video_sink : Option < & P > ) ;
2018-10-31 16:10:30 +00:00
fn connect_property_audio_filter_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_audio_sink_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_mode_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_timeline_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_video_filter_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId ;
fn connect_property_video_sink_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId ;
}
2018-12-08 09:05:20 +00:00
impl < O : IsA < Pipeline > > GESPipelineExt for O {
2018-10-31 16:10:30 +00:00
fn get_mode ( & self ) -> PipelineFlags {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib ( ffi ::ges_pipeline_get_mode ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-10-31 16:10:30 +00:00
}
}
fn get_thumbnail ( & self , caps : & gst ::Caps ) -> Option < gst ::Sample > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::ges_pipeline_get_thumbnail ( self . as_ref ( ) . to_glib_none ( ) . 0 , caps . to_glib_none ( ) . 0 ) )
2018-10-31 16:10:30 +00:00
}
}
fn get_thumbnail_rgb24 ( & self , width : i32 , height : i32 ) -> Option < gst ::Sample > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::ges_pipeline_get_thumbnail_rgb24 ( self . as_ref ( ) . to_glib_none ( ) . 0 , width , height ) )
2018-10-31 16:10:30 +00:00
}
}
fn preview_get_audio_sink ( & self ) -> Option < gst ::Element > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::ges_pipeline_preview_get_audio_sink ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-10-31 16:10:30 +00:00
}
}
fn preview_get_video_sink ( & self ) -> Option < gst ::Element > {
unsafe {
2019-01-16 11:32:39 +00:00
from_glib_full ( ffi ::ges_pipeline_preview_get_video_sink ( self . as_ref ( ) . to_glib_none ( ) . 0 ) )
2018-10-31 16:10:30 +00:00
}
}
fn preview_set_audio_sink < P : IsA < gst ::Element > > ( & self , sink : & P ) {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::ges_pipeline_preview_set_audio_sink ( self . as_ref ( ) . to_glib_none ( ) . 0 , sink . as_ref ( ) . to_glib_none ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
}
}
fn preview_set_video_sink < P : IsA < gst ::Element > > ( & self , sink : & P ) {
unsafe {
2019-01-16 11:32:39 +00:00
ffi ::ges_pipeline_preview_set_video_sink ( self . as_ref ( ) . to_glib_none ( ) . 0 , sink . as_ref ( ) . to_glib_none ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
}
}
fn save_thumbnail ( & self , width : i32 , height : i32 , format : & str , location : & str ) -> Result < ( ) , Error > {
unsafe {
let mut error = ptr ::null_mut ( ) ;
2019-01-16 11:32:39 +00:00
let _ = ffi ::ges_pipeline_save_thumbnail ( self . as_ref ( ) . to_glib_none ( ) . 0 , width , height , format . to_glib_none ( ) . 0 , location . to_glib_none ( ) . 0 , & mut error ) ;
2018-10-31 16:10:30 +00:00
if error . is_null ( ) { Ok ( ( ) ) } else { Err ( from_glib_full ( error ) ) }
}
}
2018-11-04 18:30:58 +00:00
fn set_mode ( & self , mode : PipelineFlags ) -> Result < ( ) , glib ::error ::BoolError > {
2018-10-31 16:10:30 +00:00
unsafe {
2019-01-16 11:32:39 +00:00
glib_result_from_gboolean! ( ffi ::ges_pipeline_set_mode ( self . as_ref ( ) . to_glib_none ( ) . 0 , mode . to_glib ( ) ) , " Failed to set mode " )
2018-10-31 16:10:30 +00:00
}
}
2018-11-04 18:30:58 +00:00
fn set_render_settings < P : IsA < gst_pbutils ::EncodingProfile > > ( & self , output_uri : & str , profile : & P ) -> Result < ( ) , glib ::error ::BoolError > {
2018-10-31 16:10:30 +00:00
unsafe {
2019-01-16 11:32:39 +00:00
glib_result_from_gboolean! ( ffi ::ges_pipeline_set_render_settings ( self . as_ref ( ) . to_glib_none ( ) . 0 , output_uri . to_glib_none ( ) . 0 , profile . as_ref ( ) . to_glib_none ( ) . 0 ) , " Failed to set render settings " )
2018-10-31 16:10:30 +00:00
}
}
2019-02-07 10:03:01 +00:00
fn set_timeline < P : IsA < Timeline > > ( & self , timeline : & P ) -> Result < ( ) , glib ::error ::BoolError > {
2018-10-31 16:10:30 +00:00
unsafe {
2019-02-07 10:03:01 +00:00
glib_result_from_gboolean! ( ffi ::ges_pipeline_set_timeline ( self . as_ref ( ) . to_glib_none ( ) . 0 , timeline . as_ref ( ) . to_glib_full ( ) ) , " Failed to set timeline " )
2018-10-31 16:10:30 +00:00
}
}
fn get_property_audio_filter ( & self ) -> Option < gst ::Element > {
unsafe {
let mut value = Value ::from_type ( < gst ::Element as StaticType > ::static_type ( ) ) ;
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_get_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " audio-filter \0 " . as_ptr ( ) as * const _ , value . to_glib_none_mut ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
value . get ( )
}
}
2018-12-08 09:05:20 +00:00
fn set_property_audio_filter < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , audio_filter : Option < & P > ) {
2018-10-31 16:10:30 +00:00
unsafe {
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_set_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " audio-filter \0 " . as_ptr ( ) as * const _ , Value ::from ( audio_filter ) . to_glib_none ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
}
}
fn get_property_audio_sink ( & self ) -> Option < gst ::Element > {
unsafe {
let mut value = Value ::from_type ( < gst ::Element as StaticType > ::static_type ( ) ) ;
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_get_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " audio-sink \0 " . as_ptr ( ) as * const _ , value . to_glib_none_mut ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
value . get ( )
}
}
2018-12-08 09:05:20 +00:00
fn set_property_audio_sink < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , audio_sink : Option < & P > ) {
2018-10-31 16:10:30 +00:00
unsafe {
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_set_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " audio-sink \0 " . as_ptr ( ) as * const _ , Value ::from ( audio_sink ) . to_glib_none ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
}
}
fn get_property_timeline ( & self ) -> Option < Timeline > {
unsafe {
let mut value = Value ::from_type ( < Timeline as StaticType > ::static_type ( ) ) ;
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_get_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " timeline \0 " . as_ptr ( ) as * const _ , value . to_glib_none_mut ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
value . get ( )
}
}
fn get_property_video_filter ( & self ) -> Option < gst ::Element > {
unsafe {
let mut value = Value ::from_type ( < gst ::Element as StaticType > ::static_type ( ) ) ;
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_get_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " video-filter \0 " . as_ptr ( ) as * const _ , value . to_glib_none_mut ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
value . get ( )
}
}
2018-12-08 09:05:20 +00:00
fn set_property_video_filter < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , video_filter : Option < & P > ) {
2018-10-31 16:10:30 +00:00
unsafe {
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_set_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " video-filter \0 " . as_ptr ( ) as * const _ , Value ::from ( video_filter ) . to_glib_none ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
}
}
fn get_property_video_sink ( & self ) -> Option < gst ::Element > {
unsafe {
let mut value = Value ::from_type ( < gst ::Element as StaticType > ::static_type ( ) ) ;
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_get_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " video-sink \0 " . as_ptr ( ) as * const _ , value . to_glib_none_mut ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
value . get ( )
}
}
2018-12-08 09:05:20 +00:00
fn set_property_video_sink < P : IsA < gst ::Element > + glib ::value ::SetValueOptional > ( & self , video_sink : Option < & P > ) {
2018-10-31 16:10:30 +00:00
unsafe {
2018-12-08 09:05:20 +00:00
gobject_ffi ::g_object_set_property ( self . to_glib_none ( ) . 0 as * mut gobject_ffi ::GObject , b " video-sink \0 " . as_ptr ( ) as * const _ , Value ::from ( video_sink ) . to_glib_none ( ) . 0 ) ;
2018-10-31 16:10:30 +00:00
}
}
fn connect_property_audio_filter_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::audio-filter \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_audio_filter_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-10-31 16:10:30 +00:00
}
}
fn connect_property_audio_sink_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::audio-sink \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_audio_sink_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-10-31 16:10:30 +00:00
}
}
fn connect_property_mode_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::mode \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_mode_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-10-31 16:10:30 +00:00
}
}
fn connect_property_timeline_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::timeline \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_timeline_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-10-31 16:10:30 +00:00
}
}
fn connect_property_video_filter_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::video-filter \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_video_filter_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-10-31 16:10:30 +00:00
}
}
fn connect_property_video_sink_notify < F : Fn ( & Self ) + 'static > ( & self , f : F ) -> SignalHandlerId {
unsafe {
2019-01-29 13:53:44 +00:00
let f : Box_ < F > = Box_ ::new ( f ) ;
2019-01-16 11:32:39 +00:00
connect_raw ( self . as_ptr ( ) as * mut _ , b " notify::video-sink \0 " . as_ptr ( ) as * const _ ,
2019-01-29 13:53:44 +00:00
Some ( transmute ( notify_video_sink_trampoline ::< Self , F > as usize ) ) , Box_ ::into_raw ( f ) )
2018-10-31 16:10:30 +00:00
}
}
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_audio_filter_trampoline < P , F : Fn ( & P ) + 'static > ( this : * mut ffi ::GESPipeline , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-10-31 16:10:30 +00:00
where P : IsA < Pipeline > {
2019-02-22 09:51:17 +00:00
let f : & F = & * ( f as * const F ) ;
2019-01-16 11:32:39 +00:00
f ( & Pipeline ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-10-31 16:10:30 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_audio_sink_trampoline < P , F : Fn ( & P ) + 'static > ( this : * mut ffi ::GESPipeline , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-10-31 16:10:30 +00:00
where P : IsA < Pipeline > {
2019-02-22 09:51:17 +00:00
let f : & F = & * ( f as * const F ) ;
2019-01-16 11:32:39 +00:00
f ( & Pipeline ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-10-31 16:10:30 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_mode_trampoline < P , F : Fn ( & P ) + 'static > ( this : * mut ffi ::GESPipeline , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-10-31 16:10:30 +00:00
where P : IsA < Pipeline > {
2019-02-22 09:51:17 +00:00
let f : & F = & * ( f as * const F ) ;
2019-01-16 11:32:39 +00:00
f ( & Pipeline ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-10-31 16:10:30 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_timeline_trampoline < P , F : Fn ( & P ) + 'static > ( this : * mut ffi ::GESPipeline , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-10-31 16:10:30 +00:00
where P : IsA < Pipeline > {
2019-02-22 09:51:17 +00:00
let f : & F = & * ( f as * const F ) ;
2019-01-16 11:32:39 +00:00
f ( & Pipeline ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-10-31 16:10:30 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_video_filter_trampoline < P , F : Fn ( & P ) + 'static > ( this : * mut ffi ::GESPipeline , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-10-31 16:10:30 +00:00
where P : IsA < Pipeline > {
2019-02-22 09:51:17 +00:00
let f : & F = & * ( f as * const F ) ;
2019-01-16 11:32:39 +00:00
f ( & Pipeline ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-10-31 16:10:30 +00:00
}
2019-01-29 13:53:44 +00:00
unsafe extern " C " fn notify_video_sink_trampoline < P , F : Fn ( & P ) + 'static > ( this : * mut ffi ::GESPipeline , _param_spec : glib_ffi ::gpointer , f : glib_ffi ::gpointer )
2018-10-31 16:10:30 +00:00
where P : IsA < Pipeline > {
2019-02-22 09:51:17 +00:00
let f : & F = & * ( f as * const F ) ;
2019-01-16 11:32:39 +00:00
f ( & Pipeline ::from_glib_borrow ( this ) . unsafe_cast ( ) )
2018-10-31 16:10:30 +00:00
}