use ffi::*;
use pipeline::Pipeline;
use element::Element;
use ::Transfer;
use reference::Reference;
use std::ops::{Deref, DerefMut};
unsafe impl Sync for PlayBin {}
unsafe impl Send for PlayBin {}
pub struct PlayBin{
playbin: Pipeline
}
impl PlayBin{
pub fn new(name: &str) -> Option<PlayBin>{
let pipeline = Element::new("playbin",name);
match pipeline{
Some(p) => {
match unsafe{ Pipeline::new_from_gst_pipeline( p.transfer() as *mut GstPipeline) }{
Some(p) => Some(PlayBin{ playbin: p }),
None => None
}
}
None => None
}
}
pub fn set_audio_sink(&mut self, audio_sink: &Element){
self.set("audio-sink", audio_sink);
}
pub fn set_subtitle_font_desc(&mut self, font: &str){
self.set("subtitle-font-desc", font);
}
pub fn set_video_sink(&mut self, video_sink: &Element){
self.set("video-sink", video_sink);
}
pub fn set_vis_plugin(&mut self, vis_plugin: &Element){
self.set("vis-plugin", vis_plugin);
}
pub fn set_volume(&mut self, volume: f64){
self.set("volume", volume);
}
pub fn set_connection_speed(&mut self, connection_speed: u64){
self.set("connection-speed",connection_speed);
}
pub fn set_av_offset(&mut self, av_offset: i64){
self.set("av-offset", av_offset);
}
pub fn set_buffer_duration(&mut self, buffer_duration: i64){
self.set("buffer-duration",buffer_duration);
}
pub fn set_current_audio(&mut self, current_audio: i32){
self.set("current-audio",current_audio);
}
pub fn set_current_text(&mut self, current_text: i32){
self.set("current-text", current_text);
}
pub fn mute(&mut self){
self.set("mute", 1 as gboolean);
}
pub fn unmute(&mut self){
self.set("mute", 0 as gboolean);
}
pub fn set_ring_buffer_max_size(&mut self, ring_buffer_max_size: u64){
self.set("ring-buffer-max-size", ring_buffer_max_size);
}
pub fn set_source(&mut self, source: &Element){
self.set("source", source);
}
pub fn set_subtitle_encoding(&mut self, encoding: &str){
self.set("subtitle-encoding", encoding);
}
pub fn set_suburi(&mut self, suburi: &str){
self.set("suburi", suburi);
}
pub fn set_text_sink(&mut self, textsink: &Element){
self.set("text-sink", textsink);
}
pub fn set_uri(&mut self, uri: &str){
self.set("uri", uri);
}
pub fn set_force_aspect_ratio(&mut self, force_aspect_ratio: bool){
self.set("force-aspect-ratio", force_aspect_ratio as gboolean);
}
pub fn set_audio_stream_combiner(&mut self, audio_stream_combiner: &Element){
self.set("audio-stream-combiner", audio_stream_combiner);
}
pub fn set_video_stream_combiner(&mut self, video_stream_combiner: &Element){
self.set("video-stream-combiner", video_stream_combiner);
}
pub fn set_flags(&mut self, flags: i32){
self.set("flags", flags);
}
}
impl ::Transfer for PlayBin{
unsafe fn transfer(self) -> *mut GstElement{
self.playbin.transfer()
}
}
impl Reference for PlayBin{
fn reference(&self) -> PlayBin{
PlayBin{ playbin: self.playbin.reference()}
}
}
impl AsRef<Pipeline> for PlayBin{
fn as_ref(&self) -> &Pipeline{
&self.playbin
}
}
impl AsMut<Pipeline> for PlayBin{
fn as_mut(&mut self) -> &mut Pipeline{
&mut self.playbin
}
}
impl From<PlayBin> for Pipeline{
fn from(b: PlayBin) -> Pipeline{
b.playbin
}
}
impl Deref for PlayBin{
type Target = Pipeline;
fn deref(&self) -> &Pipeline{
&self.playbin
}
}
impl DerefMut for PlayBin{
fn deref_mut(&mut self) -> &mut Pipeline{
&mut self.playbin
}
}