Skip to content

Commit

Permalink
const {D,R}AV1D_PRIMARY_REF_NONE: Deduplicate.
Browse files Browse the repository at this point in the history
  • Loading branch information
kkysen committed Dec 2, 2023
1 parent 1b962f3 commit 63ab93f
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 9 deletions.
2 changes: 2 additions & 0 deletions include/dav1d/headers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -421,8 +421,10 @@ pub(crate) const RAV1D_CHR_UNKNOWN: Rav1dChromaSamplePosition = DAV1D_CHR_UNKNOW

// Constants from Section 3. "Symbols and abbreviated terms"
pub const DAV1D_MAX_SEGMENTS: u8 = 8;
pub const DAV1D_PRIMARY_REF_NONE: c_int = 7;

pub(crate) const RAV1D_MAX_SEGMENTS: u8 = DAV1D_MAX_SEGMENTS;
pub(crate) const RAV1D_PRIMARY_REF_NONE: c_int = DAV1D_PRIMARY_REF_NONE;

#[repr(C)]
pub struct Rav1dContentLightLevel {
Expand Down
9 changes: 5 additions & 4 deletions src/decode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ use crate::include::dav1d::headers::RAV1D_FILTER_8TAP_REGULAR;
use crate::include::dav1d::headers::RAV1D_FILTER_SWITCHABLE;
use crate::include::dav1d::headers::RAV1D_MAX_SEGMENTS;
use crate::include::dav1d::headers::RAV1D_N_SWITCHABLE_FILTERS;
use crate::include::dav1d::headers::RAV1D_PRIMARY_REF_NONE;
use crate::include::dav1d::headers::RAV1D_RESTORATION_NONE;
use crate::include::dav1d::headers::RAV1D_RESTORATION_SGRPROJ;
use crate::include::dav1d::headers::RAV1D_RESTORATION_SWITCHABLE;
Expand Down Expand Up @@ -1160,7 +1161,7 @@ unsafe fn get_prev_frame_segid(
ref_seg_map: *const u8,
stride: ptrdiff_t,
) -> u8 {
assert!((*f.frame_hdr).primary_ref_frame != 7);
assert!((*f.frame_hdr).primary_ref_frame != RAV1D_PRIMARY_REF_NONE);

// Need checked casts here because an overflowing cast
// would give a too large `len` to [`std::slice::from_raw_parts`], which would UB.
Expand Down Expand Up @@ -5099,7 +5100,7 @@ pub unsafe fn rav1d_submit_frame(c: &mut Rav1dContext) -> Rav1dResult {

let mut ref_coded_width = <[i32; 7]>::default();
if is_inter_or_switch(&*f.frame_hdr) {
if (*f.frame_hdr).primary_ref_frame != 7 {
if (*f.frame_hdr).primary_ref_frame != RAV1D_PRIMARY_REF_NONE {
let pri_ref = (*f.frame_hdr).refidx[(*f.frame_hdr).primary_ref_frame as usize] as usize;
if c.refs[pri_ref].p.p.data[0].is_null() {
on_error(f, c, out_delayed);
Expand Down Expand Up @@ -5143,7 +5144,7 @@ pub unsafe fn rav1d_submit_frame(c: &mut Rav1dContext) -> Rav1dResult {
}

// setup entropy
if (*f.frame_hdr).primary_ref_frame == 7 {
if (*f.frame_hdr).primary_ref_frame == RAV1D_PRIMARY_REF_NONE {
rav1d_cdf_thread_init_static(&mut f.in_cdf, (*f.frame_hdr).quant.yac);
} else {
let pri_ref = (*f.frame_hdr).refidx[(*f.frame_hdr).primary_ref_frame as usize] as usize;
Expand Down Expand Up @@ -5292,7 +5293,7 @@ pub unsafe fn rav1d_submit_frame(c: &mut Rav1dContext) -> Rav1dResult {
if (*f.frame_hdr).segmentation.temporal != 0 || (*f.frame_hdr).segmentation.update_map == 0
{
let pri_ref = (*f.frame_hdr).primary_ref_frame as usize;
assert!(pri_ref != 7);
assert!(pri_ref != RAV1D_PRIMARY_REF_NONE as usize);
let ref_w = (ref_coded_width[pri_ref] + 7 >> 3) << 1;
let ref_h = (f.refp[pri_ref].p.p.h + 7 >> 3) << 1;
if ref_w == f.bw && ref_h == f.bh {
Expand Down
11 changes: 6 additions & 5 deletions src/obu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ use crate::include::dav1d::headers::RAV1D_OBU_REDUNDANT_FRAME_HDR;
use crate::include::dav1d::headers::RAV1D_OBU_SEQ_HDR;
use crate::include::dav1d::headers::RAV1D_OBU_TD;
use crate::include::dav1d::headers::RAV1D_OBU_TILE_GRP;
use crate::include::dav1d::headers::RAV1D_PRIMARY_REF_NONE;
use crate::include::dav1d::headers::RAV1D_RESTORATION_NONE;
use crate::include::dav1d::headers::RAV1D_TRC_SRGB;
use crate::include::dav1d::headers::RAV1D_TRC_UNKNOWN;
Expand Down Expand Up @@ -540,7 +541,7 @@ unsafe fn parse_frame_hdr(c: &mut Rav1dContext, gb: &mut GetBits) -> Rav1dResult
hdr.primary_ref_frame = if hdr.error_resilient_mode == 0 && is_inter_or_switch(hdr) {
rav1d_get_bits(gb, 3) as c_int
} else {
7
RAV1D_PRIMARY_REF_NONE
};

if seqhdr.decoder_model_info_present != 0 {
Expand Down Expand Up @@ -896,7 +897,7 @@ unsafe fn parse_frame_hdr(c: &mut Rav1dContext, gb: &mut GetBits) -> Rav1dResult
// segmentation data
hdr.segmentation.enabled = rav1d_get_bit(gb) as c_int;
if hdr.segmentation.enabled != 0 {
if hdr.primary_ref_frame == 7 {
if hdr.primary_ref_frame == RAV1D_PRIMARY_REF_NONE {
hdr.segmentation.update_map = 1;
hdr.segmentation.temporal = 0;
hdr.segmentation.update_data = 1;
Expand Down Expand Up @@ -966,7 +967,7 @@ unsafe fn parse_frame_hdr(c: &mut Rav1dContext, gb: &mut GetBits) -> Rav1dResult
} else {
// segmentation.update_data was false so we should copy
// segmentation data from the reference frame.
assert!(hdr.primary_ref_frame != 7);
assert!(hdr.primary_ref_frame != RAV1D_PRIMARY_REF_NONE);
let pri_ref = hdr.refidx[hdr.primary_ref_frame as usize];
if (c.refs[pri_ref as usize].p.p.frame_hdr).is_null() {
return error(c);
Expand Down Expand Up @@ -1050,7 +1051,7 @@ unsafe fn parse_frame_hdr(c: &mut Rav1dContext, gb: &mut GetBits) -> Rav1dResult
}
hdr.loopfilter.sharpness = rav1d_get_bits(gb, 3) as c_int;

if hdr.primary_ref_frame == 7 {
if hdr.primary_ref_frame == RAV1D_PRIMARY_REF_NONE {
hdr.loopfilter.mode_ref_deltas = default_mode_ref_deltas.clone();
} else {
let r#ref = hdr.refidx[hdr.primary_ref_frame as usize];
Expand Down Expand Up @@ -1259,7 +1260,7 @@ unsafe fn parse_frame_hdr(c: &mut Rav1dContext, gb: &mut GetBits) -> Rav1dResult
};
if !(hdr.gmv[i as usize].r#type == RAV1D_WM_TYPE_IDENTITY) {
let ref_gmv;
if hdr.primary_ref_frame == 7 {
if hdr.primary_ref_frame == RAV1D_PRIMARY_REF_NONE {
ref_gmv = &dav1d_default_wm_params;
} else {
let pri_ref = hdr.refidx[hdr.primary_ref_frame as usize];
Expand Down

0 comments on commit 63ab93f

Please sign in to comment.