Skip to content

Commit

Permalink
static av1_{mode_conv,intra_prediction_edges}: Cleanup and translat…
Browse files Browse the repository at this point in the history
…e designated initializers (#496)
  • Loading branch information
kkysen authored Sep 25, 2023
2 parents 24eb141 + a726357 commit ab01de1
Showing 1 changed file with 162 additions and 171 deletions.
333 changes: 162 additions & 171 deletions src/ipred_prepare.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use crate::src::intra_edge::EDGE_I444_TOP_HAS_RIGHT;
use crate::src::levels::IntraPredMode;
use crate::src::levels::DC_128_PRED;
use crate::src::levels::DC_PRED;
use crate::src::levels::FILTER_PRED;
use crate::src::levels::HOR_PRED;
use crate::src::levels::LEFT_DC_PRED;
use crate::src::levels::N_IMPL_INTRA_PRED_MODES;
Expand Down Expand Up @@ -58,21 +59,12 @@ pub unsafe extern "C" fn sm_uv_flag(b: *const BlockContext, idx: c_int) -> c_int
};
}

static av1_mode_conv: [[[u8; 2]; 2]; N_INTRA_PRED_MODES] = [
[[DC_128_PRED, TOP_DC_PRED], [LEFT_DC_PRED, DC_PRED]],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[0; 2]; 2],
[[DC_128_PRED, VERT_PRED], [HOR_PRED, PAETH_PRED]],
];
static av1_mode_conv: [[[IntraPredMode; 2 /* have_top */]; 2 /* have_left */]; N_INTRA_PRED_MODES] = {
let mut a = [[[0; 2]; 2]; N_INTRA_PRED_MODES];
a[DC_PRED as usize] = [[DC_128_PRED, TOP_DC_PRED], [LEFT_DC_PRED, DC_PRED]];
a[PAETH_PRED as usize] = [[DC_128_PRED, VERT_PRED], [HOR_PRED, PAETH_PRED]];
a
};

static av1_mode_to_angle_map: [u8; 8] = [90, 180, 45, 135, 113, 157, 203, 67];

Expand All @@ -93,162 +85,161 @@ static mut av1_intra_prediction_edges: [av1_intra_prediction_edge; N_IMPL_INTRA_
}; N_IMPL_INTRA_PRED_MODES];

unsafe extern "C" fn run_static_initializers() {
av1_intra_prediction_edges = [
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(1 as c_int as u8);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(1 as c_int as u8);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
{
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
},
];
let a = &mut av1_intra_prediction_edges;
a[DC_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[VERT_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[HOR_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[LEFT_DC_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[TOP_DC_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[DC_128_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[Z1_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(0);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(1 as c_int as u8);
init.set_needs_bottomleft(0);
init
};
a[Z2_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[Z3_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(0);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(1 as c_int as u8);
init
};
a[SMOOTH_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[SMOOTH_V_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[SMOOTH_H_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(0);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[PAETH_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
a[FILTER_PRED as usize] = {
let mut init = av1_intra_prediction_edge {
needs_left_needs_top_needs_topleft_needs_topright_needs_bottomleft: [0; 1],
};
init.set_needs_left(1 as c_int as u8);
init.set_needs_top(1 as c_int as u8);
init.set_needs_topleft(1 as c_int as u8);
init.set_needs_topright(0);
init.set_needs_bottomleft(0);
init
};
}

#[used]
Expand Down

0 comments on commit ab01de1

Please sign in to comment.