Skip to content

Commit

Permalink
fn rav1d_data_props_set_defaults: Replace with `fn Rav1dDataProps::…
Browse files Browse the repository at this point in the history
…default` (#634)

This is helpful in replacing `Rav1dData`'s `Rav1dRef` with an `Arc`,
which I'm doing next.
  • Loading branch information
kkysen authored Dec 20, 2023
2 parents a89336a + 46c8447 commit 3ae9c3b
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 24 deletions.
14 changes: 13 additions & 1 deletion include/dav1d/common.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ pub struct Dav1dDataProps {
pub user_data: Dav1dUserData,
}

#[derive(Clone, Default)]
#[derive(Clone)]
#[repr(C)]
pub(crate) struct Rav1dDataProps {
pub timestamp: i64,
Expand All @@ -68,6 +68,18 @@ pub(crate) struct Rav1dDataProps {
pub user_data: Rav1dUserData,
}

impl Default for Rav1dDataProps {
fn default() -> Self {
Self {
timestamp: i64::MIN,
duration: 0,
offset: -1,
size: 0,
user_data: Default::default(),
}
}
}

impl From<Dav1dDataProps> for Rav1dDataProps {
fn from(value: Dav1dDataProps) -> Self {
let Dav1dDataProps {
Expand Down
21 changes: 4 additions & 17 deletions src/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ pub(crate) unsafe fn rav1d_data_create_internal(buf: *mut Rav1dData, sz: usize)
}
(*buf).data = (*(*buf).r#ref).const_data as *const u8;
(*buf).sz = sz;
rav1d_data_props_set_defaults(&mut (*buf).m);
(*buf).m = Default::default();
(*buf).m.size = sz;
return (*(*buf).r#ref).data as *mut u8;
}
Expand All @@ -48,7 +48,7 @@ pub(crate) unsafe fn rav1d_data_wrap_internal(
}
(*buf).data = ptr;
(*buf).sz = sz;
rav1d_data_props_set_defaults(&mut (*buf).m);
(*buf).m = Default::default();
(*buf).m.size = sz;
Ok(())
}
Expand Down Expand Up @@ -105,25 +105,12 @@ pub(crate) unsafe fn rav1d_data_props_copy(dst: *mut Rav1dDataProps, src: *const
}
}

pub(crate) unsafe fn rav1d_data_props_set_defaults(props: *mut Rav1dDataProps) {
if props.is_null() {
unreachable!();
}
memset(
props as *mut c_void,
0 as c_int,
::core::mem::size_of::<Rav1dDataProps>(),
);
(*props).timestamp = i64::MIN;
(*props).offset = -1;
}

pub(crate) unsafe fn rav1d_data_props_unref_internal(props: *mut Rav1dDataProps) {
if validate_input!(!props.is_null()).is_err() {
return;
}
let mut user_data_ref: *mut Rav1dRef = (*props).user_data.r#ref;
rav1d_data_props_set_defaults(props);
(*props) = Default::default();
rav1d_ref_dec(&mut user_data_ref);
}

Expand All @@ -143,6 +130,6 @@ pub(crate) unsafe fn rav1d_data_unref_internal(buf: *mut Rav1dData) {
0 as c_int,
::core::mem::size_of::<Rav1dData>(),
);
rav1d_data_props_set_defaults(&mut (*buf).m);
(*buf).m = Default::default();
rav1d_ref_dec(&mut user_data_ref);
}
5 changes: 2 additions & 3 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ use crate::src::cpu::rav1d_init_cpu;
use crate::src::cpu::rav1d_num_logical_processors;
use crate::src::data::rav1d_data_create_internal;
use crate::src::data::rav1d_data_props_copy;
use crate::src::data::rav1d_data_props_set_defaults;
use crate::src::data::rav1d_data_props_unref_internal;
use crate::src::data::rav1d_data_ref;
use crate::src::data::rav1d_data_unref_internal;
Expand Down Expand Up @@ -291,7 +290,7 @@ pub(crate) unsafe fn rav1d_open(c_out: &mut *mut Rav1dContext, s: &Rav1dSettings
(*c).output_invisible_frames = s.output_invisible_frames;
(*c).inloop_filters = s.inloop_filters;
(*c).decode_frame_type = s.decode_frame_type;
rav1d_data_props_set_defaults(&mut (*c).cached_error_props);
(*c).cached_error_props = Default::default();
if rav1d_mem_pool_init(&mut (*c).seq_hdr_pool).is_err()
|| rav1d_mem_pool_init(&mut (*c).frame_hdr_pool).is_err()
|| rav1d_mem_pool_init(&mut (*c).segmap_pool).is_err()
Expand Down Expand Up @@ -1234,7 +1233,7 @@ pub(crate) unsafe fn rav1d_get_decode_error_data_props(
) -> Rav1dResult {
rav1d_data_props_unref_internal(out);
*out = c.cached_error_props.clone();
rav1d_data_props_set_defaults(&mut c.cached_error_props);
c.cached_error_props = Default::default();
Ok(())
}

Expand Down
5 changes: 2 additions & 3 deletions src/picture.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ use crate::include::dav1d::picture::Rav1dPicture;
use crate::include::stdatomic::atomic_int;
use crate::include::stdatomic::atomic_uint;
use crate::src::data::rav1d_data_props_copy;
use crate::src::data::rav1d_data_props_set_defaults;
use crate::src::error::Dav1dResult;
use crate::src::error::Rav1dError::EGeneric;
use crate::src::error::Rav1dError::ENOMEM;
Expand Down Expand Up @@ -183,7 +182,7 @@ unsafe fn picture_alloc_with_edges(
(*p).frame_hdr = frame_hdr;
(*p).p.layout = (*seq_hdr).layout;
(*p).p.bpc = bpc;
rav1d_data_props_set_defaults(&mut (*p).m);
(*p).m = Default::default();
(*p).seq_hdr_ref = seq_hdr_ref;
(*p).frame_hdr_ref = frame_hdr_ref;
let res = (*p_allocator).alloc_picture(p);
Expand Down Expand Up @@ -445,7 +444,7 @@ pub(crate) unsafe fn rav1d_picture_unref_internal(p: &mut Rav1dPicture) {
0 as c_int,
::core::mem::size_of::<Rav1dPicture>(),
);
rav1d_data_props_set_defaults(&mut p.m);
p.m = Default::default();
}

pub(crate) unsafe fn rav1d_thread_picture_unref(p: *mut Rav1dThreadPicture) {
Expand Down

0 comments on commit 3ae9c3b

Please sign in to comment.