Struct SpsExtended

Source
pub struct SpsExtended {
    pub chroma_format_idc: u8,
    pub separate_color_plane_flag: bool,
    pub bit_depth_luma_minus8: u8,
    pub bit_depth_chroma_minus8: u8,
    pub qpprime_y_zero_transform_bypass_flag: bool,
    pub scaling_matrix: Vec<Vec<i64>>,
}
Expand description

The Sequence Parameter Set extension. ISO/IEC-14496-10-2022 - 7.3.2

Fields§

§chroma_format_idc: u8

The chroma_format_idc as a u8. This is the chroma sampling relative to the luma sampling specified in subclause 6.2.

The value of this ranges from [0, 3].

This is a variable number of bits as it is encoded by an exp golomb (unsigned). The smallest encoding would be for 0 which is encoded as 1, which is a single bit. The largest encoding would be for 3 which is encoded as 0 0100, which is 5 bits. ISO/IEC-14496-10-2022 - 7.4.2.1.1

For more information:

https://en.wikipedia.org/wiki/Exponential-Golomb_coding

§separate_color_plane_flag: bool

The separate_colour_plane_flag is a single bit.

0 means the the color components aren’t coded separately and ChromaArrayType is set to chroma_format_idc.

1 means the 3 color components of the 4:4:4 chroma format are coded separately and ChromaArrayType is set to 0.

ISO/IEC-14496-10-2022 - 7.4.2.1.1

§bit_depth_luma_minus8: u8

The bit_depth_luma_minus8 as a u8. This is the chroma sampling relative to the luma sampling specified in subclause 6.2.

The value of this ranges from [0, 6].

This is a variable number of bits as it is encoded by an exp golomb (unsigned). The smallest encoding would be for 0 which is encoded as 1, which is a single bit. The largest encoding would be for 6 which is encoded as 0 0111, which is 5 bits. ISO/IEC-14496-10-2022 - 7.4.2.1.1

For more information:

https://en.wikipedia.org/wiki/Exponential-Golomb_coding

§bit_depth_chroma_minus8: u8

The bit_depth_chroma_minus8 as a u8. This is the chroma sampling relative to the luma sampling specified in subclause 6.2.

The value of this ranges from [0, 6].

This is a variable number of bits as it is encoded by an exp golomb (unsigned). The smallest encoding would be for 0 which is encoded as 1, which is a single bit. The largest encoding would be for 6 which is encoded as 0 0111, which is 5 bits. ISO/IEC-14496-10-2022 - 7.4.2.1.1

For more information:

https://en.wikipedia.org/wiki/Exponential-Golomb_coding

§qpprime_y_zero_transform_bypass_flag: bool

The qpprime_y_zero_transform_bypass_flag is a single bit.

0 means the transform coefficient decoding and picture construction processes wont use the transform bypass operation.

1 means that when QP’_Y is 0 then a transform bypass operation for the transform coefficient decoding and picture construction processes will be applied before the deblocking filter process from subclause 8.5.

ISO/IEC-14496-10-2022 - 7.4.2.1.1

§scaling_matrix: Vec<Vec<i64>>

The scaling_matrix. If the length is nonzero, then seq_scaling_matrix_present_flag must have been set.

Implementations§

Source§

impl SpsExtended

Source

pub fn parse<T: Read>(reader: &mut BitReader<T>) -> Result<Self>

Parses an extended SPS from a bitstream. Returns an SpsExtended struct.

Source

pub fn build<T: Write>(&self, writer: &mut BitWriter<T>) -> Result<()>

Builds the SPSExtended struct into a byte stream. Returns a built byte stream.

Source

pub fn bitsize(&self) -> u64

Returns the total bits of the SpsExtended struct.

Note that this isn’t the bytesize since aligning it may cause some values to be different.

Source

pub fn bytesize(&self) -> u64

Returns the total bytes of the SpsExtended struct.

Note that this calls SpsExtended::bitsize() and calculates the number of bytes including any necessary padding such that the bitstream is byte aligned.

Trait Implementations§

Source§

impl Clone for SpsExtended

Source§

fn clone(&self) -> SpsExtended

Returns a copy 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 SpsExtended

Source§

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

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

impl Default for SpsExtended

Source§

fn default() -> Self

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

impl PartialEq for SpsExtended

Source§

fn eq(&self, other: &SpsExtended) -> 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 StructuralPartialEq for SpsExtended

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