2017-06-29 06:02:08 +00:00
// This file was generated by gir (33e9567) from gir-files (???)
2017-05-12 12:24:03 +00:00
// DO NOT EDIT
use Bus ;
use Clock ;
use ClockTime ;
use ElementFactory ;
use Error ;
use Format ;
2017-07-03 10:56:26 +00:00
use Message ;
2017-05-12 12:24:03 +00:00
use Object ;
use Pad ;
use PadTemplate ;
2017-07-03 11:06:08 +00:00
use Plugin ;
2017-05-12 12:24:03 +00:00
use SeekFlags ;
use SeekType ;
use State ;
use StateChange ;
use StateChangeReturn ;
use URIType ;
use ffi ;
use glib ;
use glib ::object ::Downcast ;
use glib ::object ::IsA ;
use glib ::signal ::connect ;
use glib ::translate ::* ;
use glib_ffi ;
#[ cfg(feature = " v1_10 " ) ]
use libc ;
use std ::boxed ::Box as Box_ ;
use std ::mem ;
use std ::mem ::transmute ;
use std ::ptr ;
glib_wrapper! {
pub struct Element ( Object < ffi ::GstElement > ) : Object ;
match fn {
get_type = > | | ffi ::gst_element_get_type ( ) ,
}
}
impl Element {
pub fn make_from_uri < ' a , P : Into < Option < & ' a str > > > ( type_ : URIType , uri : & str , elementname : P ) -> Result < Element , Error > {
let elementname = elementname . into ( ) ;
let elementname = elementname . to_glib_none ( ) ;
unsafe {
let mut error = ptr ::null_mut ( ) ;
let ret = ffi ::gst_element_make_from_uri ( type_ . to_glib ( ) , uri . to_glib_none ( ) . 0 , elementname . 0 , & mut error ) ;
if error . is_null ( ) { Ok ( from_glib_none ( ret ) ) } else { Err ( from_glib_full ( error ) ) }
}
}
2017-07-03 11:06:08 +00:00
pub fn register < ' a , P : Into < Option < & ' a Plugin > > > ( plugin : P , name : & str , rank : u32 , type_ : glib ::types ::Type ) -> bool {
let plugin = plugin . into ( ) ;
let plugin = plugin . to_glib_none ( ) ;
unsafe {
from_glib ( ffi ::gst_element_register ( plugin . 0 , name . to_glib_none ( ) . 0 , rank , type_ . to_glib ( ) ) )
}
}
2017-05-12 12:24:03 +00:00
pub fn state_change_return_get_name ( state_ret : StateChangeReturn ) -> Option < String > {
unsafe {
from_glib_none ( ffi ::gst_element_state_change_return_get_name ( state_ret . to_glib ( ) ) )
}
}
pub fn state_get_name ( state : State ) -> Option < String > {
unsafe {
from_glib_none ( ffi ::gst_element_state_get_name ( state . to_glib ( ) ) )
}
}
}
2017-06-25 08:04:37 +00:00
unsafe impl Send for Element { }
unsafe impl Sync for Element { }
2017-05-12 12:24:03 +00:00
pub trait ElementExt {
fn abort_state ( & self ) ;
2017-06-24 09:02:24 +00:00
fn add_pad < P : IsA < Pad > > ( & self , pad : & P ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
#[ cfg(feature = " v1_10 " ) ]
fn add_property_deep_notify_watch < ' a , P : Into < Option < & ' a str > > > ( & self , property_name : P , include_value : bool ) -> libc ::c_ulong ;
#[ cfg(feature = " v1_10 " ) ]
fn add_property_notify_watch < ' a , P : Into < Option < & ' a str > > > ( & self , property_name : P , include_value : bool ) -> libc ::c_ulong ;
//#[cfg(feature = "v1_10")]
//fn call_async<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(&self, func: /*Unknown conversion*//*Unimplemented*/ElementCallAsyncFunc, user_data: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify);
fn change_state ( & self , transition : StateChange ) -> StateChangeReturn ;
fn continue_state ( & self , ret : StateChangeReturn ) -> StateChangeReturn ;
fn create_all_pads ( & self ) ;
fn get_base_time ( & self ) -> ClockTime ;
fn get_bus ( & self ) -> Option < Bus > ;
fn get_clock ( & self ) -> Option < Clock > ;
//fn get_compatible_pad<'a, P: IsA<Pad>, Q: Into<Option<&'a /*Ignored*/Caps>>>(&self, pad: &P, caps: Q) -> Option<Pad>;
fn get_compatible_pad_template ( & self , compattempl : & PadTemplate ) -> Option < PadTemplate > ;
//#[cfg(feature = "v1_8")]
//fn get_context(&self, context_type: &str) -> /*Ignored*/Option<Context>;
//#[cfg(feature = "v1_8")]
//fn get_context_unlocked(&self, context_type: &str) -> /*Ignored*/Option<Context>;
//#[cfg(feature = "v1_8")]
//fn get_contexts(&self) -> /*Ignored*/Vec<Context>;
fn get_factory ( & self ) -> Option < ElementFactory > ;
fn get_request_pad ( & self , name : & str ) -> Option < Pad > ;
fn get_start_time ( & self ) -> ClockTime ;
fn get_state ( & self , timeout : ClockTime ) -> ( StateChangeReturn , State , State ) ;
fn get_static_pad ( & self , name : & str ) -> Option < Pad > ;
fn is_locked_state ( & self ) -> bool ;
//fn iterate_pads(&self) -> /*Ignored*/Option<Iterator>;
//fn iterate_sink_pads(&self) -> /*Ignored*/Option<Iterator>;
//fn iterate_src_pads(&self) -> /*Ignored*/Option<Iterator>;
2017-06-24 09:02:24 +00:00
fn link < P : IsA < Element > > ( & self , dest : & P ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
//fn link_filtered<'a, P: IsA<Element>, Q: Into<Option<&'a /*Ignored*/Caps>>>(&self, dest: &P, filter: Q) -> bool;
//fn link_many<P: IsA<Element>>(&self, element_2: &P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool;
2017-06-24 09:02:24 +00:00
fn link_pads < ' a , ' b , P : Into < Option < & ' a str > > , Q : IsA < Element > , R : Into < Option < & ' b str > > > ( & self , srcpadname : P , dest : & Q , destpadname : R ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
//fn link_pads_filtered<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: IsA<Element>, R: Into<Option<&'b str>>, S: Into<Option<&'c /*Ignored*/Caps>>>(&self, srcpadname: P, dest: &Q, destpadname: R, filter: S) -> bool;
//fn link_pads_full<'a, 'b, P: Into<Option<&'a str>>, Q: IsA<Element>, R: Into<Option<&'b str>>>(&self, srcpadname: P, dest: &Q, destpadname: R, flags: /*Ignored*/PadLinkCheck) -> bool;
fn lost_state ( & self ) ;
2017-07-03 10:56:26 +00:00
//fn message_full<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, type_: MessageType, domain: /*Ignored*/glib::Quark, code: i32, text: P, debug: Q, file: &str, function: &str, line: i32);
2017-05-12 12:24:03 +00:00
//#[cfg(feature = "v1_10")]
2017-07-03 10:56:26 +00:00
//fn message_full_with_details<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, type_: MessageType, domain: /*Ignored*/glib::Quark, code: i32, text: P, debug: Q, file: &str, function: &str, line: i32, structure: /*Ignored*/&mut Structure);
2017-05-12 12:24:03 +00:00
fn no_more_pads ( & self ) ;
2017-07-03 10:56:26 +00:00
fn post_message ( & self , message : & mut Message ) -> bool ;
2017-05-12 12:24:03 +00:00
fn provide_clock ( & self ) -> Option < Clock > ;
//fn query(&self, query: /*Ignored*/&mut Query) -> bool;
fn query_convert ( & self , src_format : Format , src_val : i64 , dest_format : Format ) -> Option < i64 > ;
fn query_duration ( & self , format : Format ) -> Option < i64 > ;
fn query_position ( & self , format : Format ) -> Option < i64 > ;
fn release_request_pad < P : IsA < Pad > > ( & self , pad : & P ) ;
2017-06-24 09:02:24 +00:00
fn remove_pad < P : IsA < Pad > > ( & self , pad : & P ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
#[ cfg(feature = " v1_10 " ) ]
fn remove_property_notify_watch ( & self , watch_id : libc ::c_ulong ) ;
//fn request_pad<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b /*Ignored*/Caps>>>(&self, templ: &PadTemplate, name: P, caps: Q) -> Option<Pad>;
2017-06-24 09:02:24 +00:00
fn seek ( & self , rate : f64 , format : Format , flags : SeekFlags , start_type : SeekType , start : i64 , stop_type : SeekType , stop : i64 ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
2017-06-24 09:02:24 +00:00
fn seek_simple ( & self , format : Format , seek_flags : SeekFlags , seek_pos : i64 ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
//fn send_event(&self, event: /*Ignored*/&mut Event) -> bool;
fn set_base_time ( & self , time : ClockTime ) ;
fn set_bus ( & self , bus : & Bus ) ;
2017-06-24 09:02:24 +00:00
fn set_clock < P : IsA < Clock > > ( & self , clock : & P ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
//fn set_context(&self, context: /*Ignored*/&mut Context);
fn set_locked_state ( & self , locked_state : bool ) -> bool ;
fn set_start_time ( & self , time : ClockTime ) ;
fn set_state ( & self , state : State ) -> StateChangeReturn ;
2017-06-24 09:02:24 +00:00
fn sync_state_with_parent ( & self ) -> Result < ( ) , glib ::error ::BoolError > ;
2017-05-12 12:24:03 +00:00
fn unlink < P : IsA < Element > > ( & self , dest : & P ) ;
//fn unlink_many<P: IsA<Element>>(&self, element_2: &P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs);
fn unlink_pads < P : IsA < Element > > ( & self , srcpadname : & str , dest : & P , destpadname : & str ) ;
2017-06-25 08:04:37 +00:00
fn connect_no_more_pads < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> u64 ;
2017-05-12 12:24:03 +00:00
2017-06-25 08:04:37 +00:00
fn connect_pad_added < F : Fn ( & Self , & Pad ) + Send + Sync + 'static > ( & self , f : F ) -> u64 ;
2017-05-12 12:24:03 +00:00
2017-06-25 08:04:37 +00:00
fn connect_pad_removed < F : Fn ( & Self , & Pad ) + Send + Sync + 'static > ( & self , f : F ) -> u64 ;
2017-05-12 12:24:03 +00:00
}
impl < O : IsA < Element > + IsA < glib ::object ::Object > > ElementExt for O {
fn abort_state ( & self ) {
unsafe {
ffi ::gst_element_abort_state ( self . to_glib_none ( ) . 0 ) ;
}
}
2017-06-24 09:02:24 +00:00
fn add_pad < P : IsA < Pad > > ( & self , pad : & P ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_add_pad ( self . to_glib_none ( ) . 0 , pad . to_glib_none ( ) . 0 ) , " Failed to add pad " )
2017-05-12 12:24:03 +00:00
}
}
#[ cfg(feature = " v1_10 " ) ]
fn add_property_deep_notify_watch < ' a , P : Into < Option < & ' a str > > > ( & self , property_name : P , include_value : bool ) -> libc ::c_ulong {
let property_name = property_name . into ( ) ;
let property_name = property_name . to_glib_none ( ) ;
unsafe {
ffi ::gst_element_add_property_deep_notify_watch ( self . to_glib_none ( ) . 0 , property_name . 0 , include_value . to_glib ( ) )
}
}
#[ cfg(feature = " v1_10 " ) ]
fn add_property_notify_watch < ' a , P : Into < Option < & ' a str > > > ( & self , property_name : P , include_value : bool ) -> libc ::c_ulong {
let property_name = property_name . into ( ) ;
let property_name = property_name . to_glib_none ( ) ;
unsafe {
ffi ::gst_element_add_property_notify_watch ( self . to_glib_none ( ) . 0 , property_name . 0 , include_value . to_glib ( ) )
}
}
//#[cfg(feature = "v1_10")]
//fn call_async<P: Into<Option</*Unimplemented*/Fundamental: Pointer>>>(&self, func: /*Unknown conversion*//*Unimplemented*/ElementCallAsyncFunc, user_data: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify) {
// unsafe { TODO: call ffi::gst_element_call_async() }
//}
fn change_state ( & self , transition : StateChange ) -> StateChangeReturn {
unsafe {
from_glib ( ffi ::gst_element_change_state ( self . to_glib_none ( ) . 0 , transition . to_glib ( ) ) )
}
}
fn continue_state ( & self , ret : StateChangeReturn ) -> StateChangeReturn {
unsafe {
from_glib ( ffi ::gst_element_continue_state ( self . to_glib_none ( ) . 0 , ret . to_glib ( ) ) )
}
}
fn create_all_pads ( & self ) {
unsafe {
ffi ::gst_element_create_all_pads ( self . to_glib_none ( ) . 0 ) ;
}
}
fn get_base_time ( & self ) -> ClockTime {
unsafe {
ffi ::gst_element_get_base_time ( self . to_glib_none ( ) . 0 )
}
}
fn get_bus ( & self ) -> Option < Bus > {
unsafe {
from_glib_full ( ffi ::gst_element_get_bus ( self . to_glib_none ( ) . 0 ) )
}
}
fn get_clock ( & self ) -> Option < Clock > {
unsafe {
from_glib_full ( ffi ::gst_element_get_clock ( self . to_glib_none ( ) . 0 ) )
}
}
//fn get_compatible_pad<'a, P: IsA<Pad>, Q: Into<Option<&'a /*Ignored*/Caps>>>(&self, pad: &P, caps: Q) -> Option<Pad> {
// unsafe { TODO: call ffi::gst_element_get_compatible_pad() }
//}
fn get_compatible_pad_template ( & self , compattempl : & PadTemplate ) -> Option < PadTemplate > {
unsafe {
from_glib_none ( ffi ::gst_element_get_compatible_pad_template ( self . to_glib_none ( ) . 0 , compattempl . to_glib_none ( ) . 0 ) )
}
}
//#[cfg(feature = "v1_8")]
//fn get_context(&self, context_type: &str) -> /*Ignored*/Option<Context> {
// unsafe { TODO: call ffi::gst_element_get_context() }
//}
//#[cfg(feature = "v1_8")]
//fn get_context_unlocked(&self, context_type: &str) -> /*Ignored*/Option<Context> {
// unsafe { TODO: call ffi::gst_element_get_context_unlocked() }
//}
//#[cfg(feature = "v1_8")]
//fn get_contexts(&self) -> /*Ignored*/Vec<Context> {
// unsafe { TODO: call ffi::gst_element_get_contexts() }
//}
fn get_factory ( & self ) -> Option < ElementFactory > {
unsafe {
from_glib_none ( ffi ::gst_element_get_factory ( self . to_glib_none ( ) . 0 ) )
}
}
fn get_request_pad ( & self , name : & str ) -> Option < Pad > {
unsafe {
from_glib_full ( ffi ::gst_element_get_request_pad ( self . to_glib_none ( ) . 0 , name . to_glib_none ( ) . 0 ) )
}
}
fn get_start_time ( & self ) -> ClockTime {
unsafe {
ffi ::gst_element_get_start_time ( self . to_glib_none ( ) . 0 )
}
}
fn get_state ( & self , timeout : ClockTime ) -> ( StateChangeReturn , State , State ) {
unsafe {
let mut state = mem ::uninitialized ( ) ;
let mut pending = mem ::uninitialized ( ) ;
let ret = from_glib ( ffi ::gst_element_get_state ( self . to_glib_none ( ) . 0 , & mut state , & mut pending , timeout ) ) ;
( ret , from_glib ( state ) , from_glib ( pending ) )
}
}
fn get_static_pad ( & self , name : & str ) -> Option < Pad > {
unsafe {
from_glib_full ( ffi ::gst_element_get_static_pad ( self . to_glib_none ( ) . 0 , name . to_glib_none ( ) . 0 ) )
}
}
fn is_locked_state ( & self ) -> bool {
unsafe {
from_glib ( ffi ::gst_element_is_locked_state ( self . to_glib_none ( ) . 0 ) )
}
}
//fn iterate_pads(&self) -> /*Ignored*/Option<Iterator> {
// unsafe { TODO: call ffi::gst_element_iterate_pads() }
//}
//fn iterate_sink_pads(&self) -> /*Ignored*/Option<Iterator> {
// unsafe { TODO: call ffi::gst_element_iterate_sink_pads() }
//}
//fn iterate_src_pads(&self) -> /*Ignored*/Option<Iterator> {
// unsafe { TODO: call ffi::gst_element_iterate_src_pads() }
//}
2017-06-24 09:02:24 +00:00
fn link < P : IsA < Element > > ( & self , dest : & P ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_link ( self . to_glib_none ( ) . 0 , dest . to_glib_none ( ) . 0 ) , " Failed to link elements " )
2017-05-12 12:24:03 +00:00
}
}
//fn link_filtered<'a, P: IsA<Element>, Q: Into<Option<&'a /*Ignored*/Caps>>>(&self, dest: &P, filter: Q) -> bool {
// unsafe { TODO: call ffi::gst_element_link_filtered() }
//}
//fn link_many<P: IsA<Element>>(&self, element_2: &P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) -> bool {
// unsafe { TODO: call ffi::gst_element_link_many() }
//}
2017-06-24 09:02:24 +00:00
fn link_pads < ' a , ' b , P : Into < Option < & ' a str > > , Q : IsA < Element > , R : Into < Option < & ' b str > > > ( & self , srcpadname : P , dest : & Q , destpadname : R ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
let srcpadname = srcpadname . into ( ) ;
let srcpadname = srcpadname . to_glib_none ( ) ;
let destpadname = destpadname . into ( ) ;
let destpadname = destpadname . to_glib_none ( ) ;
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_link_pads ( self . to_glib_none ( ) . 0 , srcpadname . 0 , dest . to_glib_none ( ) . 0 , destpadname . 0 ) , " Failed to link pads " )
2017-05-12 12:24:03 +00:00
}
}
//fn link_pads_filtered<'a, 'b, 'c, P: Into<Option<&'a str>>, Q: IsA<Element>, R: Into<Option<&'b str>>, S: Into<Option<&'c /*Ignored*/Caps>>>(&self, srcpadname: P, dest: &Q, destpadname: R, filter: S) -> bool {
// unsafe { TODO: call ffi::gst_element_link_pads_filtered() }
//}
//fn link_pads_full<'a, 'b, P: Into<Option<&'a str>>, Q: IsA<Element>, R: Into<Option<&'b str>>>(&self, srcpadname: P, dest: &Q, destpadname: R, flags: /*Ignored*/PadLinkCheck) -> bool {
// unsafe { TODO: call ffi::gst_element_link_pads_full() }
//}
fn lost_state ( & self ) {
unsafe {
ffi ::gst_element_lost_state ( self . to_glib_none ( ) . 0 ) ;
}
}
2017-07-03 10:56:26 +00:00
//fn message_full<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, type_: MessageType, domain: /*Ignored*/glib::Quark, code: i32, text: P, debug: Q, file: &str, function: &str, line: i32) {
2017-05-12 12:24:03 +00:00
// unsafe { TODO: call ffi::gst_element_message_full() }
//}
//#[cfg(feature = "v1_10")]
2017-07-03 10:56:26 +00:00
//fn message_full_with_details<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b str>>>(&self, type_: MessageType, domain: /*Ignored*/glib::Quark, code: i32, text: P, debug: Q, file: &str, function: &str, line: i32, structure: /*Ignored*/&mut Structure) {
2017-05-12 12:24:03 +00:00
// unsafe { TODO: call ffi::gst_element_message_full_with_details() }
//}
fn no_more_pads ( & self ) {
unsafe {
ffi ::gst_element_no_more_pads ( self . to_glib_none ( ) . 0 ) ;
}
}
2017-07-03 10:56:26 +00:00
fn post_message ( & self , message : & mut Message ) -> bool {
unsafe {
from_glib ( ffi ::gst_element_post_message ( self . to_glib_none ( ) . 0 , message . to_glib_full ( ) ) )
}
}
2017-05-12 12:24:03 +00:00
fn provide_clock ( & self ) -> Option < Clock > {
unsafe {
from_glib_full ( ffi ::gst_element_provide_clock ( self . to_glib_none ( ) . 0 ) )
}
}
//fn query(&self, query: /*Ignored*/&mut Query) -> bool {
// unsafe { TODO: call ffi::gst_element_query() }
//}
fn query_convert ( & self , src_format : Format , src_val : i64 , dest_format : Format ) -> Option < i64 > {
unsafe {
let mut dest_val = mem ::uninitialized ( ) ;
let ret = from_glib ( ffi ::gst_element_query_convert ( self . to_glib_none ( ) . 0 , src_format . to_glib ( ) , src_val , dest_format . to_glib ( ) , & mut dest_val ) ) ;
if ret { Some ( dest_val ) } else { None }
}
}
fn query_duration ( & self , format : Format ) -> Option < i64 > {
unsafe {
let mut duration = mem ::uninitialized ( ) ;
let ret = from_glib ( ffi ::gst_element_query_duration ( self . to_glib_none ( ) . 0 , format . to_glib ( ) , & mut duration ) ) ;
if ret { Some ( duration ) } else { None }
}
}
fn query_position ( & self , format : Format ) -> Option < i64 > {
unsafe {
let mut cur = mem ::uninitialized ( ) ;
let ret = from_glib ( ffi ::gst_element_query_position ( self . to_glib_none ( ) . 0 , format . to_glib ( ) , & mut cur ) ) ;
if ret { Some ( cur ) } else { None }
}
}
fn release_request_pad < P : IsA < Pad > > ( & self , pad : & P ) {
unsafe {
ffi ::gst_element_release_request_pad ( self . to_glib_none ( ) . 0 , pad . to_glib_none ( ) . 0 ) ;
}
}
2017-06-24 09:02:24 +00:00
fn remove_pad < P : IsA < Pad > > ( & self , pad : & P ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_remove_pad ( self . to_glib_none ( ) . 0 , pad . to_glib_full ( ) ) , " Failed to remove pad " )
2017-05-12 12:24:03 +00:00
}
}
#[ cfg(feature = " v1_10 " ) ]
fn remove_property_notify_watch ( & self , watch_id : libc ::c_ulong ) {
unsafe {
ffi ::gst_element_remove_property_notify_watch ( self . to_glib_none ( ) . 0 , watch_id ) ;
}
}
//fn request_pad<'a, 'b, P: Into<Option<&'a str>>, Q: Into<Option<&'b /*Ignored*/Caps>>>(&self, templ: &PadTemplate, name: P, caps: Q) -> Option<Pad> {
// unsafe { TODO: call ffi::gst_element_request_pad() }
//}
2017-06-24 09:02:24 +00:00
fn seek ( & self , rate : f64 , format : Format , flags : SeekFlags , start_type : SeekType , start : i64 , stop_type : SeekType , stop : i64 ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_seek ( self . to_glib_none ( ) . 0 , rate , format . to_glib ( ) , flags . to_glib ( ) , start_type . to_glib ( ) , start , stop_type . to_glib ( ) , stop ) , " Failed to seek " )
2017-05-12 12:24:03 +00:00
}
}
2017-06-24 09:02:24 +00:00
fn seek_simple ( & self , format : Format , seek_flags : SeekFlags , seek_pos : i64 ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_seek_simple ( self . to_glib_none ( ) . 0 , format . to_glib ( ) , seek_flags . to_glib ( ) , seek_pos ) , " Failed to seek " )
2017-05-12 12:24:03 +00:00
}
}
//fn send_event(&self, event: /*Ignored*/&mut Event) -> bool {
// unsafe { TODO: call ffi::gst_element_send_event() }
//}
fn set_base_time ( & self , time : ClockTime ) {
unsafe {
ffi ::gst_element_set_base_time ( self . to_glib_none ( ) . 0 , time ) ;
}
}
fn set_bus ( & self , bus : & Bus ) {
unsafe {
ffi ::gst_element_set_bus ( self . to_glib_none ( ) . 0 , bus . to_glib_none ( ) . 0 ) ;
}
}
2017-06-24 09:02:24 +00:00
fn set_clock < P : IsA < Clock > > ( & self , clock : & P ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_set_clock ( self . to_glib_none ( ) . 0 , clock . to_glib_none ( ) . 0 ) , " Failed to set clock " )
2017-05-12 12:24:03 +00:00
}
}
//fn set_context(&self, context: /*Ignored*/&mut Context) {
// unsafe { TODO: call ffi::gst_element_set_context() }
//}
fn set_locked_state ( & self , locked_state : bool ) -> bool {
unsafe {
from_glib ( ffi ::gst_element_set_locked_state ( self . to_glib_none ( ) . 0 , locked_state . to_glib ( ) ) )
}
}
fn set_start_time ( & self , time : ClockTime ) {
unsafe {
ffi ::gst_element_set_start_time ( self . to_glib_none ( ) . 0 , time ) ;
}
}
fn set_state ( & self , state : State ) -> StateChangeReturn {
unsafe {
from_glib ( ffi ::gst_element_set_state ( self . to_glib_none ( ) . 0 , state . to_glib ( ) ) )
}
}
2017-06-24 09:02:24 +00:00
fn sync_state_with_parent ( & self ) -> Result < ( ) , glib ::error ::BoolError > {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-24 09:02:24 +00:00
glib ::error ::BoolError ::from_glib ( ffi ::gst_element_sync_state_with_parent ( self . to_glib_none ( ) . 0 ) , " Failed to sync state with parent " )
2017-05-12 12:24:03 +00:00
}
}
fn unlink < P : IsA < Element > > ( & self , dest : & P ) {
unsafe {
ffi ::gst_element_unlink ( self . to_glib_none ( ) . 0 , dest . to_glib_none ( ) . 0 ) ;
}
}
//fn unlink_many<P: IsA<Element>>(&self, element_2: &P, : /*Unknown conversion*//*Unimplemented*/Fundamental: VarArgs) {
// unsafe { TODO: call ffi::gst_element_unlink_many() }
//}
fn unlink_pads < P : IsA < Element > > ( & self , srcpadname : & str , dest : & P , destpadname : & str ) {
unsafe {
ffi ::gst_element_unlink_pads ( self . to_glib_none ( ) . 0 , srcpadname . to_glib_none ( ) . 0 , dest . to_glib_none ( ) . 0 , destpadname . to_glib_none ( ) . 0 ) ;
}
}
2017-06-25 08:04:37 +00:00
fn connect_no_more_pads < F : Fn ( & Self ) + Send + Sync + 'static > ( & self , f : F ) -> u64 {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-25 08:04:37 +00:00
let f : Box_ < Box_ < Fn ( & Self ) + Send + Sync + 'static > > = Box_ ::new ( Box_ ::new ( f ) ) ;
2017-05-12 12:24:03 +00:00
connect ( self . to_glib_none ( ) . 0 , " no-more-pads " ,
transmute ( no_more_pads_trampoline ::< Self > as usize ) , Box_ ::into_raw ( f ) as * mut _ )
}
}
2017-06-25 08:04:37 +00:00
fn connect_pad_added < F : Fn ( & Self , & Pad ) + Send + Sync + 'static > ( & self , f : F ) -> u64 {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-25 08:04:37 +00:00
let f : Box_ < Box_ < Fn ( & Self , & Pad ) + Send + Sync + 'static > > = Box_ ::new ( Box_ ::new ( f ) ) ;
2017-05-12 12:24:03 +00:00
connect ( self . to_glib_none ( ) . 0 , " pad-added " ,
transmute ( pad_added_trampoline ::< Self > as usize ) , Box_ ::into_raw ( f ) as * mut _ )
}
}
2017-06-25 08:04:37 +00:00
fn connect_pad_removed < F : Fn ( & Self , & Pad ) + Send + Sync + 'static > ( & self , f : F ) -> u64 {
2017-05-12 12:24:03 +00:00
unsafe {
2017-06-25 08:04:37 +00:00
let f : Box_ < Box_ < Fn ( & Self , & Pad ) + Send + Sync + 'static > > = Box_ ::new ( Box_ ::new ( f ) ) ;
2017-05-12 12:24:03 +00:00
connect ( self . to_glib_none ( ) . 0 , " pad-removed " ,
transmute ( pad_removed_trampoline ::< Self > as usize ) , Box_ ::into_raw ( f ) as * mut _ )
}
}
}
unsafe extern " C " fn no_more_pads_trampoline < P > ( this : * mut ffi ::GstElement , f : glib_ffi ::gpointer )
where P : IsA < Element > {
callback_guard! ( ) ;
2017-06-25 08:04:37 +00:00
let f : & Box_ < Fn ( & P ) + Send + Sync + 'static > = transmute ( f ) ;
2017-05-12 12:24:03 +00:00
f ( & Element ::from_glib_none ( this ) . downcast_unchecked ( ) )
}
unsafe extern " C " fn pad_added_trampoline < P > ( this : * mut ffi ::GstElement , new_pad : * mut ffi ::GstPad , f : glib_ffi ::gpointer )
where P : IsA < Element > {
callback_guard! ( ) ;
2017-06-25 08:04:37 +00:00
let f : & Box_ < Fn ( & P , & Pad ) + Send + Sync + 'static > = transmute ( f ) ;
2017-05-12 12:24:03 +00:00
f ( & Element ::from_glib_none ( this ) . downcast_unchecked ( ) , & from_glib_none ( new_pad ) )
}
unsafe extern " C " fn pad_removed_trampoline < P > ( this : * mut ffi ::GstElement , old_pad : * mut ffi ::GstPad , f : glib_ffi ::gpointer )
where P : IsA < Element > {
callback_guard! ( ) ;
2017-06-25 08:04:37 +00:00
let f : & Box_ < Fn ( & P , & Pad ) + Send + Sync + 'static > = transmute ( f ) ;
2017-05-12 12:24:03 +00:00
f ( & Element ::from_glib_none ( this ) . downcast_unchecked ( ) , & from_glib_none ( old_pad ) )
}