Skip to content

Commit

Permalink
enum InterIntraPredMode: make a real enum
Browse files Browse the repository at this point in the history
  • Loading branch information
folkertdev committed Mar 21, 2024
1 parent 400cb1d commit f50c5fd
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 31 deletions.
15 changes: 9 additions & 6 deletions src/decode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ use crate::src::levels::BS_64x64;
use crate::src::levels::BlockLevel;
use crate::src::levels::BlockPartition;
use crate::src::levels::BlockSize;
use crate::src::levels::InterIntraPredMode;
use crate::src::levels::InterIntraType;
use crate::src::levels::MotionMode;
use crate::src::levels::RectTxfmSize;
Expand Down Expand Up @@ -2957,11 +2958,13 @@ unsafe fn decode_b_inner(
&mut ts.cdf.m.interintra[ii_sz_grp as usize],
)
{
*b.interintra_mode_mut() = rav1d_msac_decode_symbol_adapt4(
&mut ts.msac,
&mut ts.cdf.m.interintra_mode[ii_sz_grp as usize],
N_INTER_INTRA_PRED_MODES as usize - 1,
) as u8;
*b.interintra_mode_mut() =
InterIntraPredMode::from_repr(rav1d_msac_decode_symbol_adapt4(
&mut ts.msac,
&mut ts.cdf.m.interintra_mode[ii_sz_grp as usize],
N_INTER_INTRA_PRED_MODES as usize - 1,
) as usize)
.expect("valid variant");
let wedge_ctx = dav1d_wedge_ctx_lut[bs as usize] as c_int;
let ii_type = if rav1d_msac_decode_bool_adapt(
&mut ts.msac,
Expand All @@ -2987,7 +2990,7 @@ unsafe fn decode_b_inner(
&& interintra_allowed_mask & (1 << bs) != 0
{
println!(
"Post-interintra[t={:?},m={},w={}]: r={}",
"Post-interintra[t={:?},m={:?},w={}]: r={}",
b.interintra_type(),
b.interintra_mode(),
b.wedge_idx(),
Expand Down
18 changes: 10 additions & 8 deletions src/levels.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,14 @@ pub const HOR_PRED: IntraPredMode = 2;
pub const VERT_PRED: IntraPredMode = 1;
pub const DC_PRED: IntraPredMode = 0;

pub type InterIntraPredMode = c_uint;
pub const N_INTER_INTRA_PRED_MODES: usize = 4;
pub const II_SMOOTH_PRED: InterIntraPredMode = 3;
pub const II_HOR_PRED: InterIntraPredMode = 2;
pub const II_VERT_PRED: InterIntraPredMode = 1;
pub const II_DC_PRED: InterIntraPredMode = 0;
#[derive(Debug, Clone, Copy, PartialEq, Eq, FromRepr, EnumCount)]
pub enum InterIntraPredMode {
Dc = 0,
Vert = 1,
Hor = 2,
Smooth = 3,
}

pub type BlockPartition = u8;
pub const N_SUB8X8_PARTITIONS: usize = 4;
Expand Down Expand Up @@ -281,7 +283,7 @@ pub struct Av1Block_inter_1d {
pub mv: [mv; 2],
pub wedge_idx: u8,
pub mask_sign: u8,
pub interintra_mode: u8,
pub interintra_mode: InterIntraPredMode,
}

#[derive(Clone, Copy)]
Expand Down Expand Up @@ -535,15 +537,15 @@ impl Av1Block {
&mut self.c2rust_unnamed.c2rust_unnamed_0.interintra_type
}

pub unsafe fn interintra_mode(&self) -> u8 {
pub unsafe fn interintra_mode(&self) -> InterIntraPredMode {
self.c2rust_unnamed
.c2rust_unnamed_0
.c2rust_unnamed
.c2rust_unnamed
.interintra_mode
}

pub unsafe fn interintra_mode_mut(&mut self) -> &mut u8 {
pub unsafe fn interintra_mode_mut(&mut self) -> &mut InterIntraPredMode {
&mut self
.c2rust_unnamed
.c2rust_unnamed_0
Expand Down
9 changes: 4 additions & 5 deletions src/recon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ use crate::src::levels::mv;
use crate::src::levels::Av1Block;
use crate::src::levels::BlockSize;
use crate::src::levels::Filter2d;
use crate::src::levels::InterIntraPredMode;
use crate::src::levels::InterIntraType;
use crate::src::levels::IntraPredMode;
use crate::src::levels::RectTxfmSize;
Expand All @@ -43,7 +44,6 @@ use crate::src::levels::FILTER_PRED;
use crate::src::levels::GLOBALMV;
use crate::src::levels::GLOBALMV_GLOBALMV;
use crate::src::levels::IDTX;
use crate::src::levels::II_SMOOTH_PRED;
use crate::src::levels::MM_OBMC;
use crate::src::levels::MM_WARP;
use crate::src::levels::RTX_16X32;
Expand Down Expand Up @@ -3397,8 +3397,8 @@ pub(crate) unsafe fn rav1d_recon_b_inter<BD: BitDepth>(
.c2rust_unnamed_0
.c2rust_unnamed
.c2rust_unnamed
.interintra_mode as c_int
== II_SMOOTH_PRED as c_int
.interintra_mode
== InterIntraPredMode::Smooth
{
SMOOTH_PRED as c_int
} else {
Expand Down Expand Up @@ -3824,8 +3824,7 @@ pub(crate) unsafe fn rav1d_recon_b_inter<BD: BitDepth>(
.c2rust_unnamed
.c2rust_unnamed
.interintra_mode
as c_int
== II_SMOOTH_PRED as c_int
== InterIntraPredMode::Smooth
{
SMOOTH_PRED as c_int
} else {
Expand Down
21 changes: 9 additions & 12 deletions src/wedge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@ use crate::src::levels::BS_32x8;
use crate::src::levels::BS_8x16;
use crate::src::levels::BS_8x32;
use crate::src::levels::BS_8x8;
use crate::src::levels::II_DC_PRED;
use crate::src::levels::II_HOR_PRED;
use crate::src::levels::II_SMOOTH_PRED;
use crate::src::levels::II_VERT_PRED;
use crate::src::levels::InterIntraPredMode;
use crate::src::levels::N_BS_SIZES;
use crate::src::levels::N_INTER_INTRA_PRED_MODES;
use paste::paste;
Expand Down Expand Up @@ -421,7 +418,7 @@ pub static dav1d_wedge_masks: [[[[&'static [u8]; 16]; 2]; 3]; N_BS_SIZES] = {

static ii_dc_mask: Align64<[u8; 32 * 32]> = Align64([32; 32 * 32]);

const N_II_PRED_MODES: usize = N_INTER_INTRA_PRED_MODES - 1;
const N_II_PRED_MODES: usize = InterIntraPredMode::COUNT - 1;

const fn build_nondc_ii_masks<const N: usize>(
w: usize,
Expand All @@ -438,11 +435,11 @@ const fn build_nondc_ii_masks<const N: usize>(
const_for!(y in 0..h => {
let off = y * w;
const_for!(i in 0..w => {
masks[II_VERT_PRED as usize - 1][off + i] = ii_weights_1d[y * step];
masks[InterIntraPredMode::Vert as usize - 1][off + i] = ii_weights_1d[y * step];
});
const_for!(x in 0..w => {
masks[II_SMOOTH_PRED as usize - 1][off + x] = ii_weights_1d[const_min!(x, y) * step];
masks[II_HOR_PRED as usize - 1][off + x] = ii_weights_1d[x * step];
masks[InterIntraPredMode::Smooth as usize - 1][off + x] = ii_weights_1d[const_min!(x, y) * step];
masks[InterIntraPredMode::Hor as usize - 1][off + x] = ii_weights_1d[x * step];
});
});

Expand Down Expand Up @@ -475,10 +472,10 @@ pub static dav1d_ii_masks: [[[&'static [u8]; N_INTER_INTRA_PRED_MODES]; 3]; N_BS
($h:literal x $w:literal) => {{
let mut a = [&[] as &'static [u8]; N_INTER_INTRA_PRED_MODES];
paste! {
a[II_DC_PRED as usize] = &ii_dc_mask.0;
a[II_VERT_PRED as usize] = &[<ii_nondc_mask _ $h x $w>].0[II_VERT_PRED as usize - 1];
a[II_HOR_PRED as usize] = &[<ii_nondc_mask _ $h x $w>].0[II_HOR_PRED as usize - 1];
a[II_SMOOTH_PRED as usize] = &[<ii_nondc_mask _ $h x $w>].0[II_SMOOTH_PRED as usize - 1];
a[InterIntraPredMode::Dc as usize] = &ii_dc_mask.0;
a[InterIntraPredMode::Vert as usize] = &[<ii_nondc_mask _ $h x $w>].0[InterIntraPredMode::Vert as usize - 1];
a[InterIntraPredMode::Hor as usize] = &[<ii_nondc_mask _ $h x $w>].0[InterIntraPredMode::Hor as usize - 1];
a[InterIntraPredMode::Smooth as usize] = &[<ii_nondc_mask _ $h x $w>].0[InterIntraPredMode::Smooth as usize - 1];
}
a
}};
Expand Down

0 comments on commit f50c5fd

Please sign in to comment.