mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-02-18 03:55:36 +00:00
meta: Add support for ReferenceTimestampMeta
This commit is contained in:
parent
68e1f31fd2
commit
4cf3166317
2 changed files with 71 additions and 0 deletions
|
@ -116,6 +116,8 @@ pub use tags::{
|
||||||
mod tags_serde;
|
mod tags_serde;
|
||||||
|
|
||||||
pub mod meta;
|
pub mod meta;
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
pub use meta::ReferenceTimestampMeta;
|
||||||
pub use meta::{Meta, MetaAPI, MetaRef, MetaRefMut, ParentBufferMeta};
|
pub use meta::{Meta, MetaAPI, MetaRef, MetaRefMut, ParentBufferMeta};
|
||||||
pub mod buffer;
|
pub mod buffer;
|
||||||
pub use buffer::{
|
pub use buffer::{
|
||||||
|
|
|
@ -13,8 +13,16 @@ use std::ops;
|
||||||
use miniobject::MiniObject;
|
use miniobject::MiniObject;
|
||||||
use Buffer;
|
use Buffer;
|
||||||
use BufferRef;
|
use BufferRef;
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
use Caps;
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
use CapsRef;
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
use ClockTime;
|
||||||
|
|
||||||
use glib;
|
use glib;
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
use glib::translate::ToGlib;
|
||||||
use glib::translate::{from_glib, from_glib_none, FromGlib, ToGlibPtr};
|
use glib::translate::{from_glib, from_glib_none, FromGlib, ToGlibPtr};
|
||||||
use glib_sys;
|
use glib_sys;
|
||||||
use gst_sys;
|
use gst_sys;
|
||||||
|
@ -264,6 +272,67 @@ impl fmt::Debug for ParentBufferMeta {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
#[repr(C)]
|
||||||
|
pub struct ReferenceTimestampMeta(gst_sys::GstReferenceTimestampMeta);
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
impl ReferenceTimestampMeta {
|
||||||
|
pub fn add<'a>(
|
||||||
|
buffer: &'a mut BufferRef,
|
||||||
|
reference: &Caps,
|
||||||
|
timestamp: ClockTime,
|
||||||
|
duration: ClockTime,
|
||||||
|
) -> MetaRefMut<'a, Self, Standalone> {
|
||||||
|
unsafe {
|
||||||
|
let meta = gst_sys::gst_buffer_add_reference_timestamp_meta(
|
||||||
|
buffer.as_mut_ptr(),
|
||||||
|
reference.to_glib_none().0,
|
||||||
|
timestamp.to_glib(),
|
||||||
|
duration.to_glib(),
|
||||||
|
);
|
||||||
|
|
||||||
|
Self::from_mut_ptr(buffer, meta)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_reference(&self) -> &CapsRef {
|
||||||
|
unsafe { CapsRef::from_ptr(self.0.reference) }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_parent_owned(&self) -> Caps {
|
||||||
|
unsafe { from_glib_none(self.0.reference) }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_timestamp(&self) -> ClockTime {
|
||||||
|
from_glib(self.0.timestamp)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_duration(&self) -> ClockTime {
|
||||||
|
from_glib(self.0.duration)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
unsafe impl MetaAPI for ReferenceTimestampMeta {
|
||||||
|
type GstType = gst_sys::GstReferenceTimestampMeta;
|
||||||
|
|
||||||
|
fn get_meta_api() -> glib::Type {
|
||||||
|
unsafe { from_glib(gst_sys::gst_reference_timestamp_meta_api_get_type()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(any(feature = "v1_14", feature = "dox"))]
|
||||||
|
impl fmt::Debug for ReferenceTimestampMeta {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
f.debug_struct("ReferenceTimestampMeta")
|
||||||
|
.field("reference", &self.get_reference())
|
||||||
|
.field("timestamp", &self.get_timestamp())
|
||||||
|
.field("duration", &self.get_duration())
|
||||||
|
.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
Loading…
Reference in a new issue