Skip to content

Commit

Permalink
Rav1dContext_intra_edge::root: Replace with safe getter
Browse files Browse the repository at this point in the history
  • Loading branch information
randomPoison committed Feb 22, 2024
1 parent 7deb552 commit 7c4da35
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/decode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4105,7 +4105,7 @@ pub(crate) unsafe fn rav1d_decode_tile_sbrow(
if c.flush.load(Ordering::Acquire) != 0 {
return Err(());
}
decode_sb(c, t, f, root_bl, c.intra_edge.root[root_bl as usize])?;
decode_sb(c, t, f, root_bl, c.intra_edge.root(root_bl))?;
if t.bx & 16 != 0 || f.seq_hdr().sb128 != 0 {
t.a = (t.a).offset(1);
}
Expand Down Expand Up @@ -4213,7 +4213,7 @@ pub(crate) unsafe fn rav1d_decode_tile_sbrow(
read_restoration_info(t, f, lr, p, frame_type);
}
}
decode_sb(c, t, f, root_bl, c.intra_edge.root[root_bl as usize])?;
decode_sb(c, t, f, root_bl, c.intra_edge.root(root_bl))?;
if t.bx & 16 != 0 || f.seq_hdr().sb128 != 0 {
t.a = (t.a).offset(1);
t.lf_mask = (t.lf_mask).offset(1);
Expand Down
14 changes: 13 additions & 1 deletion src/internal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,11 @@ use crate::src::intra_edge::EdgeTip;
use crate::src::ipred::Rav1dIntraPredDSPContext;
use crate::src::itx::Rav1dInvTxfmDSPContext;
use crate::src::levels::Av1Block;
use crate::src::levels::BlockLevel;
use crate::src::levels::BlockSize;
use crate::src::levels::Filter2d;
use crate::src::levels::BL_128X128;
use crate::src::levels::BL_64X64;
use crate::src::lf_mask::Av1Filter;
use crate::src::lf_mask::Av1FilterLUT;
use crate::src::lf_mask::Av1Restoration;
Expand Down Expand Up @@ -204,13 +207,22 @@ pub(crate) struct Rav1dContext_refs {

#[repr(C)]
pub struct Rav1dContext_intra_edge {
pub root: [*mut EdgeNode; 2],
pub branch_sb128: [EdgeBranch; 85],
pub branch_sb64: [EdgeBranch; 21],
pub tip_sb128: [EdgeTip; 256],
pub tip_sb64: [EdgeTip; 64],
}

impl Rav1dContext_intra_edge {
pub fn root(&self, bl: BlockLevel) -> &EdgeNode {
match bl {
BL_128X128 => &self.branch_sb128[0].node,
BL_64X64 => &self.branch_sb64[0].node,
_ => unreachable!(),
}
}
}

pub(crate) enum Rav1dContextTaskType {
/// Worker thread in a multi-threaded context.
Worker(JoinHandle<()>),
Expand Down
7 changes: 1 addition & 6 deletions src/intra_edge.rs
Original file line number Diff line number Diff line change
Expand Up @@ -194,12 +194,7 @@ unsafe fn init_mode_node(
};
}

pub unsafe fn rav1d_init_mode_tree(
root_node: *mut EdgeNode,
nt: &mut [EdgeTip],
allow_sb128: bool,
) {
let root = root_node as *mut EdgeBranch;
pub unsafe fn rav1d_init_mode_tree(root: *mut EdgeBranch, nt: &mut [EdgeTip], allow_sb128: bool) {
let mut mem = ModeSelMem {
nwc: [ptr::null_mut(); 3],
nt: nt.as_mut_ptr(),
Expand Down
10 changes: 2 additions & 8 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ use crate::src::internal::Rav1dTaskContext;
use crate::src::internal::Rav1dTaskContext_task_thread;
use crate::src::internal::TaskThreadData;
use crate::src::intra_edge::rav1d_init_mode_tree;
use crate::src::levels::BL_128X128;
use crate::src::levels::BL_64X64;
use crate::src::log::Rav1dLog as _;
use crate::src::mem::freep;
use crate::src::mem::rav1d_alloc_aligned;
Expand Down Expand Up @@ -362,17 +360,13 @@ pub(crate) unsafe fn rav1d_open(c_out: &mut *mut Rav1dContext, s: &Rav1dSettings
})
.collect();
rav1d_refmvs_dsp_init(&mut (*c).refmvs_dsp);
(*c).intra_edge.root[BL_128X128 as c_int as usize] =
&mut (*((*c).intra_edge.branch_sb128).as_mut_ptr().offset(0)).node;
rav1d_init_mode_tree(
(*c).intra_edge.root[BL_128X128 as c_int as usize],
&mut (*c).intra_edge.branch_sb128[0],
&mut (*c).intra_edge.tip_sb128,
true,
);
(*c).intra_edge.root[BL_64X64 as c_int as usize] =
&mut (*((*c).intra_edge.branch_sb64).as_mut_ptr().offset(0)).node;
rav1d_init_mode_tree(
(*c).intra_edge.root[BL_64X64 as c_int as usize],
&mut (*c).intra_edge.branch_sb64[0],
&mut (*c).intra_edge.tip_sb64,
false,
);
Expand Down

0 comments on commit 7c4da35

Please sign in to comment.