Skip to content

Commit

Permalink
struct Rav1dITUTT35: Replace *mut {D => R}av1dITUTT35s.
Browse files Browse the repository at this point in the history
This is done the same way as was done for `Rav1d{Frame,Sequence}Header`.
  • Loading branch information
kkysen committed Oct 1, 2023
1 parent 5edbf96 commit e8290e2
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 17 deletions.
2 changes: 2 additions & 0 deletions include/dav1d/headers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -424,6 +424,7 @@ impl From<Rav1dMasteringDisplay> for Dav1dMasteringDisplay {
}
}

#[derive(Clone)]
#[repr(C)]
pub struct Dav1dITUTT35 {
pub country_code: u8,
Expand All @@ -432,6 +433,7 @@ pub struct Dav1dITUTT35 {
pub payload: *mut u8,
}

#[derive(Clone)]
#[repr(C)]
pub(crate) struct Rav1dITUTT35 {
pub country_code: u8,
Expand Down
31 changes: 28 additions & 3 deletions include/dav1d/picture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use crate::include::dav1d::headers::Dav1dMasteringDisplay;
use crate::include::dav1d::headers::Dav1dPixelLayout;
use crate::include::dav1d::headers::Dav1dSequenceHeader;
use crate::include::dav1d::headers::Rav1dFrameHeader;
use crate::include::dav1d::headers::Rav1dITUTT35;
use crate::include::dav1d::headers::Rav1dSequenceHeader;
use crate::src::r#ref::Rav1dRef;
use libc::ptrdiff_t;
Expand Down Expand Up @@ -84,7 +85,7 @@ pub(crate) struct Rav1dPicture {
pub m: Rav1dDataProps,
pub content_light: *mut Dav1dContentLightLevel, // TODO(kkysen) make Rav1d
pub mastering_display: *mut Dav1dMasteringDisplay, // TODO(kkysen) make Rav1d
pub itut_t35: *mut Dav1dITUTT35, // TODO(kkysen) make Rav1d
pub itut_t35: *mut Rav1dITUTT35,
pub reserved: [uintptr_t; 4],
pub frame_hdr_ref: *mut Rav1dRef,
pub seq_hdr_ref: *mut Rav1dRef,
Expand Down Expand Up @@ -153,7 +154,19 @@ impl From<Dav1dPicture> for Rav1dPicture {
m: m.into(),
content_light,
mastering_display,
itut_t35: itut_t35,
// `.update_rav1d()` happens in `#[no_mangle] extern "C"`/`DAV1D_API` calls
itut_t35: if itut_t35.is_null() {
ptr::null_mut()
} else {
unsafe {
addr_of_mut!(
(*(itut_t35_ref.read())
.data
.cast::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>())
.rav1d
)
}
},
reserved,
frame_hdr_ref,
seq_hdr_ref,
Expand Down Expand Up @@ -224,7 +237,19 @@ impl From<Rav1dPicture> for Dav1dPicture {
m: m.into(),
content_light,
mastering_display,
itut_t35: itut_t35,
// `.update_dav1d()` happens in [`rav1d_parse_obus`].
itut_t35: if itut_t35.is_null() {
ptr::null_mut()
} else {
unsafe {
addr_of_mut!(
(*(itut_t35_ref.read())
.data
.cast::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>())
.dav1d
)
}
},
reserved,
frame_hdr_ref,
seq_hdr_ref,
Expand Down
4 changes: 2 additions & 2 deletions src/internal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ use crate::include::dav1d::dav1d::Rav1dEventFlags;
use crate::include::dav1d::dav1d::Rav1dInloopFilterType;
use crate::include::dav1d::dav1d::Rav1dLogger;
use crate::include::dav1d::headers::Dav1dContentLightLevel;
use crate::include::dav1d::headers::Dav1dITUTT35;
use crate::include::dav1d::headers::Dav1dMasteringDisplay;
use crate::include::dav1d::headers::Rav1dFrameHeader;
use crate::include::dav1d::headers::Rav1dITUTT35;
use crate::include::dav1d::headers::Rav1dSequenceHeader;
use crate::include::dav1d::headers::Rav1dWarpedMotionParams;
use crate::include::dav1d::picture::Rav1dPicAllocator;
Expand Down Expand Up @@ -180,7 +180,7 @@ pub struct Rav1dContext {
pub(crate) mastering_display_ref: *mut Rav1dRef,
pub(crate) mastering_display: *mut Dav1dMasteringDisplay, // TODO(kkysen) make Rav1d
pub(crate) itut_t35_ref: *mut Rav1dRef,
pub(crate) itut_t35: *mut Dav1dITUTT35, // TODO(kkysen) make Rav1d
pub(crate) itut_t35: *mut Rav1dITUTT35,
pub(crate) in_0: Rav1dData,
pub(crate) out: Rav1dThreadPicture,
pub(crate) cache: Rav1dThreadPicture,
Expand Down
24 changes: 23 additions & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ use crate::include::dav1d::headers::Dav1dITUTT35;
use crate::include::dav1d::headers::Dav1dMasteringDisplay;
use crate::include::dav1d::headers::Dav1dSequenceHeader;
use crate::include::dav1d::headers::Rav1dFrameHeader;
use crate::include::dav1d::headers::Rav1dITUTT35;
use crate::include::dav1d::headers::Rav1dSequenceHeader;
use crate::include::dav1d::picture::Dav1dPicture;
use crate::include::dav1d::picture::Rav1dPicAllocator;
Expand Down Expand Up @@ -1036,6 +1037,13 @@ pub unsafe extern "C" fn dav1d_get_picture(c: *mut Dav1dContext, out: *mut Dav1d
.cast::<DRav1d<Rav1dFrameHeader, Dav1dFrameHeader>>())
.update_rav1d();
}
if let Some(mut itut_t35_ref) = NonNull::new((*out).itut_t35_ref) {
(*itut_t35_ref
.as_mut()
.data
.cast::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>())
.update_rav1d();
}
let mut out_rust = out.read().into();
let result = rav1d_get_picture(c, &mut out_rust);
out.write(out_rust.into());
Expand Down Expand Up @@ -1131,6 +1139,13 @@ pub unsafe extern "C" fn dav1d_apply_grain(
.cast::<DRav1d<Rav1dFrameHeader, Dav1dFrameHeader>>())
.update_rav1d();
}
if let Some(mut itut_t35_ref) = NonNull::new((*in_0).itut_t35_ref) {
(*itut_t35_ref
.as_mut()
.data
.cast::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>())
.update_rav1d();
}
if let Some(mut seq_hdr_ref) = NonNull::new((*out).seq_hdr_ref) {
(*seq_hdr_ref
.as_mut()
Expand All @@ -1145,6 +1160,13 @@ pub unsafe extern "C" fn dav1d_apply_grain(
.cast::<DRav1d<Rav1dFrameHeader, Dav1dFrameHeader>>())
.update_rav1d();
}
if let Some(mut itut_t35_ref) = NonNull::new((*out).itut_t35_ref) {
(*itut_t35_ref
.as_mut()
.data
.cast::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>())
.update_rav1d();
}
let mut out_rust = out.read().into();
let in_rust = in_0.read().into();
let result = rav1d_apply_grain(c, &mut out_rust, &in_rust);
Expand Down Expand Up @@ -1177,7 +1199,7 @@ pub(crate) unsafe fn rav1d_flush(c: *mut Rav1dContext) {
rav1d_ref_dec(&mut (*c).seq_hdr_ref);
(*c).mastering_display = 0 as *mut Dav1dMasteringDisplay;
(*c).content_light = 0 as *mut Dav1dContentLightLevel;
(*c).itut_t35 = 0 as *mut Dav1dITUTT35;
(*c).itut_t35 = 0 as *mut Rav1dITUTT35;
rav1d_ref_dec(&mut (*c).mastering_display_ref);
rav1d_ref_dec(&mut (*c).content_light_ref);
rav1d_ref_dec(&mut (*c).itut_t35_ref);
Expand Down
23 changes: 16 additions & 7 deletions src/obu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ use crate::include::dav1d::headers::Dav1dTxfmMode;
use crate::include::dav1d::headers::Dav1dWarpedMotionType;
use crate::include::dav1d::headers::Rav1dFrameHeader;
use crate::include::dav1d::headers::Rav1dFrameHeaderOperatingPoint;
use crate::include::dav1d::headers::Rav1dITUTT35;
use crate::include::dav1d::headers::Rav1dLoopfilterModeRefDeltas;
use crate::include::dav1d::headers::Rav1dObuType;
use crate::include::dav1d::headers::Rav1dSegmentationData;
Expand Down Expand Up @@ -1867,17 +1868,24 @@ pub(crate) unsafe fn rav1d_parse_obus(
);
} else {
let ref_3: *mut Rav1dRef = rav1d_ref_create(
(::core::mem::size_of::<Dav1dITUTT35>()).wrapping_add(
(payload_size as usize).wrapping_mul(::core::mem::size_of::<u8>()),
),
(::core::mem::size_of::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>())
.wrapping_add(
(payload_size as usize)
.wrapping_mul(::core::mem::size_of::<u8>()),
),
);
if ref_3.is_null() {
return -(12 as c_int);
}
let itut_t35_metadata: *mut Dav1dITUTT35 =
(*ref_3).data as *mut Dav1dITUTT35;
(*itut_t35_metadata).payload =
&mut *itut_t35_metadata.offset(1) as *mut Dav1dITUTT35 as *mut u8;
let itut_t32_metadatas =
(*ref_3).data.cast::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>();
let itut_t35_metadata: *mut Rav1dITUTT35 =
addr_of_mut!((*itut_t32_metadatas).rav1d);
(*itut_t35_metadata).payload = (*ref_3)
.data
.cast::<u8>()
.offset(::core::mem::size_of::<DRav1d<Rav1dITUTT35, Dav1dITUTT35>>()
as isize);
(*itut_t35_metadata).country_code = country_code as u8;
(*itut_t35_metadata).country_code_extension_byte =
country_code_extension_byte as u8;
Expand All @@ -1888,6 +1896,7 @@ pub(crate) unsafe fn rav1d_parse_obus(
i_2 += 1;
}
(*itut_t35_metadata).payload_size = payload_size as usize;
(*itut_t32_metadatas).update_dav1d();
rav1d_ref_dec(&mut (*c).itut_t35_ref);
(*c).itut_t35 = itut_t35_metadata;
(*c).itut_t35_ref = ref_3;
Expand Down
8 changes: 4 additions & 4 deletions src/picture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ use crate::include::dav1d::dav1d::Rav1dEventFlags;
use crate::include::dav1d::dav1d::RAV1D_EVENT_FLAG_NEW_OP_PARAMS_INFO;
use crate::include::dav1d::dav1d::RAV1D_EVENT_FLAG_NEW_SEQUENCE;
use crate::include::dav1d::headers::Dav1dContentLightLevel;
use crate::include::dav1d::headers::Dav1dITUTT35;
use crate::include::dav1d::headers::Dav1dMasteringDisplay;
use crate::include::dav1d::headers::Rav1dFrameHeader;
use crate::include::dav1d::headers::Rav1dITUTT35;
use crate::include::dav1d::headers::Rav1dSequenceHeader;
use crate::include::dav1d::headers::RAV1D_PIXEL_LAYOUT_I400;
use crate::include::dav1d::headers::RAV1D_PIXEL_LAYOUT_I420;
Expand Down Expand Up @@ -146,7 +146,7 @@ unsafe extern "C" fn picture_alloc_with_edges(
content_light_ref: *mut Rav1dRef,
mastering_display: *mut Dav1dMasteringDisplay,
mastering_display_ref: *mut Rav1dRef,
itut_t35: *mut Dav1dITUTT35,
itut_t35: *mut Rav1dITUTT35,
itut_t35_ref: *mut Rav1dRef,
bpc: c_int,
props: *const Rav1dDataProps,
Expand Down Expand Up @@ -182,6 +182,7 @@ unsafe extern "C" fn picture_alloc_with_edges(
rav1d_data_props_set_defaults(&mut (*p).m);
(*p).seq_hdr_ref = seq_hdr_ref;
(*p).frame_hdr_ref = frame_hdr_ref;
(*p).itut_t35_ref = itut_t35_ref;
let res = (*p_allocator).alloc_picture(p);
if res < 0 {
free(pic_ctx as *mut c_void);
Expand Down Expand Up @@ -222,7 +223,6 @@ unsafe extern "C" fn picture_alloc_with_edges(
if !mastering_display_ref.is_null() {
rav1d_ref_inc(mastering_display_ref);
}
(*p).itut_t35_ref = itut_t35_ref;
if !itut_t35_ref.is_null() {
rav1d_ref_inc(itut_t35_ref);
}
Expand Down Expand Up @@ -265,7 +265,7 @@ pub(crate) unsafe fn rav1d_thread_picture_alloc(
return res;
}
rav1d_ref_dec(&mut (*c).itut_t35_ref);
(*c).itut_t35 = 0 as *mut Dav1dITUTT35;
(*c).itut_t35 = 0 as *mut Rav1dITUTT35;
let flags_mask = if (*(*f).frame_hdr).show_frame != 0 || (*c).output_invisible_frames != 0 {
0 as c_int
} else {
Expand Down

0 comments on commit e8290e2

Please sign in to comment.