pub struct CdfContext {
pub partition: [[u16; 11]; 4],
pub y_mode: [[u16; 14]; 4],
pub skip: [[u16; 3]; 3],
pub mv_joint: [u16; 5],
pub mv_sign: [[u16; 3]; 2],
pub mv_class: [[u16; 12]; 2],
pub dc_sign: [[u16; 3]; 3],
pub coeff_base: Vec<[u16; 5]>,
pub coeff_br: Vec<[u16; 4]>,
pub eob_multi: Vec<Vec<u16>>,
}Expand description
Container for all CDF tables used in decoding.
Fields§
§partition: [[u16; 11]; 4]Partition CDFs.
y_mode: [[u16; 14]; 4]Y intra mode CDFs.
skip: [[u16; 3]; 3]Skip CDFs.
mv_joint: [u16; 5]MV joint CDF.
mv_sign: [[u16; 3]; 2]MV sign CDFs (for each component).
mv_class: [[u16; 12]; 2]MV class CDFs.
dc_sign: [[u16; 3]; 3]DC sign CDFs.
coeff_base: Vec<[u16; 5]>Coefficient base CDFs.
coeff_br: Vec<[u16; 4]>Coefficient base range CDFs.
eob_multi: Vec<Vec<u16>>EOB multi-symbol CDFs.
Indexed by ctx = tx_size_idx * EOB_PLANE_COUNT + plane (see
[EOB_MULTI_TOTAL_CONTEXTS]). Each inner Vec<u16> is a CDF whose
length is selected per transform area — _8 (9 entries) for small
blocks (area ≤ 64) and _16 (17 entries) for larger blocks.
Implementations§
Source§impl CdfContext
impl CdfContext
Sourcepub fn get_partition_cdf(&self, ctx: usize) -> &[u16; 11]
pub fn get_partition_cdf(&self, ctx: usize) -> &[u16; 11]
Get partition CDF for a context.
Sourcepub fn get_partition_cdf_mut(&mut self, ctx: usize) -> &mut [u16; 11]
pub fn get_partition_cdf_mut(&mut self, ctx: usize) -> &mut [u16; 11]
Get mutable partition CDF for a context.
Sourcepub fn get_y_mode_cdf(&self, ctx: usize) -> &[u16; 14]
pub fn get_y_mode_cdf(&self, ctx: usize) -> &[u16; 14]
Get Y mode CDF for a context.
Sourcepub fn get_skip_cdf(&self, ctx: usize) -> &[u16; 3]
pub fn get_skip_cdf(&self, ctx: usize) -> &[u16; 3]
Get skip CDF for a context.
Sourcepub fn get_eob_multi_cdf(&self, ctx: usize) -> &[u16]
pub fn get_eob_multi_cdf(&self, ctx: usize) -> &[u16]
Get EOB multi CDF for a context.
The context is tx_size_idx * EOB_PLANE_COUNT + plane. Indices that
fall outside [EOB_MULTI_TOTAL_CONTEXTS] are clamped to the final
slot, which holds the largest-area default CDF (see
[default_eob_multi_for_tx_size_idx]).
Sourcepub fn get_coeff_base_cdf(&self, ctx: usize) -> &[u16]
pub fn get_coeff_base_cdf(&self, ctx: usize) -> &[u16]
Get coefficient base CDF for a context.
Sourcepub fn get_coeff_base_eob_cdf(&self, ctx: usize) -> &[u16]
pub fn get_coeff_base_eob_cdf(&self, ctx: usize) -> &[u16]
Get coefficient base EOB CDF for a context.
Sourcepub fn get_coeff_br_cdf(&self, ctx: usize) -> &[u16]
pub fn get_coeff_br_cdf(&self, ctx: usize) -> &[u16]
Get coefficient BR (base range) CDF for a context.
Sourcepub fn get_dc_sign_cdf(&self, ctx: usize) -> &[u16]
pub fn get_dc_sign_cdf(&self, ctx: usize) -> &[u16]
Get DC sign CDF for a context.
Sourcepub fn get_eob_multi_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
pub fn get_eob_multi_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
Get mutable EOB multi CDF for a context.
Mirrors Self::get_eob_multi_cdf but yields a mutable slice so
the arithmetic coder can adapt the CDF after each symbol. Returns a
slice into the largest-area slot when ctx is out of range.
Sourcepub fn get_coeff_base_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
pub fn get_coeff_base_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
Get mutable coefficient base CDF for a context.
Sourcepub fn get_coeff_base_eob_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
pub fn get_coeff_base_eob_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
Get mutable coefficient base EOB CDF for a context.
Sourcepub fn get_coeff_br_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
pub fn get_coeff_br_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
Get mutable coefficient BR (base range) CDF for a context.
Sourcepub fn get_dc_sign_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
pub fn get_dc_sign_cdf_mut(&mut self, ctx: usize) -> &mut [u16]
Get mutable DC sign CDF for a context.
Trait Implementations§
Source§impl Clone for CdfContext
impl Clone for CdfContext
Source§fn clone(&self) -> CdfContext
fn clone(&self) -> CdfContext
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for CdfContext
impl Debug for CdfContext
Auto Trait Implementations§
impl Freeze for CdfContext
impl RefUnwindSafe for CdfContext
impl Send for CdfContext
impl Sync for CdfContext
impl Unpin for CdfContext
impl UnsafeUnpin for CdfContext
impl UnwindSafe for CdfContext
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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