From 63ab93f582b3c2b26c89e947162c3c1148a233fe Mon Sep 17 00:00:00 2001 From: Khyber Sen Date: Fri, 1 Dec 2023 23:56:10 -0500 Subject: [PATCH] `const {D,R}AV1D_PRIMARY_REF_NONE`: Deduplicate. --- include/dav1d/headers.rs | 2 ++ src/decode.rs | 9 +++++---- src/obu.rs | 11 ++++++----- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/include/dav1d/headers.rs b/include/dav1d/headers.rs index 81a5330e9..46db7b9e8 100644 --- a/include/dav1d/headers.rs +++ b/include/dav1d/headers.rs @@ -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 { diff --git a/src/decode.rs b/src/decode.rs index c36008ff0..7fbfe1a70 100644 --- a/src/decode.rs +++ b/src/decode.rs @@ -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; @@ -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. @@ -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); @@ -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; @@ -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 { diff --git a/src/obu.rs b/src/obu.rs index 13d7046aa..1f0374e27 100644 --- a/src/obu.rs +++ b/src/obu.rs @@ -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; @@ -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 { @@ -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; @@ -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); @@ -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]; @@ -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];