BlockGroup

Struct BlockGroup 

Source
pub struct BlockGroup {
    pub crc32: Option<Crc32>,
    pub void: Option<Void>,
    pub block: Block,
    pub block_additions: Option<BlockAdditions>,
    pub block_duration: Option<BlockDuration>,
    pub reference_priority: ReferencePriority,
    pub reference_block: Vec<ReferenceBlock>,
    pub codec_state: Option<CodecState>,
    pub discard_padding: Option<DiscardPadding>,
}
Expand description

Basic container of information containing a single Block and information specific to that Block.

Fields§

§crc32: Option<Crc32>

Optional CRC-32 element for integrity checking.

§void: Option<Void>

void element, useful for reserving space during writing.

§block: Block

Block containing the actual data to be rendered and a timestamp relative to the Cluster Timestamp; see basics on Block Structure.

§block_additions: Option<BlockAdditions>

Contain additional binary data to complete the main one; see Codec BlockAdditions section of Matroska codec RFC for more information. An EBML parser that has no knowledge of the Block structure could still see and use/skip these data.

§block_duration: Option<BlockDuration>

The duration of the Block, expressed in Track Ticks; see timestamp-ticks. The BlockDuration Element can be useful at the end of a Track to define the duration of the last frame (as there is no subsequent Block available), or when there is a break in a track like for subtitle tracks. When not written and with no DefaultDuration, the value is assumed to be the difference between the timestamp of this Block and the timestamp of the next Block in “display” order (not coding order). BlockDuration MUST be set if the associated TrackEntry stores a DefaultDuration value.

§reference_priority: ReferencePriority

This frame is referenced and has the specified cache priority. In cache only a frame of the same or higher priority can replace this frame. A value of 0 means the frame is not referenced.

§reference_block: Vec<ReferenceBlock>

A timestamp value, relative to the timestamp of the Block in this BlockGroup, expressed in Track Ticks; see timestamp-ticks. This is used to reference other frames necessary to decode this frame. The relative value SHOULD correspond to a valid Block this Block depends on. Historically Matroska Writer didn’t write the actual Block(s) this Block depends on, but some Block in the past. The value “0” MAY also be used to signify this Block cannot be decoded on its own, but without knownledge of which Block is necessary. In this case, other ReferenceBlock MUST NOT be found in the same BlockGroup. If the BlockGroup doesn’t have any ReferenceBlock element, then the Block it contains can be decoded without using any other Block data.

§codec_state: Option<CodecState>

The new codec state to use. Data interpretation is private to the codec. This information SHOULD always be referenced by a seek entry.

§discard_padding: Option<DiscardPadding>

Duration of the silent data added to the Block, expressed in Matroska Ticks – i.e., in nanoseconds; see timestamp-ticks (padding at the end of the Block for positive value, at the beginning of the Block for negative value). The duration of DiscardPadding is not calculated in the duration of the TrackEntry and SHOULD be discarded during playback.

Trait Implementations§

Source§

impl Clone for BlockGroup

Source§

fn clone(&self) -> BlockGroup

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for BlockGroup

Source§

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

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

impl Default for BlockGroup

Source§

fn default() -> BlockGroup

Returns the “default value” for a type. Read more
Source§

impl Element for BlockGroup

Source§

const ID: VInt64

EBML ID of the element.
Source§

fn decode_body(buf: &mut &[u8]) -> Result<Self>

Decode the body of the element from a buffer.
Source§

fn encode_body<B: BufMut>(&self, buf: &mut B) -> Result<()>

Encode the body of the element to a buffer.
Source§

const HAS_DEFAULT_VALUE: bool = false

Whether the element has a default value, as per Matroska specification. If true, and the element is missing in a master element, it should be treated as if it were present with the default value. If false, and the element is missing in a master element, it should be treated as an error.
Source§

impl From<BlockGroup> for ClusterBlock

Source§

fn from(b: BlockGroup) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for BlockGroup

Source§

fn eq(&self, other: &BlockGroup) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for BlockGroup

Source§

impl StructuralPartialEq for BlockGroup

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> AsyncReadElement for T
where T: Element,

Source§

fn async_read_element<R: AsyncRead + Unpin>( header: &Header, r: &mut R, ) -> impl Future<Output = Result<Self>>

Available on crate feature tokio only.
Read an element from a reader provided the header.
Source§

impl<T> AsyncReadFrom for T
where T: Element,

Source§

async fn async_read_from<R>(r: &mut R) -> Result<T, Error>
where R: AsyncRead + Unpin,

Available on crate feature tokio only.
Read Self from a reader.
Source§

impl<T> AsyncWriteElement for T
where T: Element,

Source§

fn async_write_element<W: AsyncWrite + Unpin>( &self, header: &Header, w: &mut W, ) -> impl Future<Output = Result<()>>

Available on crate feature tokio only.
Write an element to a writer asynchronously.
Source§

impl<T> AsyncWriteTo for T
where T: Encode,

Source§

async fn async_write_to<W>(&self, w: &mut W) -> Result<(), Error>
where W: AsyncWrite + Unpin,

Available on crate feature tokio only.
Write to a writer asynchronously.
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ReadElement for T
where T: Element,

Source§

fn read_element<R: Read>(header: &Header, r: &mut R) -> Result<Self>

Read an element from a reader provided the header.
Source§

impl<T> ReadFrom for T
where T: Element,

Source§

fn read_from<R>(r: &mut R) -> Result<T, Error>
where R: Read,

Read Self from a reader.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

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>,

Source§

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.
Source§

impl<T> WriteElement for T
where T: Element,

Source§

fn write_element<W: Write>(&self, header: &Header, w: &mut W) -> Result<()>

Write an element to a writer.
Source§

impl<T> WriteTo for T
where T: Encode,

Source§

fn write_to<W>(&self, w: &mut W) -> Result<(), Error>
where W: Write,

Write to a writer.