// Copyright (C) 2017 Sebastian Dröge // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. #[macro_use] extern crate bitflags; extern crate libc; extern crate glib_sys as glib_ffi; extern crate gobject_sys as gobject_ffi; extern crate gstreamer_sys as ffi; #[macro_use] extern crate glib; extern crate num_rational; use glib::translate::{from_glib, from_glib_full}; macro_rules! callback_guard { () => ( let _guard = ::glib::CallbackGuard::new(); ) } macro_rules! assert_initialized_main_thread { () => ( assert_eq!(unsafe {ffi::gst_is_initialized()}, ::glib_ffi::GTRUE) ) } macro_rules! skip_assert_initialized { () => ( ) } pub use glib::{Cast, Continue, Error, IsA, StaticType, ToValue, Type, TypedValue, Value}; mod auto; pub use auto::*; pub use auto::traits::*; pub use auto::functions::{parse_launch, parse_bin_from_description}; pub use auto::traits::ObjectExt as GstObjectExt; pub mod miniobject; pub use miniobject::GstRc; pub mod message; pub use message::{Message, MessageRef, MessageView}; pub mod structure; pub use structure::{Structure, StructureRef}; pub mod caps; pub use caps::{Caps, CapsRef}; pub mod tags; pub use tags::*; pub mod buffer; pub use buffer::{Buffer, BufferRef, ReadBufferMap, ReadWriteBufferMap, ReadMappedBuffer, ReadWriteMappedBuffer}; pub mod sample; pub use sample::{Sample, SampleRef}; mod element; mod bin; mod bus; mod pad; mod gobject; mod segment; pub use bin::BinExtManual; pub use pad::{PadExtManual, PadProbeId, PadProbeInfo, PadProbeData, PAD_PROBE_ID_INVALID}; pub use gobject::GObjectExtManualGst; mod value; pub use value::*; use std::ptr; pub fn init() -> Result<(), glib::Error> { unsafe { let mut error = ptr::null_mut(); if from_glib(ffi::gst_init_check( ptr::null_mut(), ptr::null_mut(), &mut error, )) { Ok(()) } else { Err(from_glib_full(error)) } } } pub const BUFFER_OFFSET_NONE: u64 = ffi::GST_BUFFER_OFFSET_NONE; pub const CLOCK_TIME_NONE: u64 = ffi::GST_CLOCK_TIME_NONE;