mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2024-11-25 19:11:06 +00:00
Run everything through rustfmt again
This commit is contained in:
parent
fca0287dec
commit
492c3d656c
79 changed files with 797 additions and 470 deletions
|
@ -9,9 +9,9 @@ extern crate glib;
|
||||||
extern crate byte_slice_cast;
|
extern crate byte_slice_cast;
|
||||||
use byte_slice_cast::*;
|
use byte_slice_cast::*;
|
||||||
|
|
||||||
|
use std::error::Error as StdError;
|
||||||
use std::i16;
|
use std::i16;
|
||||||
use std::i32;
|
use std::i32;
|
||||||
use std::error::Error as StdError;
|
|
||||||
|
|
||||||
extern crate failure;
|
extern crate failure;
|
||||||
use failure::Error;
|
use failure::Error;
|
||||||
|
|
|
@ -3,8 +3,8 @@ extern crate gstreamer as gst;
|
||||||
extern crate gstreamer_pbutils as pbutils;
|
extern crate gstreamer_pbutils as pbutils;
|
||||||
use pbutils::prelude::*;
|
use pbutils::prelude::*;
|
||||||
|
|
||||||
use pbutils::DiscovererStreamInfo;
|
|
||||||
use pbutils::DiscovererInfo;
|
use pbutils::DiscovererInfo;
|
||||||
|
use pbutils::DiscovererStreamInfo;
|
||||||
|
|
||||||
extern crate glib;
|
extern crate glib;
|
||||||
|
|
||||||
|
|
|
@ -10,14 +10,14 @@ extern crate gstreamer_rtsp as gst_rtsp;
|
||||||
extern crate gstreamer_rtsp_server as gst_rtsp_server;
|
extern crate gstreamer_rtsp_server as gst_rtsp_server;
|
||||||
extern crate gstreamer_rtsp_server_sys as ffi;
|
extern crate gstreamer_rtsp_server_sys as ffi;
|
||||||
|
|
||||||
|
use failure::Error;
|
||||||
use std::env;
|
use std::env;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use failure::Error;
|
|
||||||
|
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use gst_rtsp::*;
|
||||||
use gst_rtsp_server::prelude::*;
|
use gst_rtsp_server::prelude::*;
|
||||||
use gst_rtsp_server::*;
|
use gst_rtsp_server::*;
|
||||||
use gst_rtsp::*;
|
|
||||||
|
|
||||||
#[path = "../examples-common.rs"]
|
#[path = "../examples-common.rs"]
|
||||||
mod examples_common;
|
mod examples_common;
|
||||||
|
|
|
@ -8,11 +8,11 @@
|
||||||
|
|
||||||
use AppSink;
|
use AppSink;
|
||||||
use ffi;
|
use ffi;
|
||||||
use gst_ffi;
|
|
||||||
use glib::translate::*;
|
|
||||||
use gst;
|
|
||||||
use glib::source::CallbackGuard;
|
use glib::source::CallbackGuard;
|
||||||
|
use glib::translate::*;
|
||||||
use glib_ffi::gpointer;
|
use glib_ffi::gpointer;
|
||||||
|
use gst;
|
||||||
|
use gst_ffi;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
pub struct AppSinkCallbacks {
|
pub struct AppSinkCallbacks {
|
||||||
|
|
|
@ -8,12 +8,12 @@
|
||||||
|
|
||||||
use AppSrc;
|
use AppSrc;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::translate::*;
|
|
||||||
use gst;
|
|
||||||
use glib::source::CallbackGuard;
|
use glib::source::CallbackGuard;
|
||||||
|
use glib::translate::*;
|
||||||
use glib_ffi::{gboolean, gpointer};
|
use glib_ffi::{gboolean, gpointer};
|
||||||
use std::ptr;
|
use gst;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
pub struct AppSrcCallbacks {
|
pub struct AppSrcCallbacks {
|
||||||
need_data: Option<Box<Fn(&AppSrc, u32) + Send + Sync + 'static>>,
|
need_data: Option<Box<Fn(&AppSrc, u32) + Send + Sync + 'static>>,
|
||||||
|
|
|
@ -20,14 +20,13 @@ extern crate gstreamer_sys as gst_ffi;
|
||||||
extern crate glib;
|
extern crate glib;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
@ -39,10 +38,10 @@ pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue
|
||||||
mod auto;
|
mod auto;
|
||||||
pub use auto::*;
|
pub use auto::*;
|
||||||
|
|
||||||
mod app_src;
|
|
||||||
mod app_sink;
|
mod app_sink;
|
||||||
pub use app_src::*;
|
mod app_src;
|
||||||
pub use app_sink::*;
|
pub use app_sink::*;
|
||||||
|
pub use app_src::*;
|
||||||
|
|
||||||
// Re-export all the traits in a prelude module, so that applications
|
// Re-export all the traits in a prelude module, so that applications
|
||||||
// can always "use gst::prelude::*" without getting conflicts
|
// can always "use gst::prelude::*" without getting conflicts
|
||||||
|
|
|
@ -6,15 +6,15 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use AudioChannelPosition;
|
use AudioChannelPosition;
|
||||||
|
use ffi;
|
||||||
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use gst::MiniObject;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib, ToGlib};
|
use glib::translate::{from_glib, ToGlib};
|
||||||
|
use gst;
|
||||||
|
use gst::MiniObject;
|
||||||
|
|
||||||
use array_init;
|
use array_init;
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,11 @@ use ffi;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use gst::prelude::*;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrNone, ToGlib,
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrNone, ToGlib,
|
||||||
ToGlibPtr, ToGlibPtrMut};
|
ToGlibPtr, ToGlibPtrMut};
|
||||||
|
use gst;
|
||||||
|
use gst::prelude::*;
|
||||||
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
|
@ -6,22 +6,40 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use AudioStreamAlign;
|
use AudioStreamAlign;
|
||||||
|
use ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use gst;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
impl AudioStreamAlign {
|
impl AudioStreamAlign {
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
pub fn process(&mut self, discont: bool, timestamp: gst::ClockTime, n_samples: u32) -> (bool, gst::ClockTime, gst::ClockTime, u64) {
|
pub fn process(
|
||||||
|
&mut self,
|
||||||
|
discont: bool,
|
||||||
|
timestamp: gst::ClockTime,
|
||||||
|
n_samples: u32,
|
||||||
|
) -> (bool, gst::ClockTime, gst::ClockTime, u64) {
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut out_timestamp = mem::uninitialized();
|
let mut out_timestamp = mem::uninitialized();
|
||||||
let mut out_duration = mem::uninitialized();
|
let mut out_duration = mem::uninitialized();
|
||||||
let mut out_sample_position = mem::uninitialized();
|
let mut out_sample_position = mem::uninitialized();
|
||||||
let ret = from_glib(ffi::gst_audio_stream_align_process(self.to_glib_none_mut().0, discont.to_glib(), timestamp.to_glib(), n_samples, &mut out_timestamp, &mut out_duration, &mut out_sample_position));
|
let ret = from_glib(ffi::gst_audio_stream_align_process(
|
||||||
(ret, from_glib(out_timestamp), from_glib(out_duration), out_sample_position)
|
self.to_glib_none_mut().0,
|
||||||
|
discont.to_glib(),
|
||||||
|
timestamp.to_glib(),
|
||||||
|
n_samples,
|
||||||
|
&mut out_timestamp,
|
||||||
|
&mut out_duration,
|
||||||
|
&mut out_sample_position,
|
||||||
|
));
|
||||||
|
(
|
||||||
|
ret,
|
||||||
|
from_glib(out_timestamp),
|
||||||
|
from_glib(out_duration),
|
||||||
|
out_sample_position,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,22 +19,21 @@ extern crate gstreamer_audio_sys as ffi;
|
||||||
extern crate gstreamer_sys as gst_ffi;
|
extern crate gstreamer_sys as gst_ffi;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use Adapter;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use gst;
|
use gst;
|
||||||
use Adapter;
|
|
||||||
use std::io;
|
use std::io;
|
||||||
|
|
||||||
impl Adapter {
|
impl Adapter {
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use BaseSink;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use gst;
|
use gst;
|
||||||
use BaseSink;
|
|
||||||
|
|
||||||
pub trait BaseSinkExtManual {
|
pub trait BaseSinkExtManual {
|
||||||
fn get_segment(&self) -> gst::Segment;
|
fn get_segment(&self) -> gst::Segment;
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use BaseSrc;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use gst;
|
use gst;
|
||||||
use BaseSrc;
|
|
||||||
|
|
||||||
pub trait BaseSrcExtManual {
|
pub trait BaseSrcExtManual {
|
||||||
fn get_segment(&self) -> gst::Segment;
|
fn get_segment(&self) -> gst::Segment;
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use BaseTransform;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use gst;
|
use gst;
|
||||||
use BaseTransform;
|
|
||||||
|
|
||||||
pub trait BaseTransformExtManual {
|
pub trait BaseTransformExtManual {
|
||||||
fn get_segment(&self) -> gst::Segment;
|
fn get_segment(&self) -> gst::Segment;
|
||||||
|
|
|
@ -16,17 +16,17 @@ extern crate gstreamer_sys as gst_ffi;
|
||||||
extern crate glib;
|
extern crate glib;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
@ -36,8 +36,8 @@ pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue
|
||||||
#[cfg_attr(feature = "cargo-clippy", allow(too_many_arguments))]
|
#[cfg_attr(feature = "cargo-clippy", allow(too_many_arguments))]
|
||||||
#[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))]
|
#[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))]
|
||||||
mod auto;
|
mod auto;
|
||||||
pub use auto::*;
|
|
||||||
pub use auto::functions::*;
|
pub use auto::functions::*;
|
||||||
|
pub use auto::*;
|
||||||
|
|
||||||
pub mod functions;
|
pub mod functions;
|
||||||
pub use functions::*;
|
pub use functions::*;
|
||||||
|
@ -45,8 +45,8 @@ pub use functions::*;
|
||||||
mod adapter;
|
mod adapter;
|
||||||
mod flow_combiner;
|
mod flow_combiner;
|
||||||
pub use flow_combiner::*;
|
pub use flow_combiner::*;
|
||||||
mod base_src;
|
|
||||||
mod base_sink;
|
mod base_sink;
|
||||||
|
mod base_src;
|
||||||
mod base_transform;
|
mod base_transform;
|
||||||
|
|
||||||
// Re-export all the traits in a prelude module, so that applications
|
// Re-export all the traits in a prelude module, so that applications
|
||||||
|
@ -56,8 +56,8 @@ pub mod prelude {
|
||||||
pub use gst::prelude::*;
|
pub use gst::prelude::*;
|
||||||
|
|
||||||
pub use auto::traits::*;
|
pub use auto::traits::*;
|
||||||
pub use base_src::BaseSrcExtManual;
|
|
||||||
pub use base_sink::BaseSinkExtManual;
|
pub use base_sink::BaseSinkExtManual;
|
||||||
|
pub use base_src::BaseSrcExtManual;
|
||||||
pub use base_transform::BaseTransformExtManual;
|
pub use base_transform::BaseTransformExtManual;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,17 +16,17 @@ extern crate gstreamer_sys as gst_ffi;
|
||||||
extern crate glib;
|
extern crate glib;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
|
|
@ -6,27 +6,42 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use NetClientClock;
|
use NetClientClock;
|
||||||
|
use ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use glib::object::Downcast;
|
use glib::object::Downcast;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use gst;
|
||||||
|
|
||||||
impl NetClientClock {
|
impl NetClientClock {
|
||||||
pub fn new<'a, P: Into<Option<&'a str>>>(name: P, remote_address: &str, remote_port: i32, base_time: gst::ClockTime) -> NetClientClock {
|
pub fn new<'a, P: Into<Option<&'a str>>>(
|
||||||
|
name: P,
|
||||||
|
remote_address: &str,
|
||||||
|
remote_port: i32,
|
||||||
|
base_time: gst::ClockTime,
|
||||||
|
) -> NetClientClock {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
let name = name.into();
|
let name = name.into();
|
||||||
let name = name.to_glib_none();
|
let name = name.to_glib_none();
|
||||||
let (major, minor, _, _) = gst::version();
|
let (major, minor, _, _) = gst::version();
|
||||||
if (major, minor) > (1, 12) {
|
if (major, minor) > (1, 12) {
|
||||||
unsafe {
|
unsafe {
|
||||||
gst::Clock::from_glib_full(ffi::gst_net_client_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked()
|
gst::Clock::from_glib_full(ffi::gst_net_client_clock_new(
|
||||||
|
name.0,
|
||||||
|
remote_address.to_glib_none().0,
|
||||||
|
remote_port,
|
||||||
|
base_time.to_glib(),
|
||||||
|
)).downcast_unchecked()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13
|
// Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13
|
||||||
unsafe {
|
unsafe {
|
||||||
gst::Clock::from_glib_none(ffi::gst_net_client_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked()
|
gst::Clock::from_glib_none(ffi::gst_net_client_clock_new(
|
||||||
|
name.0,
|
||||||
|
remote_address.to_glib_none().0,
|
||||||
|
remote_port,
|
||||||
|
base_time.to_glib(),
|
||||||
|
)).downcast_unchecked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,27 +6,42 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use NtpClock;
|
use NtpClock;
|
||||||
|
use ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use glib::object::Downcast;
|
use glib::object::Downcast;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use gst;
|
||||||
|
|
||||||
impl NtpClock {
|
impl NtpClock {
|
||||||
pub fn new<'a, P: Into<Option<&'a str>>>(name: P, remote_address: &str, remote_port: i32, base_time: gst::ClockTime) -> NtpClock {
|
pub fn new<'a, P: Into<Option<&'a str>>>(
|
||||||
|
name: P,
|
||||||
|
remote_address: &str,
|
||||||
|
remote_port: i32,
|
||||||
|
base_time: gst::ClockTime,
|
||||||
|
) -> NtpClock {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
let name = name.into();
|
let name = name.into();
|
||||||
let name = name.to_glib_none();
|
let name = name.to_glib_none();
|
||||||
let (major, minor, _, _) = gst::version();
|
let (major, minor, _, _) = gst::version();
|
||||||
if (major, minor) > (1, 12) {
|
if (major, minor) > (1, 12) {
|
||||||
unsafe {
|
unsafe {
|
||||||
gst::Clock::from_glib_full(ffi::gst_ntp_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked()
|
gst::Clock::from_glib_full(ffi::gst_ntp_clock_new(
|
||||||
|
name.0,
|
||||||
|
remote_address.to_glib_none().0,
|
||||||
|
remote_port,
|
||||||
|
base_time.to_glib(),
|
||||||
|
)).downcast_unchecked()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13
|
// Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13
|
||||||
unsafe {
|
unsafe {
|
||||||
gst::Clock::from_glib_none(ffi::gst_ntp_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked()
|
gst::Clock::from_glib_none(ffi::gst_ntp_clock_new(
|
||||||
|
name.0,
|
||||||
|
remote_address.to_glib_none().0,
|
||||||
|
remote_port,
|
||||||
|
base_time.to_glib(),
|
||||||
|
)).downcast_unchecked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,27 +6,42 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use PtpClock;
|
use PtpClock;
|
||||||
|
use ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use glib::object::Downcast;
|
use glib::object::Downcast;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use gst;
|
||||||
|
|
||||||
impl PtpClock {
|
impl PtpClock {
|
||||||
pub fn new<'a, P: Into<Option<&'a str>>>(name: P, remote_address: &str, remote_port: i32, base_time: gst::ClockTime) -> PtpClock {
|
pub fn new<'a, P: Into<Option<&'a str>>>(
|
||||||
|
name: P,
|
||||||
|
remote_address: &str,
|
||||||
|
remote_port: i32,
|
||||||
|
base_time: gst::ClockTime,
|
||||||
|
) -> PtpClock {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
let name = name.into();
|
let name = name.into();
|
||||||
let name = name.to_glib_none();
|
let name = name.to_glib_none();
|
||||||
let (major, minor, _, _) = gst::version();
|
let (major, minor, _, _) = gst::version();
|
||||||
if (major, minor) > (1, 12) {
|
if (major, minor) > (1, 12) {
|
||||||
unsafe {
|
unsafe {
|
||||||
gst::Clock::from_glib_full(ffi::gst_ntp_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked()
|
gst::Clock::from_glib_full(ffi::gst_ntp_clock_new(
|
||||||
|
name.0,
|
||||||
|
remote_address.to_glib_none().0,
|
||||||
|
remote_port,
|
||||||
|
base_time.to_glib(),
|
||||||
|
)).downcast_unchecked()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13
|
// Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13
|
||||||
unsafe {
|
unsafe {
|
||||||
gst::Clock::from_glib_none(ffi::gst_ntp_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked()
|
gst::Clock::from_glib_none(ffi::gst_ntp_clock_new(
|
||||||
|
name.0,
|
||||||
|
remote_address.to_glib_none().0,
|
||||||
|
remote_port,
|
||||||
|
base_time.to_glib(),
|
||||||
|
)).downcast_unchecked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,19 +11,19 @@ use gst;
|
||||||
|
|
||||||
use auto::Discoverer;
|
use auto::Discoverer;
|
||||||
|
|
||||||
use glib::Value;
|
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::signal::connect;
|
use glib::Value;
|
||||||
use glib::signal::SignalHandlerId;
|
|
||||||
use glib::translate::*;
|
|
||||||
use glib::object::Downcast;
|
use glib::object::Downcast;
|
||||||
|
use glib::signal::SignalHandlerId;
|
||||||
|
use glib::signal::connect;
|
||||||
|
use glib::translate::*;
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
use std::mem::transmute;
|
|
||||||
use std::boxed::Box as Box_;
|
use std::boxed::Box as Box_;
|
||||||
|
use std::mem::transmute;
|
||||||
|
|
||||||
impl Discoverer {
|
impl Discoverer {
|
||||||
pub fn set_property_timeout(&self, timeout: gst::ClockTime) {
|
pub fn set_property_timeout(&self, timeout: gst::ClockTime) {
|
||||||
|
|
|
@ -9,9 +9,9 @@
|
||||||
|
|
||||||
use DiscovererVideoInfo;
|
use DiscovererVideoInfo;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use gst;
|
||||||
|
|
||||||
impl DiscovererVideoInfo {
|
impl DiscovererVideoInfo {
|
||||||
pub fn get_framerate(&self) -> gst::Fraction {
|
pub fn get_framerate(&self) -> gst::Fraction {
|
||||||
|
|
|
@ -23,25 +23,24 @@ extern crate gstreamer_sys as gst_ffi;
|
||||||
static PBUTILS_INIT: Once = ONCE_INIT;
|
static PBUTILS_INIT: Once = ONCE_INIT;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
::PBUTILS_INIT.call_once(|| {
|
::PBUTILS_INIT.call_once(|| {
|
||||||
unsafe { ::ffi::gst_pb_utils_init() };
|
unsafe { ::ffi::gst_pb_utils_init() };
|
||||||
});
|
});
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
|
|
@ -7,9 +7,9 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use gst_ffi;
|
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use gst;
|
use gst;
|
||||||
|
use gst_ffi;
|
||||||
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ops;
|
use std::ops;
|
||||||
|
|
|
@ -19,19 +19,17 @@ extern crate gstreamer_video as gst_video;
|
||||||
extern crate glib;
|
extern crate glib;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
@ -45,14 +43,14 @@ pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue
|
||||||
mod auto;
|
mod auto;
|
||||||
pub use auto::*;
|
pub use auto::*;
|
||||||
|
|
||||||
mod player;
|
|
||||||
mod config;
|
mod config;
|
||||||
|
mod player;
|
||||||
pub use config::*;
|
pub use config::*;
|
||||||
|
|
||||||
mod player_video_info;
|
mod player_video_info;
|
||||||
|
|
||||||
mod player_video_overlay_video_renderer;
|
|
||||||
mod player_g_main_context_signal_dispatcher;
|
mod player_g_main_context_signal_dispatcher;
|
||||||
|
mod player_video_overlay_video_renderer;
|
||||||
|
|
||||||
// Re-export all the traits in a prelude module, so that applications
|
// Re-export all the traits in a prelude module, so that applications
|
||||||
// can always "use gst::prelude::*" without getting conflicts
|
// can always "use gst::prelude::*" without getting conflicts
|
||||||
|
|
|
@ -10,11 +10,11 @@ use Player;
|
||||||
use PlayerSignalDispatcher;
|
use PlayerSignalDispatcher;
|
||||||
use PlayerVideoRenderer;
|
use PlayerVideoRenderer;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib_ffi;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::signal::SignalHandlerId;
|
use glib::signal::SignalHandlerId;
|
||||||
use glib::signal::connect;
|
use glib::signal::connect;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use glib_ffi;
|
||||||
use gst;
|
use gst;
|
||||||
use std::boxed::Box as Box_;
|
use std::boxed::Box as Box_;
|
||||||
use std::mem::transmute;
|
use std::mem::transmute;
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use PlayerVideoInfo;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use gst;
|
use gst;
|
||||||
use PlayerVideoInfo;
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
impl PlayerVideoInfo {
|
impl PlayerVideoInfo {
|
||||||
|
|
|
@ -28,22 +28,21 @@ extern crate gstreamer_rtsp_sys as gst_rtsp_ffi;
|
||||||
extern crate gstreamer_sys as gst_ffi;
|
extern crate gstreamer_sys as gst_ffi;
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
@ -55,37 +54,81 @@ pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue
|
||||||
mod auto;
|
mod auto;
|
||||||
pub use auto::*;
|
pub use auto::*;
|
||||||
|
|
||||||
mod r_t_s_p_server;
|
|
||||||
mod r_t_s_p_address_pool;
|
mod r_t_s_p_address_pool;
|
||||||
mod r_t_s_p_client;
|
|
||||||
mod r_t_s_p_session_pool;
|
|
||||||
mod r_t_s_p_context;
|
|
||||||
mod r_t_s_p_auth;
|
mod r_t_s_p_auth;
|
||||||
mod r_t_s_p_token;
|
mod r_t_s_p_client;
|
||||||
|
mod r_t_s_p_context;
|
||||||
mod r_t_s_p_media_factory;
|
mod r_t_s_p_media_factory;
|
||||||
|
mod r_t_s_p_server;
|
||||||
|
mod r_t_s_p_session_pool;
|
||||||
|
mod r_t_s_p_token;
|
||||||
|
|
||||||
pub use r_t_s_p_server::RTSPServerExtManual;
|
|
||||||
pub use r_t_s_p_address_pool::RTSPAddressPoolExtManual;
|
pub use r_t_s_p_address_pool::RTSPAddressPoolExtManual;
|
||||||
pub use r_t_s_p_client::RTSPClientExtManual;
|
|
||||||
pub use r_t_s_p_session_pool::RTSPSessionPoolExtManual;
|
|
||||||
pub use r_t_s_p_auth::RTSPAuthExtManual;
|
pub use r_t_s_p_auth::RTSPAuthExtManual;
|
||||||
|
pub use r_t_s_p_client::RTSPClientExtManual;
|
||||||
pub use r_t_s_p_media_factory::RTSPMediaFactoryExtManual;
|
pub use r_t_s_p_media_factory::RTSPMediaFactoryExtManual;
|
||||||
|
pub use r_t_s_p_server::RTSPServerExtManual;
|
||||||
|
pub use r_t_s_p_session_pool::RTSPSessionPoolExtManual;
|
||||||
|
|
||||||
pub use r_t_s_p_context::*;
|
pub use r_t_s_p_context::*;
|
||||||
pub use r_t_s_p_token::*;
|
pub use r_t_s_p_token::*;
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref RTSP_ADDRESS_POOL_ANY_IPV4: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_ADDRESS_POOL_ANY_IPV4).to_str().unwrap()};
|
pub static ref RTSP_ADDRESS_POOL_ANY_IPV4: &'static str = unsafe {
|
||||||
pub static ref RTSP_ADDRESS_POOL_ANY_IPV6: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_ADDRESS_POOL_ANY_IPV6).to_str().unwrap()};
|
CStr::from_ptr(ffi::GST_RTSP_ADDRESS_POOL_ANY_IPV4)
|
||||||
pub static ref RTSP_AUTH_CHECK_CONNECT: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_CONNECT).to_str().unwrap()};
|
.to_str()
|
||||||
pub static ref RTSP_AUTH_CHECK_MEDIA_FACTORY_ACCESS: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_MEDIA_FACTORY_ACCESS).to_str().unwrap()};
|
.unwrap()
|
||||||
pub static ref RTSP_AUTH_CHECK_MEDIA_FACTORY_CONSTRUCT: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_MEDIA_FACTORY_CONSTRUCT).to_str().unwrap()};
|
};
|
||||||
pub static ref RTSP_AUTH_CHECK_TRANSPORT_CLIENT_SETTINGS: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_TRANSPORT_CLIENT_SETTINGS).to_str().unwrap()};
|
pub static ref RTSP_ADDRESS_POOL_ANY_IPV6: &'static str = unsafe {
|
||||||
pub static ref RTSP_AUTH_CHECK_URL: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_URL).to_str().unwrap()};
|
CStr::from_ptr(ffi::GST_RTSP_ADDRESS_POOL_ANY_IPV6)
|
||||||
pub static ref RTSP_PERM_MEDIA_FACTORY_ACCESS: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_PERM_MEDIA_FACTORY_ACCESS).to_str().unwrap()};
|
.to_str()
|
||||||
pub static ref RTSP_PERM_MEDIA_FACTORY_CONSTRUCT: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_PERM_MEDIA_FACTORY_CONSTRUCT).to_str().unwrap()};
|
.unwrap()
|
||||||
pub static ref RTSP_TOKEN_MEDIA_FACTORY_ROLE: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_TOKEN_MEDIA_FACTORY_ROLE).to_str().unwrap()};
|
};
|
||||||
pub static ref RTSP_TOKEN_TRANSPORT_CLIENT_SETTINGS: &'static str = unsafe{CStr::from_ptr(ffi::GST_RTSP_TOKEN_TRANSPORT_CLIENT_SETTINGS).to_str().unwrap()};
|
pub static ref RTSP_AUTH_CHECK_CONNECT: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_CONNECT)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_AUTH_CHECK_MEDIA_FACTORY_ACCESS: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_MEDIA_FACTORY_ACCESS)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_AUTH_CHECK_MEDIA_FACTORY_CONSTRUCT: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_MEDIA_FACTORY_CONSTRUCT)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_AUTH_CHECK_TRANSPORT_CLIENT_SETTINGS: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_TRANSPORT_CLIENT_SETTINGS)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_AUTH_CHECK_URL: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_AUTH_CHECK_URL)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_PERM_MEDIA_FACTORY_ACCESS: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_PERM_MEDIA_FACTORY_ACCESS)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_PERM_MEDIA_FACTORY_CONSTRUCT: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_PERM_MEDIA_FACTORY_CONSTRUCT)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_TOKEN_MEDIA_FACTORY_ROLE: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_TOKEN_MEDIA_FACTORY_ROLE)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref RTSP_TOKEN_TRANSPORT_CLIENT_SETTINGS: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_RTSP_TOKEN_TRANSPORT_CLIENT_SETTINGS)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// Re-export all the traits in a prelude module, so that applications
|
// Re-export all the traits in a prelude module, so that applications
|
||||||
|
@ -96,11 +139,11 @@ pub mod prelude {
|
||||||
|
|
||||||
pub use auto::traits::*;
|
pub use auto::traits::*;
|
||||||
|
|
||||||
pub use r_t_s_p_server::RTSPServerExtManual;
|
|
||||||
pub use r_t_s_p_address_pool::RTSPAddressPoolExtManual;
|
pub use r_t_s_p_address_pool::RTSPAddressPoolExtManual;
|
||||||
pub use r_t_s_p_client::RTSPClientExtManual;
|
|
||||||
pub use r_t_s_p_session_pool::RTSPSessionPoolExtManual;
|
|
||||||
pub use r_t_s_p_auth::RTSPAuthExtManual;
|
pub use r_t_s_p_auth::RTSPAuthExtManual;
|
||||||
pub use r_t_s_p_token::GstRcRTSPTokenExt;
|
pub use r_t_s_p_client::RTSPClientExtManual;
|
||||||
pub use r_t_s_p_media_factory::RTSPMediaFactoryExtManual;
|
pub use r_t_s_p_media_factory::RTSPMediaFactoryExtManual;
|
||||||
|
pub use r_t_s_p_server::RTSPServerExtManual;
|
||||||
|
pub use r_t_s_p_session_pool::RTSPSessionPoolExtManual;
|
||||||
|
pub use r_t_s_p_token::GstRcRTSPTokenExt;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@ use RTSPClient;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::object::IsA;
|
use glib::object::IsA;
|
||||||
use glib::translate::*;
|
|
||||||
use glib::source::SourceId;
|
use glib::source::SourceId;
|
||||||
|
use glib::translate::*;
|
||||||
|
|
||||||
pub trait RTSPClientExtManual {
|
pub trait RTSPClientExtManual {
|
||||||
fn attach<'a, P: Into<Option<&'a glib::MainContext>>>(&self, context: P) -> SourceId;
|
fn attach<'a, P: Into<Option<&'a glib::MainContext>>>(&self, context: P) -> SourceId;
|
||||||
|
|
|
@ -8,11 +8,11 @@
|
||||||
|
|
||||||
use RTSPMediaFactory;
|
use RTSPMediaFactory;
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
use ffi;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
use gst;
|
use gst;
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
|
||||||
use ffi;
|
|
||||||
|
|
||||||
pub trait RTSPMediaFactoryExtManual {
|
pub trait RTSPMediaFactoryExtManual {
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
@ -23,7 +23,10 @@ impl<O: IsA<RTSPMediaFactory>> RTSPMediaFactoryExtManual for O {
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
fn add_role_from_structure(&self, structure: &gst::StructureRef) {
|
fn add_role_from_structure(&self, structure: &gst::StructureRef) {
|
||||||
unsafe {
|
unsafe {
|
||||||
ffi::gst_rtsp_media_factory_add_role_from_structure(self.to_glib_none().0, structure.as_mut_ptr());
|
ffi::gst_rtsp_media_factory_add_role_from_structure(
|
||||||
|
self.to_glib_none().0,
|
||||||
|
structure.as_mut_ptr(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,8 @@ use RTSPServer;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::object::IsA;
|
use glib::object::IsA;
|
||||||
use glib::translate::*;
|
|
||||||
use glib::source::SourceId;
|
use glib::source::SourceId;
|
||||||
|
use glib::translate::*;
|
||||||
|
|
||||||
pub trait RTSPServerExtManual {
|
pub trait RTSPServerExtManual {
|
||||||
fn attach<'a, P: Into<Option<&'a glib::MainContext>>>(&self, context: P) -> SourceId;
|
fn attach<'a, P: Into<Option<&'a glib::MainContext>>>(&self, context: P) -> SourceId;
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
use std::cell::RefCell;
|
|
||||||
use std::mem::transmute;
|
|
||||||
use RTSPSessionPool;
|
use RTSPSessionPool;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib_ffi;
|
|
||||||
use glib::object::IsA;
|
use glib::object::IsA;
|
||||||
use glib::translate::*;
|
|
||||||
use glib::source::{CallbackGuard, Continue, Priority};
|
use glib::source::{CallbackGuard, Continue, Priority};
|
||||||
|
use glib::translate::*;
|
||||||
|
use glib_ffi;
|
||||||
use glib_ffi::{gboolean, gpointer};
|
use glib_ffi::{gboolean, gpointer};
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::mem::transmute;
|
||||||
|
|
||||||
unsafe extern "C" fn trampoline_watch(
|
unsafe extern "C" fn trampoline_watch(
|
||||||
pool: *mut ffi::GstRTSPSessionPool,
|
pool: *mut ffi::GstRTSPSessionPool,
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
use ffi;
|
use ffi;
|
||||||
use gst_ffi;
|
|
||||||
use gst;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::StaticType;
|
use glib::StaticType;
|
||||||
use glib::value::ToSendValue;
|
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use glib::value::ToSendValue;
|
||||||
|
use gst;
|
||||||
|
use gst_ffi;
|
||||||
|
|
||||||
use gst::miniobject::{MiniObject, GstRc};
|
use gst::miniobject::{GstRc, MiniObject};
|
||||||
|
|
||||||
pub trait GstRcRTSPTokenExt<T: MiniObject> {
|
pub trait GstRcRTSPTokenExt<T: MiniObject> {
|
||||||
fn new_empty() -> Self;
|
fn new_empty() -> Self;
|
||||||
|
@ -44,19 +44,23 @@ impl GstRcRTSPTokenExt<RTSPTokenRef> for GstRc<RTSPTokenRef> {
|
||||||
impl RTSPTokenRef {
|
impl RTSPTokenRef {
|
||||||
pub fn get_string(&self, field: &str) -> Option<String> {
|
pub fn get_string(&self, field: &str) -> Option<String> {
|
||||||
unsafe {
|
unsafe {
|
||||||
from_glib_none(ffi::gst_rtsp_token_get_string(self.as_mut_ptr(), field.to_glib_none().0))
|
from_glib_none(ffi::gst_rtsp_token_get_string(
|
||||||
|
self.as_mut_ptr(),
|
||||||
|
field.to_glib_none().0,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_structure(&self) -> Option<gst::Structure> {
|
pub fn get_structure(&self) -> Option<gst::Structure> {
|
||||||
unsafe {
|
unsafe { from_glib_none(ffi::gst_rtsp_token_get_structure(self.as_mut_ptr())) }
|
||||||
from_glib_none(ffi::gst_rtsp_token_get_structure(self.as_mut_ptr()))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn is_allowed(&self, field: &str) -> bool {
|
pub fn is_allowed(&self, field: &str) -> bool {
|
||||||
unsafe {
|
unsafe {
|
||||||
from_glib(ffi::gst_rtsp_token_is_allowed(self.as_mut_ptr(), field.to_glib_none().0))
|
from_glib(ffi::gst_rtsp_token_is_allowed(
|
||||||
|
self.as_mut_ptr(),
|
||||||
|
field.to_glib_none().0,
|
||||||
|
))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +80,9 @@ impl ToOwned for RTSPTokenRef {
|
||||||
type Owned = GstRc<RTSPTokenRef>;
|
type Owned = GstRc<RTSPTokenRef>;
|
||||||
|
|
||||||
fn to_owned(&self) -> GstRc<RTSPTokenRef> {
|
fn to_owned(&self) -> GstRc<RTSPTokenRef> {
|
||||||
unsafe { from_glib_full(gst_ffi::gst_mini_object_copy(self.as_ptr() as *const _) as *mut _) }
|
unsafe {
|
||||||
|
from_glib_full(gst_ffi::gst_mini_object_copy(self.as_ptr() as *const _) as *mut _)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,16 +21,15 @@ extern crate gstreamer_sdp_sys as gst_sdp_ffi;
|
||||||
extern crate gstreamer_sys as gst_ffi;
|
extern crate gstreamer_sys as gst_ffi;
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
|
|
@ -17,8 +17,7 @@ extern crate gstreamer_sdp_sys as ffi;
|
||||||
extern crate gstreamer_sys as gst_ffi;
|
extern crate gstreamer_sys as gst_ffi;
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use gst_ffi;
|
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
|
use gst_ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib_full, ToGlib, ToGlibPtr};
|
use glib::translate::{from_glib_full, ToGlib, ToGlibPtr};
|
||||||
|
use gst;
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
pub fn convert_sample(
|
pub fn convert_sample(
|
||||||
sample: &gst::Sample,
|
sample: &gst::Sample,
|
||||||
|
@ -89,8 +89,8 @@ pub fn convert_sample_async<F>(
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use gst;
|
|
||||||
use glib;
|
use glib;
|
||||||
|
use gst;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -21,22 +21,21 @@ extern crate gstreamer_sys as gst_ffi;
|
||||||
extern crate gstreamer_video_sys as ffi;
|
extern crate gstreamer_video_sys as ffi;
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::gst_ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
use ffi;
|
use ffi;
|
||||||
use gst_ffi;
|
use gst_ffi;
|
||||||
|
|
||||||
|
use glib::ToSendValue;
|
||||||
|
use glib::translate::{from_glib, from_glib_full, ToGlib};
|
||||||
use gst;
|
use gst;
|
||||||
use gst::MiniObject;
|
use gst::MiniObject;
|
||||||
use glib::translate::{from_glib, from_glib_full, ToGlib};
|
|
||||||
use glib::ToSendValue;
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|
||||||
pub fn is_force_key_unit_event(event: &gst::EventRef) -> bool {
|
pub fn is_force_key_unit_event(event: &gst::EventRef) -> bool {
|
||||||
|
@ -138,15 +138,15 @@ impl<'a> DownstreamForceKeyUnitEventBuilder<'a> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event_builder_generic_impl!(|s: &mut Self| {
|
event_builder_generic_impl!(
|
||||||
ffi::gst_video_event_new_downstream_force_key_unit(
|
|s: &mut Self| ffi::gst_video_event_new_downstream_force_key_unit(
|
||||||
s.timestamp.to_glib(),
|
s.timestamp.to_glib(),
|
||||||
s.stream_time.to_glib(),
|
s.stream_time.to_glib(),
|
||||||
s.running_time.to_glib(),
|
s.running_time.to_glib(),
|
||||||
s.all_headers.to_glib(),
|
s.all_headers.to_glib(),
|
||||||
s.count,
|
s.count,
|
||||||
)
|
)
|
||||||
});
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, PartialEq, Eq, Debug)]
|
#[derive(Clone, PartialEq, Eq, Debug)]
|
||||||
|
|
|
@ -9,16 +9,16 @@
|
||||||
use ffi;
|
use ffi;
|
||||||
use gst_ffi;
|
use gst_ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use gst::miniobject::MiniObject;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib, ToGlibPtr};
|
use glib::translate::{from_glib, ToGlibPtr};
|
||||||
|
use gst;
|
||||||
|
use gst::miniobject::MiniObject;
|
||||||
|
|
||||||
use std::mem;
|
|
||||||
use std::ptr;
|
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
use std::slice;
|
use std::mem;
|
||||||
use std::ops;
|
use std::ops;
|
||||||
|
use std::ptr;
|
||||||
|
use std::slice;
|
||||||
|
|
||||||
pub struct Readable;
|
pub struct Readable;
|
||||||
pub struct Writable;
|
pub struct Writable;
|
||||||
|
|
|
@ -10,16 +10,16 @@ use ffi;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
use gst;
|
|
||||||
use gst::prelude::*;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlib, FromGlibPtrNone,
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlib, FromGlibPtrNone,
|
||||||
ToGlib, ToGlibPtr, ToGlibPtrMut};
|
ToGlib, ToGlibPtr, ToGlibPtrMut};
|
||||||
|
use gst;
|
||||||
|
use gst::prelude::*;
|
||||||
|
|
||||||
|
use std::fmt;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::str;
|
use std::str;
|
||||||
use std::fmt;
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
|
||||||
pub enum VideoColorRange {
|
pub enum VideoColorRange {
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use VideoOverlay;
|
use VideoOverlay;
|
||||||
|
use ffi;
|
||||||
use libc::uintptr_t;
|
use libc::uintptr_t;
|
||||||
|
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
|
|
|
@ -6,23 +6,23 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::slice;
|
use std::marker::PhantomData;
|
||||||
|
use std::mem;
|
||||||
use std::ops;
|
use std::ops;
|
||||||
|
use std::ptr;
|
||||||
|
use std::slice;
|
||||||
use std::u64;
|
use std::u64;
|
||||||
use std::usize;
|
use std::usize;
|
||||||
use std::marker::PhantomData;
|
|
||||||
|
|
||||||
use miniobject::*;
|
|
||||||
use BufferFlags;
|
use BufferFlags;
|
||||||
use ClockTime;
|
use ClockTime;
|
||||||
|
use miniobject::*;
|
||||||
|
|
||||||
use glib;
|
|
||||||
use glib_ffi;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, ToGlib};
|
use glib::translate::{from_glib, from_glib_full, ToGlib};
|
||||||
|
use glib_ffi;
|
||||||
|
|
||||||
pub struct Readable;
|
pub struct Readable;
|
||||||
pub struct Writable;
|
pub struct Writable;
|
||||||
|
@ -573,8 +573,10 @@ impl<T> Eq for MappedBuffer<T> {}
|
||||||
unsafe impl<T> Send for MappedBuffer<T> {}
|
unsafe impl<T> Send for MappedBuffer<T> {}
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref BUFFER_COPY_METADATA: ::BufferCopyFlags = ::BufferCopyFlags::FLAGS | ::BufferCopyFlags::TIMESTAMPS | ::BufferCopyFlags::META;
|
pub static ref BUFFER_COPY_METADATA: ::BufferCopyFlags =
|
||||||
pub static ref BUFFER_COPY_ALL: ::BufferCopyFlags = *BUFFER_COPY_METADATA | ::BufferCopyFlags::MEMORY;
|
::BufferCopyFlags::FLAGS | ::BufferCopyFlags::TIMESTAMPS | ::BufferCopyFlags::META;
|
||||||
|
pub static ref BUFFER_COPY_ALL: ::BufferCopyFlags =
|
||||||
|
*BUFFER_COPY_METADATA | ::BufferCopyFlags::MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
|
|
@ -16,8 +16,8 @@ use glib::translate::{from_glib, from_glib_full, from_glib_none, ToGlib, ToGlibP
|
||||||
use ffi;
|
use ffi;
|
||||||
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
|
||||||
use std::ops;
|
use std::ops;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Eq)]
|
#[derive(Debug, PartialEq, Eq)]
|
||||||
pub struct BufferPoolConfig(Structure);
|
pub struct BufferPoolConfig(Structure);
|
||||||
|
|
|
@ -12,9 +12,9 @@ use glib::StaticType;
|
||||||
use glib::translate::{from_glib, from_glib_full};
|
use glib::translate::{from_glib, from_glib_full};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
|
||||||
use miniobject::*;
|
|
||||||
use Buffer;
|
use Buffer;
|
||||||
use BufferRef;
|
use BufferRef;
|
||||||
|
use miniobject::*;
|
||||||
|
|
||||||
pub type BufferList = GstRc<BufferListRef>;
|
pub type BufferList = GstRc<BufferListRef>;
|
||||||
pub struct BufferListRef(ffi::GstBufferList);
|
pub struct BufferListRef(ffi::GstBufferList);
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::cell::RefCell;
|
|
||||||
use std::mem::transmute;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::*;
|
|
||||||
use glib::source::{CallbackGuard, Continue, Priority, SourceId};
|
use glib::source::{CallbackGuard, Continue, Priority, SourceId};
|
||||||
|
use glib::translate::*;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use glib_ffi::{gboolean, gpointer};
|
use glib_ffi::{gboolean, gpointer};
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::mem::transmute;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
use Bus;
|
use Bus;
|
||||||
|
@ -142,12 +142,12 @@ impl Bus {
|
||||||
|
|
||||||
#[cfg(any(feature = "futures", feature = "dox"))]
|
#[cfg(any(feature = "futures", feature = "dox"))]
|
||||||
mod futures {
|
mod futures {
|
||||||
use std::sync::{Arc, Mutex};
|
|
||||||
use futures;
|
|
||||||
use futures::{Async, Poll};
|
|
||||||
use futures::task::Task;
|
|
||||||
use futures::stream::Stream;
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
use futures;
|
||||||
|
use futures::stream::Stream;
|
||||||
|
use futures::task::Task;
|
||||||
|
use futures::{Async, Poll};
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
pub struct BusStream(Bus, Arc<Mutex<Option<Task>>>);
|
pub struct BusStream(Bus, Arc<Mutex<Option<Task>>>);
|
||||||
|
|
||||||
|
|
|
@ -6,15 +6,15 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use miniobject::*;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::str;
|
use std::str;
|
||||||
use miniobject::*;
|
|
||||||
use structure::*;
|
use structure::*;
|
||||||
|
|
||||||
use CapsIntersectMode;
|
use CapsIntersectMode;
|
||||||
|
|
||||||
use glib;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr};
|
||||||
use glib::value::ToSendValue;
|
use glib::value::ToSendValue;
|
||||||
|
|
||||||
|
@ -392,8 +392,8 @@ impl Builder {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use Fraction;
|
|
||||||
use Array;
|
use Array;
|
||||||
|
use Fraction;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_simple() {
|
fn test_simple() {
|
||||||
|
|
|
@ -6,12 +6,12 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use ChildProxy;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::object::IsA;
|
use glib::object::IsA;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use ChildProxy;
|
|
||||||
|
|
||||||
pub trait ChildProxyExtManual {
|
pub trait ChildProxyExtManual {
|
||||||
fn get_child_property(&self, name: &str) -> Option<glib::Value>;
|
fn get_child_property(&self, name: &str) -> Option<glib::Value>;
|
||||||
|
|
|
@ -7,21 +7,21 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use Clock;
|
use Clock;
|
||||||
|
use ClockReturn;
|
||||||
use ClockTime;
|
use ClockTime;
|
||||||
use ClockTimeDiff;
|
use ClockTimeDiff;
|
||||||
use ClockReturn;
|
|
||||||
use std::mem;
|
|
||||||
use std::cmp;
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem::transmute;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::*;
|
|
||||||
use glib::source::CallbackGuard;
|
use glib::source::CallbackGuard;
|
||||||
|
use glib::translate::*;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use glib_ffi::{gboolean, gpointer};
|
use glib_ffi::{gboolean, gpointer};
|
||||||
use libc::c_void;
|
use libc::c_void;
|
||||||
|
use std::cmp;
|
||||||
|
use std::mem;
|
||||||
|
use std::mem::transmute;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
glib_wrapper! {
|
glib_wrapper! {
|
||||||
pub struct ClockId(Shared<c_void>);
|
pub struct ClockId(Shared<c_void>);
|
||||||
|
@ -241,8 +241,8 @@ impl<O: IsA<Clock> + IsA<glib::object::Object>> ClockExtManual for O {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
|
||||||
use super::super::*;
|
use super::super::*;
|
||||||
|
use super::*;
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::fmt;
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
use std::fmt;
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
|
||||||
|
@ -15,8 +15,8 @@ use glib;
|
||||||
use glib::StaticType;
|
use glib::StaticType;
|
||||||
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr};
|
||||||
|
|
||||||
use miniobject::*;
|
|
||||||
use StructureRef;
|
use StructureRef;
|
||||||
|
use miniobject::*;
|
||||||
|
|
||||||
pub type Context = GstRc<ContextRef>;
|
pub type Context = GstRc<ContextRef>;
|
||||||
pub struct ContextRef(ffi::GstContext);
|
pub struct ContextRef(ffi::GstContext);
|
||||||
|
|
|
@ -8,22 +8,22 @@
|
||||||
|
|
||||||
use Element;
|
use Element;
|
||||||
|
|
||||||
use glib;
|
|
||||||
use glib::IsA;
|
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlib,
|
|
||||||
FromGlibPtrContainer, ToGlib, ToGlibPtr};
|
|
||||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
|
||||||
use glib::translate::FromGlibPtrBorrow;
|
|
||||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
|
||||||
use glib::object::Downcast;
|
|
||||||
use QueryRef;
|
|
||||||
use Event;
|
use Event;
|
||||||
|
use Format;
|
||||||
|
use FormattedValue;
|
||||||
|
use GenericFormattedValue;
|
||||||
use Pad;
|
use Pad;
|
||||||
use PadTemplate;
|
use PadTemplate;
|
||||||
use Format;
|
use QueryRef;
|
||||||
use GenericFormattedValue;
|
|
||||||
use FormattedValue;
|
|
||||||
use SpecificFormattedValue;
|
use SpecificFormattedValue;
|
||||||
|
use glib;
|
||||||
|
use glib::IsA;
|
||||||
|
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||||
|
use glib::object::Downcast;
|
||||||
|
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||||
|
use glib::translate::FromGlibPtrBorrow;
|
||||||
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlib, FromGlibPtrContainer,
|
||||||
|
ToGlib, ToGlibPtr};
|
||||||
use miniobject::MiniObject;
|
use miniobject::MiniObject;
|
||||||
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
@ -612,12 +612,36 @@ impl<O: IsA<Element>> ElementExtManual for O {
|
||||||
}
|
}
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
pub static ref ELEMENT_METADATA_AUTHOR: &'static str = unsafe { CStr::from_ptr(ffi::GST_ELEMENT_METADATA_AUTHOR).to_str().unwrap() };
|
pub static ref ELEMENT_METADATA_AUTHOR: &'static str = unsafe {
|
||||||
pub static ref ELEMENT_METADATA_DESCRIPTION: &'static str = unsafe { CStr::from_ptr(ffi::GST_ELEMENT_METADATA_DESCRIPTION).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_ELEMENT_METADATA_AUTHOR)
|
||||||
pub static ref ELEMENT_METADATA_DOC_URI: &'static str = unsafe { CStr::from_ptr(ffi::GST_ELEMENT_METADATA_DOC_URI).to_str().unwrap() };
|
.to_str()
|
||||||
pub static ref ELEMENT_METADATA_ICON_NAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_ELEMENT_METADATA_ICON_NAME).to_str().unwrap() };
|
.unwrap()
|
||||||
pub static ref ELEMENT_METADATA_KLASS: &'static str = unsafe { CStr::from_ptr(ffi::GST_ELEMENT_METADATA_KLASS).to_str().unwrap() };
|
};
|
||||||
pub static ref ELEMENT_METADATA_LONGNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_ELEMENT_METADATA_LONGNAME).to_str().unwrap() };
|
pub static ref ELEMENT_METADATA_DESCRIPTION: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_ELEMENT_METADATA_DESCRIPTION)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref ELEMENT_METADATA_DOC_URI: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_ELEMENT_METADATA_DOC_URI)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref ELEMENT_METADATA_ICON_NAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_ELEMENT_METADATA_ICON_NAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref ELEMENT_METADATA_KLASS: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_ELEMENT_METADATA_KLASS)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
pub static ref ELEMENT_METADATA_LONGNAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_ELEMENT_METADATA_LONGNAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use StateChangeReturn;
|
use ClockReturn;
|
||||||
use FlowReturn;
|
use FlowReturn;
|
||||||
use PadLinkReturn;
|
use PadLinkReturn;
|
||||||
use ClockReturn;
|
use StateChangeReturn;
|
||||||
|
use std::cmp;
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::cmp;
|
|
||||||
|
|
||||||
use glib::translate::ToGlib;
|
use glib::translate::ToGlib;
|
||||||
|
|
||||||
|
|
|
@ -6,21 +6,21 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use GenericFormattedValue;
|
||||||
use ffi;
|
use ffi;
|
||||||
use miniobject::*;
|
use miniobject::*;
|
||||||
use structure::*;
|
use structure::*;
|
||||||
use GenericFormattedValue;
|
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::fmt;
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
use std::fmt;
|
||||||
|
use std::mem;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::value::ToSendValue;
|
|
||||||
use glib::translate::{from_glib, from_glib_full, FromGlib, ToGlib, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_full, FromGlib, ToGlib, ToGlibPtr};
|
||||||
|
use glib::value::ToSendValue;
|
||||||
|
|
||||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||||
use glib::translate::FromGlibPtrContainer;
|
use glib::translate::FromGlibPtrContainer;
|
||||||
|
|
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
use ClockTime;
|
use ClockTime;
|
||||||
use Format;
|
use Format;
|
||||||
use std::ops;
|
|
||||||
use muldiv::MulDiv;
|
use muldiv::MulDiv;
|
||||||
|
use std::ops;
|
||||||
|
|
||||||
#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)]
|
#[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)]
|
||||||
pub enum GenericFormattedValue {
|
pub enum GenericFormattedValue {
|
||||||
|
|
|
@ -10,10 +10,10 @@ use ffi;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
use ParseContext;
|
|
||||||
use ParseFlags;
|
|
||||||
use Element;
|
use Element;
|
||||||
use Error;
|
use Error;
|
||||||
|
use ParseContext;
|
||||||
|
use ParseFlags;
|
||||||
|
|
||||||
pub fn parse_bin_from_description_full<'a, P: Into<Option<&'a mut ParseContext>>>(
|
pub fn parse_bin_from_description_full<'a, P: Into<Option<&'a mut ParseContext>>>(
|
||||||
bin_description: &str,
|
bin_description: &str,
|
||||||
|
|
|
@ -6,11 +6,11 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use Pad;
|
|
||||||
use PadTemplate;
|
|
||||||
use Object;
|
|
||||||
use PadMode;
|
|
||||||
use GhostPad;
|
use GhostPad;
|
||||||
|
use Object;
|
||||||
|
use Pad;
|
||||||
|
use PadMode;
|
||||||
|
use PadTemplate;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::object::Downcast;
|
use glib::object::Downcast;
|
||||||
use glib::object::IsA;
|
use glib::object::IsA;
|
||||||
|
|
|
@ -7,22 +7,22 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
use glib;
|
||||||
|
use glib::StaticType;
|
||||||
|
use glib::Value;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
use glib::value::{FromValueOptional, ToValue};
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use glib_ffi::{gconstpointer, gpointer};
|
use glib_ffi::{gconstpointer, gpointer};
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
use std::error::Error;
|
||||||
|
use std::ffi::CString;
|
||||||
|
use std::fmt;
|
||||||
|
use std::iter::Iterator as StdIterator;
|
||||||
|
use std::marker::PhantomData;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use glib;
|
|
||||||
use glib::Value;
|
|
||||||
use glib::StaticType;
|
|
||||||
use glib::value::{FromValueOptional, ToValue};
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use std::ffi::CString;
|
|
||||||
use std::marker::PhantomData;
|
|
||||||
use std::iter::Iterator as StdIterator;
|
|
||||||
use std::fmt;
|
|
||||||
use std::error::Error;
|
|
||||||
|
|
||||||
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
|
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash)]
|
||||||
pub enum IteratorError {
|
pub enum IteratorError {
|
||||||
|
|
|
@ -33,22 +33,21 @@ extern crate muldiv;
|
||||||
use glib::translate::{from_glib, from_glib_full};
|
use glib::translate::{from_glib, from_glib_full};
|
||||||
|
|
||||||
macro_rules! callback_guard {
|
macro_rules! callback_guard {
|
||||||
() => (
|
() => {
|
||||||
let _guard = ::glib::CallbackGuard::new();
|
let _guard = ::glib::CallbackGuard::new();
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! assert_initialized_main_thread {
|
macro_rules! assert_initialized_main_thread {
|
||||||
() => (
|
() => {
|
||||||
if unsafe { ::ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
if unsafe { ::ffi::gst_is_initialized() } != ::glib_ffi::GTRUE {
|
||||||
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
panic!("GStreamer has not been initialized. Call `gst::init` first.");
|
||||||
}
|
}
|
||||||
)
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! skip_assert_initialized {
|
macro_rules! skip_assert_initialized {
|
||||||
() => (
|
() => {};
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value};
|
||||||
|
@ -59,8 +58,8 @@ pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue
|
||||||
#[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))]
|
#[cfg_attr(feature = "cargo-clippy", allow(match_same_arms))]
|
||||||
#[cfg_attr(feature = "cargo-clippy", allow(type_complexity))]
|
#[cfg_attr(feature = "cargo-clippy", allow(type_complexity))]
|
||||||
mod auto;
|
mod auto;
|
||||||
pub use auto::*;
|
|
||||||
pub use auto::functions::*;
|
pub use auto::functions::*;
|
||||||
|
pub use auto::*;
|
||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
mod log;
|
mod log;
|
||||||
|
@ -102,9 +101,9 @@ mod promise;
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
pub use promise::*;
|
pub use promise::*;
|
||||||
|
|
||||||
mod element;
|
|
||||||
mod bin;
|
mod bin;
|
||||||
mod bus;
|
mod bus;
|
||||||
|
mod element;
|
||||||
|
|
||||||
// OS dependent Bus extensions (also import the other plateform mod for doc)
|
// OS dependent Bus extensions (also import the other plateform mod for doc)
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
@ -120,24 +119,24 @@ cfg_if! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mod pad;
|
|
||||||
mod object;
|
|
||||||
mod gobject;
|
|
||||||
mod proxy_pad;
|
|
||||||
mod ghost_pad;
|
|
||||||
mod child_proxy;
|
mod child_proxy;
|
||||||
mod tag_setter;
|
|
||||||
mod iterator;
|
|
||||||
mod device_provider;
|
|
||||||
mod parse_context;
|
|
||||||
mod enums;
|
|
||||||
mod clock_time;
|
mod clock_time;
|
||||||
mod date_time;
|
mod date_time;
|
||||||
pub use object::GstObjectExtManual;
|
mod device_provider;
|
||||||
pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId};
|
mod enums;
|
||||||
|
mod ghost_pad;
|
||||||
|
mod gobject;
|
||||||
|
mod iterator;
|
||||||
|
mod object;
|
||||||
|
mod pad;
|
||||||
|
mod parse_context;
|
||||||
|
mod proxy_pad;
|
||||||
|
mod tag_setter;
|
||||||
|
pub use bin::BinExtManual;
|
||||||
pub use element::{ELEMENT_METADATA_AUTHOR, ELEMENT_METADATA_DESCRIPTION, ELEMENT_METADATA_DOC_URI,
|
pub use element::{ELEMENT_METADATA_AUTHOR, ELEMENT_METADATA_DESCRIPTION, ELEMENT_METADATA_DOC_URI,
|
||||||
ELEMENT_METADATA_ICON_NAME, ELEMENT_METADATA_KLASS, ELEMENT_METADATA_LONGNAME};
|
ELEMENT_METADATA_ICON_NAME, ELEMENT_METADATA_KLASS, ELEMENT_METADATA_LONGNAME};
|
||||||
pub use bin::BinExtManual;
|
pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId};
|
||||||
|
pub use object::GstObjectExtManual;
|
||||||
|
|
||||||
// OS dependent Bus extensions (also import the other plateform trait for doc)
|
// OS dependent Bus extensions (also import the other plateform trait for doc)
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
@ -153,18 +152,18 @@ cfg_if! {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use pad::{PadExtManual, PadProbeData, PadProbeId, PadProbeInfo};
|
|
||||||
pub use gobject::GObjectExtManualGst;
|
|
||||||
pub use child_proxy::ChildProxyExtManual;
|
|
||||||
pub use tag_setter::TagSetterExtManual;
|
|
||||||
pub use self::iterator::{Iterator, IteratorError, IteratorImpl};
|
pub use self::iterator::{Iterator, IteratorError, IteratorImpl};
|
||||||
pub use device_provider::DeviceProviderExtManual;
|
|
||||||
pub use parse_context::ParseContext;
|
|
||||||
#[cfg(any(feature = "futures", feature = "dox"))]
|
#[cfg(any(feature = "futures", feature = "dox"))]
|
||||||
pub use bus::BusStream;
|
pub use bus::BusStream;
|
||||||
|
pub use child_proxy::ChildProxyExtManual;
|
||||||
|
pub use clock_time::ClockTime;
|
||||||
|
pub use device_provider::DeviceProviderExtManual;
|
||||||
pub use enums::{ClockError, ClockSuccess, FlowError, FlowSuccess, PadLinkError, PadLinkSuccess,
|
pub use enums::{ClockError, ClockSuccess, FlowError, FlowSuccess, PadLinkError, PadLinkSuccess,
|
||||||
StateChangeError, StateChangeSuccess};
|
StateChangeError, StateChangeSuccess};
|
||||||
pub use clock_time::ClockTime;
|
pub use gobject::GObjectExtManualGst;
|
||||||
|
pub use pad::{PadExtManual, PadProbeData, PadProbeId, PadProbeInfo};
|
||||||
|
pub use parse_context::ParseContext;
|
||||||
|
pub use tag_setter::TagSetterExtManual;
|
||||||
|
|
||||||
mod plugin;
|
mod plugin;
|
||||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||||
|
@ -236,8 +235,8 @@ pub mod prelude {
|
||||||
|
|
||||||
pub use auto::traits::*;
|
pub use auto::traits::*;
|
||||||
|
|
||||||
pub use element::ElementExtManual;
|
|
||||||
pub use bin::BinExtManual;
|
pub use bin::BinExtManual;
|
||||||
|
pub use element::ElementExtManual;
|
||||||
|
|
||||||
// OS dependent Bus extensions (also import the other plateform trait for doc)
|
// OS dependent Bus extensions (also import the other plateform trait for doc)
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
@ -253,18 +252,18 @@ pub mod prelude {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub use pad::PadExtManual;
|
|
||||||
pub use object::GstObjectExtManual;
|
|
||||||
pub use gobject::GObjectExtManualGst;
|
|
||||||
pub use child_proxy::ChildProxyExtManual;
|
|
||||||
pub use tag_setter::TagSetterExtManual;
|
|
||||||
pub use device_provider::DeviceProviderExtManual;
|
|
||||||
pub use clock::ClockExtManual;
|
|
||||||
pub use value::GstValueExt;
|
|
||||||
pub use buffer_pool::BufferPoolExtManual;
|
pub use buffer_pool::BufferPoolExtManual;
|
||||||
|
pub use child_proxy::ChildProxyExtManual;
|
||||||
|
pub use clock::ClockExtManual;
|
||||||
|
pub use device_provider::DeviceProviderExtManual;
|
||||||
|
pub use gobject::GObjectExtManualGst;
|
||||||
|
pub use object::GstObjectExtManual;
|
||||||
|
pub use pad::PadExtManual;
|
||||||
|
pub use tag_setter::TagSetterExtManual;
|
||||||
|
pub use value::GstValueExt;
|
||||||
|
|
||||||
pub use tags::Tag;
|
|
||||||
pub use miniobject::MiniObject;
|
pub use miniobject::MiniObject;
|
||||||
|
pub use tags::Tag;
|
||||||
|
|
||||||
pub use muldiv::MulDiv;
|
pub use muldiv::MulDiv;
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,11 @@
|
||||||
use libc::c_char;
|
use libc::c_char;
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
use gobject_ffi;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
use gobject_ffi;
|
||||||
|
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::{from_glib, ToGlib, ToGlibPtr};
|
use glib::translate::{from_glib, ToGlib, ToGlibPtr};
|
||||||
|
|
|
@ -6,27 +6,27 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
use GenericFormattedValue;
|
||||||
|
use GroupId;
|
||||||
|
use GstObjectExt;
|
||||||
use Object;
|
use Object;
|
||||||
|
use Seqnum;
|
||||||
|
use TagList;
|
||||||
|
use ffi;
|
||||||
use miniobject::*;
|
use miniobject::*;
|
||||||
use structure::*;
|
use structure::*;
|
||||||
use TagList;
|
|
||||||
use GstObjectExt;
|
|
||||||
use Seqnum;
|
|
||||||
use GroupId;
|
|
||||||
use GenericFormattedValue;
|
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
|
||||||
use std::fmt;
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
use std::fmt;
|
||||||
|
use std::mem;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::Cast;
|
use glib::Cast;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::value::ToSendValue;
|
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, mut_override, ToGlib, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, mut_override, ToGlib, ToGlibPtr};
|
||||||
|
use glib::value::ToSendValue;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct MessageRef(ffi::GstMessage);
|
pub struct MessageRef(ffi::GstMessage);
|
||||||
|
@ -1193,7 +1193,9 @@ impl<'a> MessageBuilder<'a> {
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
fn other_fields(self, other_fields: &[(&'a str, &'a ToSendValue)]) -> Self {
|
fn other_fields(self, other_fields: &[(&'a str, &'a ToSendValue)]) -> Self {
|
||||||
Self {
|
Self {
|
||||||
other_fields: self.other_fields.iter().cloned()
|
other_fields: self.other_fields
|
||||||
|
.iter()
|
||||||
|
.cloned()
|
||||||
.chain(other_fields.iter().cloned())
|
.chain(other_fields.iter().cloned())
|
||||||
.collect(),
|
.collect(),
|
||||||
..self
|
..self
|
||||||
|
|
|
@ -6,20 +6,20 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::{borrow, fmt, ops};
|
use std::marker::PhantomData;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::marker::PhantomData;
|
use std::{borrow, fmt, ops};
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib_ffi::gpointer;
|
use glib;
|
||||||
use glib_ffi;
|
|
||||||
use gobject_ffi;
|
|
||||||
use glib::translate::{c_ptr_array_len, from_glib, from_glib_full, from_glib_none,
|
use glib::translate::{c_ptr_array_len, from_glib, from_glib_full, from_glib_none,
|
||||||
FromGlibContainerAsVec, FromGlibPtrArrayContainerAsVec, FromGlibPtrBorrow,
|
FromGlibContainerAsVec, FromGlibPtrArrayContainerAsVec, FromGlibPtrBorrow,
|
||||||
FromGlibPtrFull, FromGlibPtrNone, GlibPtrDefault, Stash, StashMut,
|
FromGlibPtrFull, FromGlibPtrNone, GlibPtrDefault, Stash, StashMut,
|
||||||
ToGlibContainerFromSlice, ToGlibPtr, ToGlibPtrMut};
|
ToGlibContainerFromSlice, ToGlibPtr, ToGlibPtrMut};
|
||||||
use glib;
|
use glib_ffi;
|
||||||
|
use glib_ffi::gpointer;
|
||||||
|
use gobject_ffi;
|
||||||
|
|
||||||
pub struct GstRc<T: MiniObject> {
|
pub struct GstRc<T: MiniObject> {
|
||||||
obj: ptr::NonNull<T>,
|
obj: ptr::NonNull<T>,
|
||||||
|
@ -422,9 +422,8 @@ impl<T: MiniObject + 'static> FromGlibContainerAsVec<*mut T::GstType, *const *mu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<
|
impl<T: MiniObject + 'static>
|
||||||
T: MiniObject + 'static,
|
FromGlibPtrArrayContainerAsVec<*mut T::GstType, *const *mut T::GstType> for GstRc<T>
|
||||||
> FromGlibPtrArrayContainerAsVec<*mut T::GstType, *const *mut T::GstType> for GstRc<T>
|
|
||||||
{
|
{
|
||||||
unsafe fn from_glib_none_as_vec(ptr: *const *mut T::GstType) -> Vec<Self> {
|
unsafe fn from_glib_none_as_vec(ptr: *const *mut T::GstType) -> Vec<Self> {
|
||||||
FromGlibPtrArrayContainerAsVec::from_glib_none_as_vec(ptr as *mut *mut _)
|
FromGlibPtrArrayContainerAsVec::from_glib_none_as_vec(ptr as *mut *mut _)
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::ToGlibPtr;
|
|
||||||
use glib::signal::SignalHandlerId;
|
|
||||||
use glib::object::{Downcast, ObjectExt};
|
use glib::object::{Downcast, ObjectExt};
|
||||||
|
use glib::signal::SignalHandlerId;
|
||||||
|
use glib::translate::ToGlibPtr;
|
||||||
|
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
|
|
|
@ -6,35 +6,35 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use Pad;
|
|
||||||
use PadProbeType;
|
|
||||||
use PadProbeReturn;
|
|
||||||
use Buffer;
|
use Buffer;
|
||||||
use BufferList;
|
use BufferList;
|
||||||
use Format;
|
use Event;
|
||||||
use GenericFormattedValue;
|
|
||||||
use FormattedValue;
|
|
||||||
use SpecificFormattedValue;
|
|
||||||
use FlowReturn;
|
use FlowReturn;
|
||||||
|
use Format;
|
||||||
|
use FormattedValue;
|
||||||
|
use GenericFormattedValue;
|
||||||
|
use Pad;
|
||||||
|
use PadProbeReturn;
|
||||||
|
use PadProbeType;
|
||||||
use Query;
|
use Query;
|
||||||
use QueryRef;
|
use QueryRef;
|
||||||
use Event;
|
use SpecificFormattedValue;
|
||||||
use StaticPadTemplate;
|
use StaticPadTemplate;
|
||||||
use miniobject::MiniObject;
|
use miniobject::MiniObject;
|
||||||
|
|
||||||
|
use std::cell::RefCell;
|
||||||
|
use std::mem;
|
||||||
use std::mem::transmute;
|
use std::mem::transmute;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::mem;
|
|
||||||
use std::cell::RefCell;
|
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::{IsA, StaticType};
|
use glib::Object;
|
||||||
|
use glib::source::CallbackGuard;
|
||||||
use glib::translate::{from_glib, from_glib_borrow, from_glib_full, from_glib_none, mut_override,
|
use glib::translate::{from_glib, from_glib_borrow, from_glib_full, from_glib_none, mut_override,
|
||||||
FromGlib, ToGlib, ToGlibPtr};
|
FromGlib, ToGlib, ToGlibPtr};
|
||||||
use glib::source::CallbackGuard;
|
use glib::{IsA, StaticType};
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use glib_ffi::gpointer;
|
use glib_ffi::gpointer;
|
||||||
use glib::Object;
|
|
||||||
|
|
||||||
use libc;
|
use libc;
|
||||||
|
|
||||||
|
@ -1164,8 +1164,8 @@ fn into_raw_pad_task<F: FnMut() + Send + 'static>(func: F) -> gpointer {
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use prelude::*;
|
use prelude::*;
|
||||||
use std::sync::{Arc, Mutex};
|
|
||||||
use std::sync::mpsc::channel;
|
use std::sync::mpsc::channel;
|
||||||
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_event_chain_functions() {
|
fn test_event_chain_functions() {
|
||||||
|
|
|
@ -19,10 +19,18 @@ use glib;
|
||||||
|
|
||||||
impl PadTemplate {
|
impl PadTemplate {
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
pub fn new_from_static_pad_template_with_gtype(pad_template: &StaticPadTemplate, pad_type: glib::types::Type) -> PadTemplate {
|
pub fn new_from_static_pad_template_with_gtype(
|
||||||
|
pad_template: &StaticPadTemplate,
|
||||||
|
pad_type: glib::types::Type,
|
||||||
|
) -> PadTemplate {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
unsafe {
|
unsafe {
|
||||||
from_glib_none(ffi::gst_pad_template_new_from_static_pad_template_with_gtype(mut_override(pad_template.to_glib_none().0), pad_type.to_glib()))
|
from_glib_none(
|
||||||
|
ffi::gst_pad_template_new_from_static_pad_template_with_gtype(
|
||||||
|
mut_override(pad_template.to_glib_none().0),
|
||||||
|
pad_type.to_glib(),
|
||||||
|
),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use glib::translate::*;
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
use glib::translate::*;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
|
|
|
@ -6,15 +6,15 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use StructureRef;
|
use PromiseResult;
|
||||||
use Structure;
|
use Structure;
|
||||||
|
use StructureRef;
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use PromiseResult;
|
|
||||||
|
|
||||||
glib_wrapper! {
|
glib_wrapper! {
|
||||||
pub struct Promise(Shared<ffi::GstPromise>);
|
pub struct Promise(Shared<ffi::GstPromise>);
|
||||||
|
@ -30,14 +30,14 @@ impl Promise {
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
pub fn new() -> Promise {
|
pub fn new() -> Promise {
|
||||||
assert_initialized_main_thread!();
|
assert_initialized_main_thread!();
|
||||||
unsafe {
|
unsafe { from_glib_full(ffi::gst_promise_new()) }
|
||||||
from_glib_full(ffi::gst_promise_new())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
pub fn new_with_change_func<F>(func: F) -> Promise
|
pub fn new_with_change_func<F>(func: F) -> Promise
|
||||||
where F: FnOnce(&Promise) + Send + 'static {
|
where
|
||||||
|
F: FnOnce(&Promise) + Send + 'static,
|
||||||
|
{
|
||||||
let user_data: Box<Option<Box<F>>> = Box::new(Some(Box::new(func)));
|
let user_data: Box<Option<Box<F>>> = Box::new(Some(Box::new(func)));
|
||||||
|
|
||||||
unsafe extern "C" fn trampoline<F: FnOnce(&Promise) + Send + 'static>(
|
unsafe extern "C" fn trampoline<F: FnOnce(&Promise) + Send + 'static>(
|
||||||
|
@ -103,9 +103,7 @@ impl Promise {
|
||||||
|
|
||||||
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
pub fn wait(&self) -> PromiseResult {
|
pub fn wait(&self) -> PromiseResult {
|
||||||
unsafe {
|
unsafe { from_glib(ffi::gst_promise_wait(self.to_glib_none().0)) }
|
||||||
from_glib(ffi::gst_promise_wait(self.to_glib_none().0))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -6,13 +6,13 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use Pad;
|
|
||||||
use ProxyPad;
|
|
||||||
use Object;
|
|
||||||
use FlowReturn;
|
|
||||||
use Buffer;
|
use Buffer;
|
||||||
use BufferList;
|
use BufferList;
|
||||||
|
use FlowReturn;
|
||||||
|
use Object;
|
||||||
|
use Pad;
|
||||||
|
use ProxyPad;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
use glib::IsA;
|
use glib::IsA;
|
||||||
use glib::translate::{from_glib, from_glib_full, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_full, ToGlibPtr};
|
||||||
|
|
|
@ -6,16 +6,16 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
|
use GenericFormattedValue;
|
||||||
use ffi;
|
use ffi;
|
||||||
use miniobject::*;
|
use miniobject::*;
|
||||||
use structure::*;
|
use structure::*;
|
||||||
use GenericFormattedValue;
|
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
|
||||||
use std::fmt;
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
use std::fmt;
|
||||||
|
use std::mem;
|
||||||
use std::ops::{Deref, DerefMut};
|
use std::ops::{Deref, DerefMut};
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::ptr;
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
|
|
||||||
|
@ -15,14 +15,14 @@ use glib;
|
||||||
use glib::StaticType;
|
use glib::StaticType;
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, mut_override, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, mut_override, ToGlibPtr};
|
||||||
|
|
||||||
use miniobject::*;
|
|
||||||
use Buffer;
|
use Buffer;
|
||||||
use BufferList;
|
use BufferList;
|
||||||
use Caps;
|
use Caps;
|
||||||
|
use FormattedSegment;
|
||||||
use FormattedValue;
|
use FormattedValue;
|
||||||
use Segment;
|
use Segment;
|
||||||
use FormattedSegment;
|
|
||||||
use StructureRef;
|
use StructureRef;
|
||||||
|
use miniobject::*;
|
||||||
|
|
||||||
pub type Sample = GstRc<SampleRef>;
|
pub type Sample = GstRc<SampleRef>;
|
||||||
pub struct SampleRef(ffi::GstSample);
|
pub struct SampleRef(ffi::GstSample);
|
||||||
|
|
|
@ -7,19 +7,19 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use Format;
|
use Format;
|
||||||
use GenericFormattedValue;
|
|
||||||
use FormattedValue;
|
use FormattedValue;
|
||||||
|
use GenericFormattedValue;
|
||||||
use SeekFlags;
|
use SeekFlags;
|
||||||
use SeekType;
|
use SeekType;
|
||||||
use ffi;
|
use ffi;
|
||||||
|
use glib;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
use glib;
|
|
||||||
use std::mem;
|
|
||||||
use std::ptr;
|
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
use std::mem;
|
||||||
|
use std::ptr;
|
||||||
|
|
||||||
pub type Segment = FormattedSegment<GenericFormattedValue>;
|
pub type Segment = FormattedSegment<GenericFormattedValue>;
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
|
|
|
@ -6,16 +6,16 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use PadTemplate;
|
|
||||||
use Caps;
|
use Caps;
|
||||||
|
use PadTemplate;
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
use std::ffi::CStr;
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, FromGlibPtrNone, ToGlibPtr, ToGlibPtrMut};
|
use glib::translate::{from_glib, from_glib_full, FromGlibPtrNone, ToGlibPtr, ToGlibPtrMut};
|
||||||
|
use std::ffi::CStr;
|
||||||
|
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
|
|
||||||
|
|
|
@ -6,8 +6,8 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use StreamCollection;
|
|
||||||
use Stream;
|
use Stream;
|
||||||
|
use StreamCollection;
|
||||||
|
|
||||||
pub struct Iter<'a> {
|
pub struct Iter<'a> {
|
||||||
collection: &'a StreamCollection,
|
collection: &'a StreamCollection,
|
||||||
|
|
|
@ -6,22 +6,22 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::fmt;
|
|
||||||
use std::ptr;
|
|
||||||
use std::mem;
|
|
||||||
use std::str;
|
|
||||||
use std::ffi::CStr;
|
|
||||||
use std::ops::{Deref, DerefMut};
|
|
||||||
use std::borrow::{Borrow, BorrowMut, ToOwned};
|
use std::borrow::{Borrow, BorrowMut, ToOwned};
|
||||||
|
use std::ffi::CStr;
|
||||||
|
use std::fmt;
|
||||||
use std::marker::PhantomData;
|
use std::marker::PhantomData;
|
||||||
|
use std::mem;
|
||||||
|
use std::ops::{Deref, DerefMut};
|
||||||
|
use std::ptr;
|
||||||
|
use std::str;
|
||||||
|
|
||||||
use Fraction;
|
use Fraction;
|
||||||
|
|
||||||
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrFull, FromGlibPtrNone,
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrFull, FromGlibPtrNone,
|
||||||
GlibPtrDefault, Stash, StashMut, ToGlib, ToGlibPtr, ToGlibPtrMut};
|
GlibPtrDefault, Stash, StashMut, ToGlib, ToGlibPtr, ToGlibPtrMut};
|
||||||
use glib::value::{FromValueOptional, SendValue, ToSendValue};
|
use glib::value::{FromValueOptional, SendValue, ToSendValue};
|
||||||
use ffi;
|
|
||||||
use glib_ffi::gpointer;
|
use glib_ffi::gpointer;
|
||||||
use gobject_ffi;
|
use gobject_ffi;
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use TagSetter;
|
|
||||||
use TagMergeMode;
|
use TagMergeMode;
|
||||||
|
use TagSetter;
|
||||||
|
use ffi;
|
||||||
use glib::object::IsA;
|
use glib::object::IsA;
|
||||||
use glib::translate::*;
|
use glib::translate::*;
|
||||||
use glib::value::ToSendValue;
|
use glib::value::ToSendValue;
|
||||||
|
|
|
@ -6,21 +6,21 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use std::fmt;
|
|
||||||
use std::mem;
|
|
||||||
use std::marker::PhantomData;
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
|
use std::fmt;
|
||||||
|
use std::marker::PhantomData;
|
||||||
|
use std::mem;
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib;
|
use glib;
|
||||||
use glib::StaticType;
|
use glib::StaticType;
|
||||||
use glib::value::{FromValueOptional, SetValue, ToSendValue, TypedValue, Value};
|
|
||||||
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr, ToGlibPtrMut};
|
use glib::translate::{from_glib, from_glib_full, ToGlib, ToGlibPtr, ToGlibPtrMut};
|
||||||
|
use glib::value::{FromValueOptional, SetValue, ToSendValue, TypedValue, Value};
|
||||||
|
|
||||||
use miniobject::*;
|
use miniobject::*;
|
||||||
|
|
||||||
use TagMergeMode;
|
|
||||||
use Sample;
|
use Sample;
|
||||||
|
use TagMergeMode;
|
||||||
|
|
||||||
pub trait Tag<'a> {
|
pub trait Tag<'a> {
|
||||||
type TagType: FromValueOptional<'a> + SetValue + Send;
|
type TagType: FromValueOptional<'a> + SetValue + Send;
|
||||||
|
@ -147,91 +147,279 @@ impl_tag!(MidiBaseNote, &'a str, *TAG_MIDI_BASE_NOTE);
|
||||||
impl_tag!(PrivateData, Sample, *TAG_PRIVATE_DATA);
|
impl_tag!(PrivateData, Sample, *TAG_PRIVATE_DATA);
|
||||||
|
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref TAG_TITLE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_TITLE).to_str().unwrap() };
|
static ref TAG_TITLE: &'static str =
|
||||||
static ref TAG_TITLE_SORTNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_TITLE_SORTNAME).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_TITLE).to_str().unwrap() };
|
||||||
static ref TAG_ARTIST: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ARTIST).to_str().unwrap() };
|
static ref TAG_TITLE_SORTNAME: &'static str = unsafe {
|
||||||
static ref TAG_ARTIST_SORTNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ARTIST_SORTNAME).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_TITLE_SORTNAME)
|
||||||
static ref TAG_ALBUM: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_ALBUM_SORTNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_SORTNAME).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_ALBUM_ARTIST: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_ARTIST).to_str().unwrap() };
|
};
|
||||||
static ref TAG_ALBUM_ARTIST_SORTNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_ARTIST_SORTNAME).to_str().unwrap() };
|
static ref TAG_ARTIST: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ARTIST).to_str().unwrap() };
|
||||||
|
static ref TAG_ARTIST_SORTNAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_ARTIST_SORTNAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_ALBUM: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM).to_str().unwrap() };
|
||||||
|
static ref TAG_ALBUM_SORTNAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_ALBUM_SORTNAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_ALBUM_ARTIST: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_ARTIST).to_str().unwrap() };
|
||||||
|
static ref TAG_ALBUM_ARTIST_SORTNAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_ALBUM_ARTIST_SORTNAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
static ref TAG_DATE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DATE).to_str().unwrap() };
|
static ref TAG_DATE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DATE).to_str().unwrap() };
|
||||||
static ref TAG_DATE_TIME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DATE_TIME).to_str().unwrap() };
|
static ref TAG_DATE_TIME: &'static str =
|
||||||
static ref TAG_GENRE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GENRE).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_DATE_TIME).to_str().unwrap() };
|
||||||
static ref TAG_COMMENT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_COMMENT).to_str().unwrap() };
|
static ref TAG_GENRE: &'static str =
|
||||||
static ref TAG_EXTENDED_COMMENT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_EXTENDED_COMMENT).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_GENRE).to_str().unwrap() };
|
||||||
static ref TAG_TRACK_NUMBER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_NUMBER).to_str().unwrap() };
|
static ref TAG_COMMENT: &'static str =
|
||||||
static ref TAG_TRACK_COUNT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_COUNT).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_COMMENT).to_str().unwrap() };
|
||||||
static ref TAG_ALBUM_VOLUME_NUMBER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_VOLUME_NUMBER).to_str().unwrap() };
|
static ref TAG_EXTENDED_COMMENT: &'static str = unsafe {
|
||||||
static ref TAG_ALBUM_VOLUME_COUNT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_VOLUME_COUNT).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_EXTENDED_COMMENT)
|
||||||
static ref TAG_LOCATION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_LOCATION).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_HOMEPAGE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_HOMEPAGE).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_DESCRIPTION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DESCRIPTION).to_str().unwrap() };
|
};
|
||||||
static ref TAG_VERSION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_VERSION).to_str().unwrap() };
|
static ref TAG_TRACK_NUMBER: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_NUMBER).to_str().unwrap() };
|
||||||
|
static ref TAG_TRACK_COUNT: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_COUNT).to_str().unwrap() };
|
||||||
|
static ref TAG_ALBUM_VOLUME_NUMBER: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_ALBUM_VOLUME_NUMBER)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_ALBUM_VOLUME_COUNT: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_ALBUM_VOLUME_COUNT)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_LOCATION: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_LOCATION).to_str().unwrap() };
|
||||||
|
static ref TAG_HOMEPAGE: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_HOMEPAGE).to_str().unwrap() };
|
||||||
|
static ref TAG_DESCRIPTION: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_DESCRIPTION).to_str().unwrap() };
|
||||||
|
static ref TAG_VERSION: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_VERSION).to_str().unwrap() };
|
||||||
static ref TAG_ISRC: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ISRC).to_str().unwrap() };
|
static ref TAG_ISRC: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ISRC).to_str().unwrap() };
|
||||||
static ref TAG_ORGANIZATION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ORGANIZATION).to_str().unwrap() };
|
static ref TAG_ORGANIZATION: &'static str =
|
||||||
static ref TAG_COPYRIGHT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_COPYRIGHT).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ORGANIZATION).to_str().unwrap() };
|
||||||
static ref TAG_COPYRIGHT_URI: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_COPYRIGHT_URI).to_str().unwrap() };
|
static ref TAG_COPYRIGHT: &'static str =
|
||||||
static ref TAG_ENCODED_BY: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ENCODED_BY).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_COPYRIGHT).to_str().unwrap() };
|
||||||
static ref TAG_COMPOSER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_COMPOSER).to_str().unwrap() };
|
static ref TAG_COPYRIGHT_URI: &'static str =
|
||||||
static ref TAG_CONDUCTOR: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_CONDUCTOR).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_COPYRIGHT_URI).to_str().unwrap() };
|
||||||
static ref TAG_CONTACT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_CONTACT).to_str().unwrap() };
|
static ref TAG_ENCODED_BY: &'static str =
|
||||||
static ref TAG_LICENSE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_LICENSE).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ENCODED_BY).to_str().unwrap() };
|
||||||
static ref TAG_LICENSE_URI: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_LICENSE_URI).to_str().unwrap() };
|
static ref TAG_COMPOSER: &'static str =
|
||||||
static ref TAG_PERFORMER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_PERFORMER).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_COMPOSER).to_str().unwrap() };
|
||||||
static ref TAG_DURATION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DURATION).to_str().unwrap() };
|
static ref TAG_CONDUCTOR: &'static str =
|
||||||
static ref TAG_CODEC: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_CODEC).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_CONDUCTOR).to_str().unwrap() };
|
||||||
static ref TAG_VIDEO_CODEC: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_VIDEO_CODEC).to_str().unwrap() };
|
static ref TAG_CONTACT: &'static str =
|
||||||
static ref TAG_AUDIO_CODEC: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_AUDIO_CODEC).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_CONTACT).to_str().unwrap() };
|
||||||
static ref TAG_SUBTITLE_CODEC: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_SUBTITLE_CODEC).to_str().unwrap() };
|
static ref TAG_LICENSE: &'static str =
|
||||||
static ref TAG_CONTAINER_FORMAT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_CONTAINER_FORMAT).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_LICENSE).to_str().unwrap() };
|
||||||
static ref TAG_BITRATE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_BITRATE).to_str().unwrap() };
|
static ref TAG_LICENSE_URI: &'static str =
|
||||||
static ref TAG_NOMINAL_BITRATE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_NOMINAL_BITRATE).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_LICENSE_URI).to_str().unwrap() };
|
||||||
static ref TAG_MINIMUM_BITRATE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_MINIMUM_BITRATE).to_str().unwrap() };
|
static ref TAG_PERFORMER: &'static str =
|
||||||
static ref TAG_MAXIMUM_BITRATE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_MAXIMUM_BITRATE).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_PERFORMER).to_str().unwrap() };
|
||||||
static ref TAG_SERIAL: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_SERIAL).to_str().unwrap() };
|
static ref TAG_DURATION: &'static str =
|
||||||
static ref TAG_ENCODER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ENCODER).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_DURATION).to_str().unwrap() };
|
||||||
static ref TAG_ENCODER_VERSION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ENCODER_VERSION).to_str().unwrap() };
|
static ref TAG_CODEC: &'static str =
|
||||||
static ref TAG_TRACK_GAIN: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_GAIN).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_CODEC).to_str().unwrap() };
|
||||||
static ref TAG_TRACK_PEAK: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_PEAK).to_str().unwrap() };
|
static ref TAG_VIDEO_CODEC: &'static str =
|
||||||
static ref TAG_ALBUM_GAIN: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_GAIN).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_VIDEO_CODEC).to_str().unwrap() };
|
||||||
static ref TAG_ALBUM_PEAK: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_PEAK).to_str().unwrap() };
|
static ref TAG_AUDIO_CODEC: &'static str =
|
||||||
static ref TAG_REFERENCE_LEVEL: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_REFERENCE_LEVEL).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_AUDIO_CODEC).to_str().unwrap() };
|
||||||
static ref TAG_LANGUAGE_CODE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_LANGUAGE_CODE).to_str().unwrap() };
|
static ref TAG_SUBTITLE_CODEC: &'static str = unsafe {
|
||||||
static ref TAG_LANGUAGE_NAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_LANGUAGE_NAME).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_SUBTITLE_CODEC)
|
||||||
static ref TAG_IMAGE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_IMAGE).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_PREVIEW_IMAGE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_PREVIEW_IMAGE).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_ATTACHMENT: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_ATTACHMENT).to_str().unwrap() };
|
};
|
||||||
static ref TAG_BEATS_PER_MINUTE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_BEATS_PER_MINUTE).to_str().unwrap() };
|
static ref TAG_CONTAINER_FORMAT: &'static str = unsafe {
|
||||||
static ref TAG_KEYWORDS: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_KEYWORDS).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_CONTAINER_FORMAT)
|
||||||
static ref TAG_GEO_LOCATION_NAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_NAME).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_GEO_LOCATION_LATITUDE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_LATITUDE).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_GEO_LOCATION_LONGITUDE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_LONGITUDE).to_str().unwrap() };
|
};
|
||||||
static ref TAG_GEO_LOCATION_ELEVATION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_ELEVATION).to_str().unwrap() };
|
static ref TAG_BITRATE: &'static str =
|
||||||
static ref TAG_GEO_LOCATION_CITY: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_CITY).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_BITRATE).to_str().unwrap() };
|
||||||
static ref TAG_GEO_LOCATION_COUNTRY: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_COUNTRY).to_str().unwrap() };
|
static ref TAG_NOMINAL_BITRATE: &'static str = unsafe {
|
||||||
static ref TAG_GEO_LOCATION_SUBLOCATION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_SUBLOCATION).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_NOMINAL_BITRATE)
|
||||||
static ref TAG_GEO_LOCATION_HORIZONTAL_ERROR: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_GEO_LOCATION_MOVEMENT_DIRECTION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_GEO_LOCATION_MOVEMENT_SPEED: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_MOVEMENT_SPEED).to_str().unwrap() };
|
};
|
||||||
static ref TAG_GEO_LOCATION_CAPTURE_DIRECTION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION).to_str().unwrap() };
|
static ref TAG_MINIMUM_BITRATE: &'static str = unsafe {
|
||||||
static ref TAG_SHOW_NAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_SHOW_NAME).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_MINIMUM_BITRATE)
|
||||||
static ref TAG_SHOW_SORTNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_SHOW_SORTNAME).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_SHOW_EPISODE_NUMBER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_SHOW_EPISODE_NUMBER).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_SHOW_SEASON_NUMBER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_SHOW_SEASON_NUMBER).to_str().unwrap() };
|
};
|
||||||
static ref TAG_LYRICS: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_LYRICS).to_str().unwrap() };
|
static ref TAG_MAXIMUM_BITRATE: &'static str = unsafe {
|
||||||
static ref TAG_COMPOSER_SORTNAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_COMPOSER_SORTNAME).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_MAXIMUM_BITRATE)
|
||||||
static ref TAG_GROUPING: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_GROUPING).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_USER_RATING: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_USER_RATING).to_str().unwrap() };
|
.unwrap()
|
||||||
static ref TAG_DEVICE_MANUFACTURER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DEVICE_MANUFACTURER).to_str().unwrap() };
|
};
|
||||||
static ref TAG_DEVICE_MODEL: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_DEVICE_MODEL).to_str().unwrap() };
|
static ref TAG_SERIAL: &'static str =
|
||||||
static ref TAG_APPLICATION_NAME: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_APPLICATION_NAME).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_SERIAL).to_str().unwrap() };
|
||||||
static ref TAG_APPLICATION_DATA: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_APPLICATION_DATA).to_str().unwrap() };
|
static ref TAG_ENCODER: &'static str =
|
||||||
static ref TAG_IMAGE_ORIENTATION: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_IMAGE_ORIENTATION).to_str().unwrap() };
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ENCODER).to_str().unwrap() };
|
||||||
static ref TAG_PUBLISHER: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_PUBLISHER).to_str().unwrap() };
|
static ref TAG_ENCODER_VERSION: &'static str = unsafe {
|
||||||
static ref TAG_INTERPRETED_BY: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_INTERPRETED_BY).to_str().unwrap() };
|
CStr::from_ptr(ffi::GST_TAG_ENCODER_VERSION)
|
||||||
static ref TAG_MIDI_BASE_NOTE: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_MIDI_BASE_NOTE).to_str().unwrap() };
|
.to_str()
|
||||||
static ref TAG_PRIVATE_DATA: &'static str = unsafe { CStr::from_ptr(ffi::GST_TAG_PRIVATE_DATA).to_str().unwrap() };
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_TRACK_GAIN: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_GAIN).to_str().unwrap() };
|
||||||
|
static ref TAG_TRACK_PEAK: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_TRACK_PEAK).to_str().unwrap() };
|
||||||
|
static ref TAG_ALBUM_GAIN: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_GAIN).to_str().unwrap() };
|
||||||
|
static ref TAG_ALBUM_PEAK: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ALBUM_PEAK).to_str().unwrap() };
|
||||||
|
static ref TAG_REFERENCE_LEVEL: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_REFERENCE_LEVEL)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_LANGUAGE_CODE: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_LANGUAGE_CODE).to_str().unwrap() };
|
||||||
|
static ref TAG_LANGUAGE_NAME: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_LANGUAGE_NAME).to_str().unwrap() };
|
||||||
|
static ref TAG_IMAGE: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_IMAGE).to_str().unwrap() };
|
||||||
|
static ref TAG_PREVIEW_IMAGE: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_PREVIEW_IMAGE).to_str().unwrap() };
|
||||||
|
static ref TAG_ATTACHMENT: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_ATTACHMENT).to_str().unwrap() };
|
||||||
|
static ref TAG_BEATS_PER_MINUTE: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_BEATS_PER_MINUTE)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_KEYWORDS: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_KEYWORDS).to_str().unwrap() };
|
||||||
|
static ref TAG_GEO_LOCATION_NAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_NAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_LATITUDE: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_LATITUDE)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_LONGITUDE: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_LONGITUDE)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_ELEVATION: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_ELEVATION)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_CITY: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_CITY)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_COUNTRY: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_COUNTRY)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_SUBLOCATION: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_SUBLOCATION)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_HORIZONTAL_ERROR: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_HORIZONTAL_ERROR)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_MOVEMENT_DIRECTION: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_MOVEMENT_DIRECTION)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_MOVEMENT_SPEED: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_MOVEMENT_SPEED)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GEO_LOCATION_CAPTURE_DIRECTION: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_GEO_LOCATION_CAPTURE_DIRECTION)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_SHOW_NAME: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_SHOW_NAME).to_str().unwrap() };
|
||||||
|
static ref TAG_SHOW_SORTNAME: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_SHOW_SORTNAME).to_str().unwrap() };
|
||||||
|
static ref TAG_SHOW_EPISODE_NUMBER: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_SHOW_EPISODE_NUMBER)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_SHOW_SEASON_NUMBER: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_SHOW_SEASON_NUMBER)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_LYRICS: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_LYRICS).to_str().unwrap() };
|
||||||
|
static ref TAG_COMPOSER_SORTNAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_COMPOSER_SORTNAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_GROUPING: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_GROUPING).to_str().unwrap() };
|
||||||
|
static ref TAG_USER_RATING: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_USER_RATING).to_str().unwrap() };
|
||||||
|
static ref TAG_DEVICE_MANUFACTURER: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_DEVICE_MANUFACTURER)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_DEVICE_MODEL: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_DEVICE_MODEL).to_str().unwrap() };
|
||||||
|
static ref TAG_APPLICATION_NAME: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_APPLICATION_NAME)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_APPLICATION_DATA: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_APPLICATION_DATA)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_IMAGE_ORIENTATION: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_IMAGE_ORIENTATION)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_PUBLISHER: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_PUBLISHER).to_str().unwrap() };
|
||||||
|
static ref TAG_INTERPRETED_BY: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_INTERPRETED_BY)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_MIDI_BASE_NOTE: &'static str = unsafe {
|
||||||
|
CStr::from_ptr(ffi::GST_TAG_MIDI_BASE_NOTE)
|
||||||
|
.to_str()
|
||||||
|
.unwrap()
|
||||||
|
};
|
||||||
|
static ref TAG_PRIVATE_DATA: &'static str =
|
||||||
|
unsafe { CStr::from_ptr(ffi::GST_TAG_PRIVATE_DATA).to_str().unwrap() };
|
||||||
}
|
}
|
||||||
|
|
||||||
pub type TagList = GstRc<TagListRef>;
|
pub type TagList = GstRc<TagListRef>;
|
||||||
|
|
|
@ -16,12 +16,12 @@ use glib;
|
||||||
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrContainer, ToGlib,
|
use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrContainer, ToGlib,
|
||||||
ToGlibPtr};
|
ToGlibPtr};
|
||||||
|
|
||||||
use miniobject::*;
|
|
||||||
use TocEntryType;
|
|
||||||
use TocScope;
|
|
||||||
use TocLoopType;
|
|
||||||
use TagList;
|
use TagList;
|
||||||
use TagMergeMode;
|
use TagMergeMode;
|
||||||
|
use TocEntryType;
|
||||||
|
use TocLoopType;
|
||||||
|
use TocScope;
|
||||||
|
use miniobject::*;
|
||||||
|
|
||||||
pub type Toc = GstRc<TocRef>;
|
pub type Toc = GstRc<TocRef>;
|
||||||
pub struct TocRef(ffi::GstToc);
|
pub struct TocRef(ffi::GstToc);
|
||||||
|
|
|
@ -6,18 +6,18 @@
|
||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ffi;
|
|
||||||
use Plugin;
|
|
||||||
use TypeFindProbability;
|
|
||||||
use TypeFindFactory;
|
|
||||||
use Caps;
|
use Caps;
|
||||||
|
use Plugin;
|
||||||
|
use TypeFindFactory;
|
||||||
|
use TypeFindProbability;
|
||||||
|
use ffi;
|
||||||
|
|
||||||
|
use glib::translate::*;
|
||||||
|
use glib_ffi;
|
||||||
|
use std::marker::PhantomData;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::ptr;
|
use std::ptr;
|
||||||
use std::slice;
|
use std::slice;
|
||||||
use std::marker::PhantomData;
|
|
||||||
use glib_ffi;
|
|
||||||
use glib::translate::*;
|
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
pub struct TypeFind<'a>(ffi::GstTypeFind, PhantomData<&'a ()>);
|
pub struct TypeFind<'a>(ffi::GstTypeFind, PhantomData<&'a ()>);
|
||||||
|
|
|
@ -7,15 +7,15 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use num_rational::Rational32;
|
use num_rational::Rational32;
|
||||||
|
use std::borrow::{Borrow, Cow};
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::ops;
|
use std::ops;
|
||||||
use std::borrow::{Borrow, Cow};
|
|
||||||
use std::slice;
|
use std::slice;
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
use glib::value::{FromValue, FromValueOptional, SetValue, ToSendValue, Value};
|
|
||||||
use glib::translate::{from_glib, from_glib_full, FromGlib, ToGlib, ToGlibPtr, ToGlibPtrMut,
|
use glib::translate::{from_glib, from_glib_full, FromGlib, ToGlib, ToGlibPtr, ToGlibPtrMut,
|
||||||
Uninitialized};
|
Uninitialized};
|
||||||
|
use glib::value::{FromValue, FromValueOptional, SetValue, ToSendValue, Value};
|
||||||
|
|
||||||
use ffi;
|
use ffi;
|
||||||
use glib_ffi;
|
use glib_ffi;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
extern crate gstreamer as gst;
|
extern crate gstreamer as gst;
|
||||||
|
use gst::MessageView;
|
||||||
|
use gst::prelude::*;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use gst::prelude::*;
|
|
||||||
use gst::MessageView;
|
|
||||||
|
|
||||||
#[path = "../tutorials-common.rs"]
|
#[path = "../tutorials-common.rs"]
|
||||||
mod tutorials_common;
|
mod tutorials_common;
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#[cfg(feature = "tutorial5")]
|
#[cfg(feature = "tutorial5")]
|
||||||
mod tutorial5 {
|
mod tutorial5 {
|
||||||
use std::process;
|
|
||||||
use std::os::raw::c_void;
|
use std::os::raw::c_void;
|
||||||
|
use std::process;
|
||||||
|
|
||||||
extern crate glib;
|
extern crate glib;
|
||||||
use self::glib::translate::*;
|
use self::glib::translate::*;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
extern crate gstreamer as gst;
|
extern crate gstreamer as gst;
|
||||||
use gst::prelude::*;
|
|
||||||
use gst::MessageView;
|
use gst::MessageView;
|
||||||
|
use gst::prelude::*;
|
||||||
|
|
||||||
#[path = "../tutorials-common.rs"]
|
#[path = "../tutorials-common.rs"]
|
||||||
mod tutorials_common;
|
mod tutorials_common;
|
||||||
|
|
Loading…
Reference in a new issue