Struct gstreamer_video::video_meta::VideoMeta

source ·
pub struct VideoMeta(/* private fields */);
Expand description

Extra buffer metadata describing image properties

This meta can also be used by downstream elements to specifiy their buffer layout requirements for upstream. Upstream should try to fit those requirements, if possible, in order to prevent buffer copies.

This is done by passing a custom gst::Structure to [gst::Query::add_allocation_meta()][crate::gst::Query::add_allocation_meta()] when handling the ALLOCATION query. This structure should be named ‘video-meta’ and can have the following fields:

  • padding-top (uint): extra pixels on the top
  • padding-bottom (uint): extra pixels on the bottom
  • padding-left (uint): extra pixels on the left side
  • padding-right (uint): extra pixels on the right side The padding fields have the same semantic as GstVideoMeta.alignment and so represent the paddings requested on produced video buffers.

Since 1.24 it can be serialized using gst_meta_serialize() and gst_meta_deserialize().

Implementations§

source§

impl VideoMeta

source

pub fn add( buffer: &mut BufferRef, video_frame_flags: VideoFrameFlags, format: VideoFormat, width: u32, height: u32, ) -> Result<MetaRefMut<'_, Self, Standalone>, BoolError>

source

pub fn add_full<'a>( buffer: &'a mut BufferRef, video_frame_flags: VideoFrameFlags, format: VideoFormat, width: u32, height: u32, offset: &[usize], stride: &[i32], ) -> Result<MetaRefMut<'a, Self, Standalone>, BoolError>

source

pub fn video_frame_flags(&self) -> VideoFrameFlags

source

pub fn format(&self) -> VideoFormat

source

pub fn id(&self) -> i32

source

pub fn width(&self) -> u32

source

pub fn height(&self) -> u32

source

pub fn n_planes(&self) -> u32

source

pub fn offset(&self) -> &[usize]

source

pub fn stride(&self) -> &[i32]

source

pub fn alignment(&self) -> VideoAlignment

source

pub fn plane_size(&self) -> Result<[usize; 4], BoolError>

Compute the size, in bytes, of each video plane described in self including any padding and alignment constraint defined in self->alignment.

§Returns

true if self’s alignment is valid and plane_size has been updated, false otherwise

§plane_size

array used to store the plane sizes

source

pub fn plane_height(&self) -> Result<[u32; 4], BoolError>

Compute the padded height of each plane from self (padded size divided by stride).

It is not valid to call this function with a meta associated to a TILED video format.

§Returns

true if self’s alignment is valid and plane_height has been updated, false otherwise

§plane_height

array used to store the plane height

source

pub fn set_alignment( &mut self, alignment: &VideoAlignment, ) -> Result<(), BoolError>

Set the alignment of self to alignment. This function checks that the paddings defined in alignment are compatible with the strides defined in self and will fail to update if they are not.

§alignment

a GstVideoAlignment

§Returns

true if alignment’s meta has been updated, false if not

Trait Implementations§

source§

impl Debug for VideoMeta

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl MetaAPI for VideoMeta

source§

impl Send for VideoMeta

source§

impl Sync for VideoMeta

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<A> MetaAPIExt for A
where A: MetaAPI,

source§

unsafe fn from_ptr( buffer: &BufferRef, ptr: *const Self::GstType, ) -> MetaRef<'_, Self>

source§

unsafe fn from_mut_ptr<T>( buffer: &mut BufferRef, ptr: *mut Self::GstType, ) -> MetaRefMut<'_, Self, T>

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.