diff --git a/src/cdf.rs b/src/cdf.rs index 9619a35e2..d3634bc2e 100644 --- a/src/cdf.rs +++ b/src/cdf.rs @@ -6,8 +6,6 @@ use ::libc; extern "C" { fn memcpy(_: *mut libc::c_void, _: *const libc::c_void, _: libc::c_ulong) -> *mut libc::c_void; fn memset(_: *mut libc::c_void, _: libc::c_int, _: libc::c_ulong) -> *mut libc::c_void; - fn dav1d_ref_create_using_pool(pool: *mut Dav1dMemPool, size: size_t) -> *mut Dav1dRef; - fn dav1d_ref_dec(r#ref: *mut *mut Dav1dRef); } use crate::src::tables::dav1d_partition_type_count; @@ -17,6 +15,8 @@ use crate::include::stdatomic::atomic_uint; use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::data::Dav1dData; +use crate::src::r#ref::dav1d_ref_create_using_pool; +use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::Dav1dRef; #[derive(Copy, Clone)] #[repr(C)] @@ -5402,8 +5402,8 @@ static av1_default_coef_cdf: [CdfCoefContext; 4] = [ ])), }, ]; -#[no_mangle] -pub unsafe extern "C" fn dav1d_cdf_thread_update( + +pub unsafe fn dav1d_cdf_thread_update( hdr: *const Dav1dFrameHeader, dst: *mut CdfContext, src: *const CdfContext, @@ -6136,6 +6136,7 @@ pub unsafe extern "C" fn dav1d_cdf_thread_update( k_17 += 1; } } + #[inline] unsafe extern "C" fn get_qcat_idx(q: libc::c_int) -> libc::c_int { if q <= 20 { @@ -6149,16 +6150,13 @@ unsafe extern "C" fn get_qcat_idx(q: libc::c_int) -> libc::c_int { } return 3 as libc::c_int; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_cdf_thread_init_static( - cdf: *mut CdfThreadContext, - qidx: libc::c_int, -) { + +pub unsafe fn dav1d_cdf_thread_init_static(cdf: *mut CdfThreadContext, qidx: libc::c_int) { (*cdf).r#ref = 0 as *mut Dav1dRef; (*cdf).data.qcat = get_qcat_idx(qidx) as libc::c_uint; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_cdf_thread_copy(dst: *mut CdfContext, src: *const CdfThreadContext) { + +pub unsafe fn dav1d_cdf_thread_copy(dst: *mut CdfContext, src: *const CdfThreadContext) { if !((*src).r#ref).is_null() { memcpy( dst as *mut libc::c_void, @@ -6189,6 +6187,7 @@ pub unsafe extern "C" fn dav1d_cdf_thread_copy(dst: *mut CdfContext, src: *const (*dst).mv.comp[0] = (*dst).mv.comp[1]; }; } + #[no_mangle] pub unsafe extern "C" fn dav1d_cdf_thread_alloc( c: *mut Dav1dContext, @@ -6209,18 +6208,15 @@ pub unsafe extern "C" fn dav1d_cdf_thread_alloc( } return 0 as libc::c_int; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_cdf_thread_ref( - dst: *mut CdfThreadContext, - src: *mut CdfThreadContext, -) { + +pub unsafe fn dav1d_cdf_thread_ref(dst: *mut CdfThreadContext, src: *mut CdfThreadContext) { *dst = *src; if !((*src).r#ref).is_null() { dav1d_ref_inc((*src).r#ref); } } -#[no_mangle] -pub unsafe extern "C" fn dav1d_cdf_thread_unref(cdf: *mut CdfThreadContext) { + +pub unsafe fn dav1d_cdf_thread_unref(cdf: *mut CdfThreadContext) { memset( &mut (*cdf).data as *mut CdfThreadContext_data as *mut libc::c_void, 0 as libc::c_int, diff --git a/src/cpu.rs b/src/cpu.rs index 87c519ce6..5195aa6ac 100644 --- a/src/cpu.rs +++ b/src/cpu.rs @@ -46,7 +46,6 @@ pub fn dav1d_get_cpu_flags() -> libc::c_uint { flags } -#[no_mangle] #[cold] pub unsafe fn dav1d_init_cpu() { #[cfg(feature = "asm")] diff --git a/src/data.rs b/src/data.rs index d651a32e8..343ff3eed 100644 --- a/src/data.rs +++ b/src/data.rs @@ -5,25 +5,18 @@ use ::libc; extern "C" { fn memset(_: *mut libc::c_void, _: libc::c_int, _: libc::c_ulong) -> *mut libc::c_void; fn fprintf(_: *mut libc::FILE, _: *const libc::c_char, _: ...) -> libc::c_int; - fn dav1d_ref_dec(r#ref: *mut *mut Dav1dRef); - fn dav1d_ref_wrap( - ptr: *const uint8_t, - free_callback: Option ()>, - user_data: *mut libc::c_void, - ) -> *mut Dav1dRef; - fn dav1d_ref_create(size: size_t) -> *mut Dav1dRef; } use crate::src::r#ref::Dav1dRef; use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::data::Dav1dData; +use crate::src::r#ref::dav1d_ref_create; +use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::dav1d_ref_inc; -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_create_internal( - buf: *mut Dav1dData, - sz: size_t, -) -> *mut uint8_t { +use crate::src::r#ref::dav1d_ref_wrap; + +pub unsafe fn dav1d_data_create_internal(buf: *mut Dav1dData, sz: size_t) -> *mut uint8_t { if buf.is_null() { fprintf( stderr, @@ -49,8 +42,8 @@ pub unsafe extern "C" fn dav1d_data_create_internal( (*buf).m.size = sz; return (*(*buf).r#ref).data as *mut uint8_t; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_wrap_internal( + +pub unsafe fn dav1d_data_wrap_internal( buf: *mut Dav1dData, ptr: *const uint8_t, sz: size_t, @@ -103,8 +96,8 @@ pub unsafe extern "C" fn dav1d_data_wrap_internal( (*buf).m.size = sz; return 0 as libc::c_int; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_wrap_user_data_internal( + +pub unsafe fn dav1d_data_wrap_user_data_internal( buf: *mut Dav1dData, user_data: *const uint8_t, free_callback: Option ()>, @@ -141,8 +134,8 @@ pub unsafe extern "C" fn dav1d_data_wrap_user_data_internal( (*buf).m.user_data.data = user_data; return 0 as libc::c_int; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_ref(dst: *mut Dav1dData, src: *const Dav1dData) { + +pub unsafe fn dav1d_data_ref(dst: *mut Dav1dData, src: *const Dav1dData) { if dst.is_null() { fprintf( stderr, @@ -192,11 +185,8 @@ pub unsafe extern "C" fn dav1d_data_ref(dst: *mut Dav1dData, src: *const Dav1dDa } *dst = *src; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_props_copy( - dst: *mut Dav1dDataProps, - src: *const Dav1dDataProps, -) { + +pub unsafe fn dav1d_data_props_copy(dst: *mut Dav1dDataProps, src: *const Dav1dDataProps) { if dst.is_null() { unreachable!(); } @@ -209,8 +199,8 @@ pub unsafe extern "C" fn dav1d_data_props_copy( dav1d_ref_inc((*dst).user_data.r#ref); } } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_props_set_defaults(props: *mut Dav1dDataProps) { + +pub unsafe fn dav1d_data_props_set_defaults(props: *mut Dav1dDataProps) { if props.is_null() { unreachable!(); } @@ -222,8 +212,8 @@ pub unsafe extern "C" fn dav1d_data_props_set_defaults(props: *mut Dav1dDataProp (*props).timestamp = i64::MIN; (*props).offset = -1; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_props_unref_internal(props: *mut Dav1dDataProps) { + +pub unsafe fn dav1d_data_props_unref_internal(props: *mut Dav1dDataProps) { if props.is_null() { fprintf( stderr, @@ -240,8 +230,8 @@ pub unsafe extern "C" fn dav1d_data_props_unref_internal(props: *mut Dav1dDataPr dav1d_data_props_set_defaults(props); dav1d_ref_dec(&mut user_data_ref); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_data_unref_internal(buf: *mut Dav1dData) { + +pub unsafe fn dav1d_data_unref_internal(buf: *mut Dav1dData) { if buf.is_null() { fprintf( stderr, diff --git a/src/decode.rs b/src/decode.rs index be28af77e..68cc675fe 100644 --- a/src/decode.rs +++ b/src/decode.rs @@ -9,7 +9,8 @@ use crate::include::dav1d::headers::{Dav1dTxfmMode, DAV1D_MAX_SEGMENTS}; use crate::include::stddef::*; use crate::include::stdint::*; use crate::src::align::Align16; -use crate::src::cdf::{CdfContext, CdfMvComponent, CdfMvContext}; +use crate::src::cdf::CdfMvComponent; +use crate::src::cdf::CdfMvContext; use crate::src::ctx::CaseSet; use crate::src::looprestoration::dav1d_loop_restoration_dsp_init; @@ -36,54 +37,11 @@ extern "C" { fn pthread_cond_signal(__cond: *mut pthread_cond_t) -> libc::c_int; fn pthread_cond_wait(__cond: *mut pthread_cond_t, __mutex: *mut pthread_mutex_t) -> libc::c_int; - fn dav1d_ref_create_using_pool(pool: *mut Dav1dMemPool, size: size_t) -> *mut Dav1dRef; - fn dav1d_ref_dec(r#ref: *mut *mut Dav1dRef); - fn dav1d_cdf_thread_init_static(cdf: *mut CdfThreadContext, qidx: libc::c_int); fn dav1d_cdf_thread_alloc( c: *mut Dav1dContext, cdf: *mut CdfThreadContext, have_frame_mt: libc::c_int, ) -> libc::c_int; - fn dav1d_cdf_thread_copy(dst: *mut CdfContext, src: *const CdfThreadContext); - fn dav1d_cdf_thread_ref(dst: *mut CdfThreadContext, src: *mut CdfThreadContext); - fn dav1d_cdf_thread_unref(cdf: *mut CdfThreadContext); - fn dav1d_cdf_thread_update( - hdr: *const Dav1dFrameHeader, - dst: *mut CdfContext, - src: *const CdfContext, - ); - fn dav1d_data_props_copy(dst: *mut Dav1dDataProps, src: *const Dav1dDataProps); - fn dav1d_data_unref_internal(buf: *mut Dav1dData); - fn dav1d_refmvs_init_frame( - rf: *mut refmvs_frame, - seq_hdr: *const Dav1dSequenceHeader, - frm_hdr: *const Dav1dFrameHeader, - ref_poc: *const libc::c_uint, - rp: *mut refmvs_temporal_block, - ref_ref_poc: *const [libc::c_uint; 7], - rp_ref: *const *mut refmvs_temporal_block, - n_tile_threads: libc::c_int, - n_frame_threads: libc::c_int, - ) -> libc::c_int; - fn dav1d_refmvs_save_tmvs( - dsp: *const Dav1dRefmvsDSPContext, - rt: *const refmvs_tile, - col_start8: libc::c_int, - col_end8: libc::c_int, - row_start8: libc::c_int, - row_end8: libc::c_int, - ); - fn dav1d_refmvs_tile_sbrow_init( - rt: *mut refmvs_tile, - rf: *const refmvs_frame, - tile_col_start4: libc::c_int, - tile_col_end4: libc::c_int, - tile_row_start4: libc::c_int, - tile_row_end4: libc::c_int, - sby: libc::c_int, - tile_row_idx: libc::c_int, - pass: libc::c_int, - ); #[cfg(feature = "bitdepth_8")] fn dav1d_film_grain_dsp_init_8bpc(c: *mut Dav1dFilmGrainDSPContext); #[cfg(feature = "bitdepth_16")] @@ -115,11 +73,6 @@ extern "C" { w: libc::c_int, src: *const Dav1dPicture, ) -> libc::c_int; - fn dav1d_picture_ref(dst: *mut Dav1dPicture, src: *const Dav1dPicture); - fn dav1d_thread_picture_ref(dst: *mut Dav1dThreadPicture, src: *const Dav1dThreadPicture); - fn dav1d_thread_picture_unref(p: *mut Dav1dThreadPicture); - fn dav1d_picture_unref_internal(p: *mut Dav1dPicture); - fn dav1d_picture_get_event_flags(p: *const Dav1dThreadPicture) -> Dav1dEventFlags; #[cfg(feature = "bitdepth_8")] fn dav1d_recon_b_intra_8bpc( t: *mut Dav1dTaskContext, @@ -202,6 +155,9 @@ use crate::src::msac::dav1d_msac_decode_symbol_adapt8; use crate::src::msac::dav1d_msac_init; use crate::src::qm::dav1d_qm_tbl; use crate::src::refmvs::dav1d_refmvs_find; +use crate::src::refmvs::dav1d_refmvs_init_frame; +use crate::src::refmvs::dav1d_refmvs_save_tmvs; +use crate::src::refmvs::dav1d_refmvs_tile_sbrow_init; use crate::src::tables::dav1d_al_part_ctx; use crate::src::tables::dav1d_block_dimensions; use crate::src::tables::dav1d_block_sizes; @@ -223,6 +179,8 @@ use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::data::Dav1dData; use crate::include::stdatomic::atomic_int; use crate::include::stdatomic::atomic_uint; +use crate::src::data::dav1d_data_props_copy; +use crate::src::data::dav1d_data_unref_internal; use crate::src::r#ref::Dav1dRef; #[derive(Copy, Clone)] #[repr(C)] @@ -808,11 +766,21 @@ pub type generate_grain_uv_fn = Option< >; pub type generate_grain_y_fn = Option ()>; +use crate::src::cdf::dav1d_cdf_thread_copy; +use crate::src::cdf::dav1d_cdf_thread_init_static; +use crate::src::cdf::dav1d_cdf_thread_ref; +use crate::src::cdf::dav1d_cdf_thread_unref; +use crate::src::cdf::dav1d_cdf_thread_update; use crate::src::cdf::CdfThreadContext; use crate::src::internal::Dav1dContext_frame_thread; use crate::src::internal::Dav1dContext_refs; use crate::src::internal::Dav1dTileGroup; +use crate::src::picture::dav1d_picture_get_event_flags; +use crate::src::picture::dav1d_picture_ref; +use crate::src::picture::dav1d_picture_unref_internal; +use crate::src::picture::dav1d_thread_picture_ref; +use crate::src::picture::dav1d_thread_picture_unref; use crate::src::picture::Dav1dThreadPicture; pub type backup_ipred_edge_fn = Option ()>; pub type filter_sbrow_fn = Option ()>; @@ -901,6 +869,8 @@ use crate::src::mem::dav1d_alloc_aligned; use crate::src::mem::dav1d_free_aligned; use crate::src::mem::dav1d_freep_aligned; use crate::src::mem::freep; +use crate::src::r#ref::dav1d_ref_create_using_pool; +use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::dav1d_ref_inc; use crate::src::tables::cfl_allowed_mask; diff --git a/src/lib.rs b/src/lib.rs index fc61f0c3a..263f659b3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,7 +17,6 @@ extern "C" { ) -> libc::c_int; fn abort() -> !; fn fprintf(_: *mut libc::FILE, _: *const libc::c_char, _: ...) -> libc::c_int; - fn dav1d_init_cpu(); fn dav1d_num_logical_processors(c: *mut Dav1dContext) -> libc::c_int; #[cfg(feature = "bitdepth_16")] fn dav1d_apply_grain_16bpc( @@ -31,41 +30,14 @@ extern "C" { out: *mut Dav1dPicture, in_0: *const Dav1dPicture, ); - fn dav1d_data_props_unref_internal(props: *mut Dav1dDataProps); - fn dav1d_picture_unref_internal(p: *mut Dav1dPicture); - fn dav1d_data_create_internal(buf: *mut Dav1dData, sz: size_t) -> *mut uint8_t; - fn dav1d_data_props_copy(dst: *mut Dav1dDataProps, src: *const Dav1dDataProps); - fn dav1d_data_wrap_internal( - buf: *mut Dav1dData, - ptr: *const uint8_t, - sz: size_t, - free_callback: Option ()>, - user_data: *mut libc::c_void, - ) -> libc::c_int; - fn dav1d_thread_picture_ref(dst: *mut Dav1dThreadPicture, src: *const Dav1dThreadPicture); - fn dav1d_picture_get_event_flags(p: *const Dav1dThreadPicture) -> Dav1dEventFlags; - fn dav1d_picture_move_ref(dst: *mut Dav1dPicture, src: *mut Dav1dPicture); - fn dav1d_data_wrap_user_data_internal( - buf: *mut Dav1dData, - user_data: *const uint8_t, - free_callback: Option ()>, - cookie: *mut libc::c_void, - ) -> libc::c_int; - fn dav1d_picture_ref(dst: *mut Dav1dPicture, src: *const Dav1dPicture); - fn dav1d_data_unref_internal(buf: *mut Dav1dData); fn dav1d_picture_alloc_copy( c: *mut Dav1dContext, dst: *mut Dav1dPicture, w: libc::c_int, src: *const Dav1dPicture, ) -> libc::c_int; - fn dav1d_data_ref(dst: *mut Dav1dData, src: *const Dav1dData); - fn dav1d_thread_picture_move_ref(dst: *mut Dav1dThreadPicture, src: *mut Dav1dThreadPicture); fn pthread_attr_init(__attr: *mut pthread_attr_t) -> libc::c_int; fn __sysconf(__name: libc::c_int) -> libc::c_long; - fn dav1d_data_props_set_defaults(props: *mut Dav1dDataProps); - fn dav1d_mem_pool_init(pool: *mut *mut Dav1dMemPool) -> libc::c_int; - fn dav1d_refmvs_init(rf: *mut refmvs_frame); fn pthread_create( __newthread: *mut pthread_t, __attr: *const pthread_attr_t, @@ -74,14 +46,7 @@ extern "C" { ) -> libc::c_int; fn dav1d_refmvs_dsp_init(dsp: *mut Dav1dRefmvsDSPContext); fn pthread_join(__th: pthread_t, __thread_return: *mut *mut libc::c_void) -> libc::c_int; - fn dav1d_refmvs_clear(rf: *mut refmvs_frame); - fn dav1d_cdf_thread_unref(cdf: *mut CdfThreadContext); - fn dav1d_thread_picture_unref(p: *mut Dav1dThreadPicture); - fn dav1d_ref_dec(r#ref: *mut *mut Dav1dRef); - fn dav1d_mem_pool_end(pool: *mut Dav1dMemPool); fn pthread_attr_destroy(__attr: *mut pthread_attr_t) -> libc::c_int; - fn dav1d_default_picture_alloc(p: *mut Dav1dPicture, cookie: *mut libc::c_void) -> libc::c_int; - fn dav1d_default_picture_release(p: *mut Dav1dPicture, cookie: *mut libc::c_void); fn pthread_once( __once_control: *mut pthread_once_t, __init_routine: Option ()>, @@ -102,11 +67,6 @@ extern "C" { -> libc::c_int; fn pthread_cond_broadcast(__cond: *mut pthread_cond_t) -> libc::c_int; fn pthread_cond_destroy(__cond: *mut pthread_cond_t) -> libc::c_int; - fn dav1d_log_default_callback( - cookie: *mut libc::c_void, - format: *const libc::c_char, - ap: ::core::ffi::VaList, - ); fn dav1d_log(c: *mut Dav1dContext, format: *const libc::c_char, _: ...); fn dav1d_parse_obus( c: *mut Dav1dContext, @@ -118,7 +78,6 @@ extern "C" { out: *mut Dav1dPicture, in_0: *const Dav1dPicture, ); - fn dav1d_worker_task(data: *mut libc::c_void) -> *mut libc::c_void; fn dav1d_decode_frame_exit(f: *mut Dav1dFrameContext, retval: libc::c_int); fn dav1d_init_wedge_masks(); fn dav1d_init_interintra_masks(); @@ -126,7 +85,19 @@ extern "C" { use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::common::Dav1dUserData; use crate::include::stdatomic::atomic_int; +use crate::src::cpu::dav1d_init_cpu; +use crate::src::data::dav1d_data_create_internal; +use crate::src::data::dav1d_data_props_copy; +use crate::src::data::dav1d_data_props_set_defaults; +use crate::src::data::dav1d_data_props_unref_internal; +use crate::src::data::dav1d_data_ref; +use crate::src::data::dav1d_data_unref_internal; +use crate::src::data::dav1d_data_wrap_internal; +use crate::src::data::dav1d_data_wrap_user_data_internal; +use crate::src::log::dav1d_log_default_callback; +use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::Dav1dRef; +use crate::src::thread_task::dav1d_worker_task; use crate::include::dav1d::headers::Dav1dWarpedMotionParams; @@ -216,6 +187,8 @@ use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_NONE; use crate::src::internal::Dav1dContext_intra_edge; use crate::src::intra_edge::EdgeFlags; +use crate::src::refmvs::dav1d_refmvs_clear; +use crate::src::refmvs::dav1d_refmvs_init; use crate::src::refmvs::Dav1dRefmvsDSPContext; #[derive(Copy, Clone)] #[repr(C)] @@ -523,12 +496,22 @@ pub type generate_grain_uv_fn = Option< pub type generate_grain_y_fn = Option ()>; use crate::include::stdatomic::atomic_uint; +use crate::src::cdf::dav1d_cdf_thread_unref; use crate::src::cdf::CdfThreadContext; use crate::src::internal::Dav1dContext_frame_thread; use crate::src::internal::Dav1dContext_refs; use crate::src::internal::Dav1dTileGroup; use crate::src::internal::TaskThreadData; +use crate::src::picture::dav1d_default_picture_alloc; +use crate::src::picture::dav1d_default_picture_release; +use crate::src::picture::dav1d_picture_get_event_flags; +use crate::src::picture::dav1d_picture_move_ref; +use crate::src::picture::dav1d_picture_ref; +use crate::src::picture::dav1d_picture_unref_internal; +use crate::src::picture::dav1d_thread_picture_move_ref; +use crate::src::picture::dav1d_thread_picture_ref; +use crate::src::picture::dav1d_thread_picture_unref; use crate::src::picture::Dav1dThreadPicture; use libc::pthread_cond_t; #[derive(Copy, Clone)] @@ -696,6 +679,8 @@ use crate::include::common::intops::umin; use crate::src::mem::dav1d_alloc_aligned; use crate::src::mem::dav1d_free_aligned; use crate::src::mem::dav1d_freep_aligned; +use crate::src::mem::dav1d_mem_pool_end; +use crate::src::mem::dav1d_mem_pool_init; use crate::src::mem::freep; #[cold] unsafe extern "C" fn init_internal() { diff --git a/src/log.rs b/src/log.rs index 36036982e..1b7b38fc3 100644 --- a/src/log.rs +++ b/src/log.rs @@ -538,7 +538,7 @@ pub type recon_b_intra_fn = Option< unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), >; use crate::src::internal::ScalableMotionParams; -#[no_mangle] + #[cold] pub unsafe extern "C" fn dav1d_log_default_callback( _cookie: *mut libc::c_void, diff --git a/src/mem.rs b/src/mem.rs index 0771dde28..74b892c32 100644 --- a/src/mem.rs +++ b/src/mem.rs @@ -79,11 +79,8 @@ unsafe extern "C" fn mem_pool_destroy(pool: *mut Dav1dMemPool) { pthread_mutex_destroy(&mut (*pool).lock); free(pool as *mut libc::c_void); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_mem_pool_push( - pool: *mut Dav1dMemPool, - buf: *mut Dav1dMemPoolBuffer, -) { + +pub unsafe fn dav1d_mem_pool_push(pool: *mut Dav1dMemPool, buf: *mut Dav1dMemPoolBuffer) { pthread_mutex_lock(&mut (*pool).lock); (*pool).ref_cnt -= 1; let ref_cnt = (*pool).ref_cnt; @@ -102,11 +99,8 @@ pub unsafe extern "C" fn dav1d_mem_pool_push( } }; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_mem_pool_pop( - pool: *mut Dav1dMemPool, - size: size_t, -) -> *mut Dav1dMemPoolBuffer { + +pub unsafe fn dav1d_mem_pool_pop(pool: *mut Dav1dMemPool, size: size_t) -> *mut Dav1dMemPoolBuffer { if size & ::core::mem::size_of::<*mut libc::c_void>().wrapping_sub(1) != 0 { unreachable!(); } @@ -152,9 +146,9 @@ pub unsafe extern "C" fn dav1d_mem_pool_pop( } return buf; } -#[no_mangle] + #[cold] -pub unsafe extern "C" fn dav1d_mem_pool_init(ppool: *mut *mut Dav1dMemPool) -> libc::c_int { +pub unsafe fn dav1d_mem_pool_init(ppool: *mut *mut Dav1dMemPool) -> libc::c_int { let pool: *mut Dav1dMemPool = malloc(::core::mem::size_of::() as libc::c_ulong) as *mut Dav1dMemPool; if !pool.is_null() { @@ -170,9 +164,9 @@ pub unsafe extern "C" fn dav1d_mem_pool_init(ppool: *mut *mut Dav1dMemPool) -> l *ppool = 0 as *mut Dav1dMemPool; return -(12 as libc::c_int); } -#[no_mangle] + #[cold] -pub unsafe extern "C" fn dav1d_mem_pool_end(pool: *mut Dav1dMemPool) { +pub unsafe fn dav1d_mem_pool_end(pool: *mut Dav1dMemPool) { if !pool.is_null() { pthread_mutex_lock(&mut (*pool).lock); let mut buf: *mut Dav1dMemPoolBuffer = (*pool).buf; diff --git a/src/obu.rs b/src/obu.rs index 523a5f391..c18f18521 100644 --- a/src/obu.rs +++ b/src/obu.rs @@ -11,17 +11,6 @@ extern "C" { fn pthread_mutex_unlock(__mutex: *mut pthread_mutex_t) -> libc::c_int; fn pthread_cond_wait(__cond: *mut pthread_cond_t, __mutex: *mut pthread_mutex_t) -> libc::c_int; - fn dav1d_ref_create(size: size_t) -> *mut Dav1dRef; - fn dav1d_ref_create_using_pool(pool: *mut Dav1dMemPool, size: size_t) -> *mut Dav1dRef; - fn dav1d_ref_dec(r#ref: *mut *mut Dav1dRef); - fn dav1d_cdf_thread_ref(dst: *mut CdfThreadContext, src: *mut CdfThreadContext); - fn dav1d_cdf_thread_unref(cdf: *mut CdfThreadContext); - fn dav1d_data_ref(dst: *mut Dav1dData, src: *const Dav1dData); - fn dav1d_data_props_copy(dst: *mut Dav1dDataProps, src: *const Dav1dDataProps); - fn dav1d_data_unref_internal(buf: *mut Dav1dData); - fn dav1d_thread_picture_ref(dst: *mut Dav1dThreadPicture, src: *const Dav1dThreadPicture); - fn dav1d_thread_picture_unref(p: *mut Dav1dThreadPicture); - fn dav1d_picture_get_event_flags(p: *const Dav1dThreadPicture) -> Dav1dEventFlags; fn dav1d_init_get_bits(c: *mut GetBits, data: *const uint8_t, sz: size_t); fn dav1d_get_bit(c: *mut GetBits) -> libc::c_uint; fn dav1d_get_bits(c: *mut GetBits, n: libc::c_int) -> libc::c_uint; @@ -39,6 +28,12 @@ use crate::src::tables::dav1d_default_wm_params; use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::data::Dav1dData; use crate::include::stdatomic::atomic_int; +use crate::src::data::dav1d_data_props_copy; +use crate::src::data::dav1d_data_ref; +use crate::src::data::dav1d_data_unref_internal; +use crate::src::r#ref::dav1d_ref_create; +use crate::src::r#ref::dav1d_ref_create_using_pool; +use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::Dav1dRef; use crate::include::stdatomic::atomic_uint; @@ -615,11 +610,16 @@ pub type generate_grain_uv_fn = Option< >; pub type generate_grain_y_fn = Option ()>; +use crate::src::cdf::dav1d_cdf_thread_ref; +use crate::src::cdf::dav1d_cdf_thread_unref; use crate::src::cdf::CdfThreadContext; use crate::src::internal::Dav1dContext_frame_thread; use crate::src::internal::Dav1dContext_refs; use crate::src::internal::Dav1dTileGroup; +use crate::src::picture::dav1d_picture_get_event_flags; +use crate::src::picture::dav1d_thread_picture_ref; +use crate::src::picture::dav1d_thread_picture_unref; use crate::src::picture::Dav1dThreadPicture; pub type backup_ipred_edge_fn = Option ()>; pub type filter_sbrow_fn = Option ()>; diff --git a/src/picture.rs b/src/picture.rs index d8dc867cc..127fcaa9d 100644 --- a/src/picture.rs +++ b/src/picture.rs @@ -9,22 +9,16 @@ extern "C" { fn free(_: *mut libc::c_void); fn memset(_: *mut libc::c_void, _: libc::c_int, _: size_t) -> *mut libc::c_void; fn strerror(_: libc::c_int) -> *mut libc::c_char; - fn dav1d_mem_pool_push(pool: *mut Dav1dMemPool, buf: *mut Dav1dMemPoolBuffer); - fn dav1d_mem_pool_pop(pool: *mut Dav1dMemPool, size: size_t) -> *mut Dav1dMemPoolBuffer; - fn dav1d_ref_wrap( - ptr: *const uint8_t, - free_callback: Option ()>, - user_data: *mut libc::c_void, - ) -> *mut Dav1dRef; - fn dav1d_ref_dec(r#ref: *mut *mut Dav1dRef); - fn dav1d_data_props_copy(dst: *mut Dav1dDataProps, src: *const Dav1dDataProps); - fn dav1d_data_props_set_defaults(props: *mut Dav1dDataProps); fn dav1d_log(c: *mut Dav1dContext, format: *const libc::c_char, _: ...); } use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::data::Dav1dData; use crate::include::stdatomic::atomic_int; use crate::include::stdatomic::atomic_uint; +use crate::src::data::dav1d_data_props_copy; +use crate::src::data::dav1d_data_props_set_defaults; +use crate::src::r#ref::dav1d_ref_dec; +use crate::src::r#ref::dav1d_ref_wrap; use crate::src::r#ref::Dav1dRef; #[derive(Copy, Clone)] #[repr(C)] @@ -229,6 +223,8 @@ use crate::include::dav1d::dav1d::Dav1dEventFlags; use crate::include::dav1d::dav1d::Dav1dLogger; use crate::include::dav1d::dav1d::DAV1D_EVENT_FLAG_NEW_OP_PARAMS_INFO; use crate::include::dav1d::dav1d::DAV1D_EVENT_FLAG_NEW_SEQUENCE; +use crate::src::mem::dav1d_mem_pool_pop; +use crate::src::mem::dav1d_mem_pool_push; use crate::src::mem::Dav1dMemPool; use crate::src::mem::Dav1dMemPoolBuffer; pub type PictureFlags = libc::c_uint; @@ -578,7 +574,7 @@ pub struct pic_ctx_context { pub extra_ptr: *mut libc::c_void, } use crate::src::r#ref::dav1d_ref_inc; -#[no_mangle] + pub unsafe extern "C" fn dav1d_default_picture_alloc( p: *mut Dav1dPicture, cookie: *mut libc::c_void, @@ -637,7 +633,7 @@ pub unsafe extern "C" fn dav1d_default_picture_alloc( }) as *mut libc::c_void; return 0 as libc::c_int; } -#[no_mangle] + pub unsafe extern "C" fn dav1d_default_picture_release( p: *mut Dav1dPicture, cookie: *mut libc::c_void, @@ -842,8 +838,8 @@ pub unsafe extern "C" fn dav1d_picture_alloc_copy( ); return res; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_picture_ref(dst: *mut Dav1dPicture, src: *const Dav1dPicture) { + +pub unsafe fn dav1d_picture_ref(dst: *mut Dav1dPicture, src: *const Dav1dPicture) { if dst.is_null() { fprintf( stderr, @@ -908,8 +904,8 @@ pub unsafe extern "C" fn dav1d_picture_ref(dst: *mut Dav1dPicture, src: *const D } *dst = *src; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_picture_move_ref(dst: *mut Dav1dPicture, src: *mut Dav1dPicture) { + +pub unsafe fn dav1d_picture_move_ref(dst: *mut Dav1dPicture, src: *mut Dav1dPicture) { if dst.is_null() { fprintf( stderr, @@ -968,8 +964,8 @@ pub unsafe extern "C" fn dav1d_picture_move_ref(dst: *mut Dav1dPicture, src: *mu ::core::mem::size_of::(), ); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_thread_picture_ref( + +pub unsafe fn dav1d_thread_picture_ref( dst: *mut Dav1dThreadPicture, src: *const Dav1dThreadPicture, ) { @@ -979,8 +975,8 @@ pub unsafe extern "C" fn dav1d_thread_picture_ref( (*dst).progress = (*src).progress; (*dst).flags = (*src).flags; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_thread_picture_move_ref( + +pub unsafe fn dav1d_thread_picture_move_ref( dst: *mut Dav1dThreadPicture, src: *mut Dav1dThreadPicture, ) { @@ -995,8 +991,8 @@ pub unsafe extern "C" fn dav1d_thread_picture_move_ref( ::core::mem::size_of::(), ); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_picture_unref_internal(p: *mut Dav1dPicture) { + +pub unsafe fn dav1d_picture_unref_internal(p: *mut Dav1dPicture) { if p.is_null() { fprintf( stderr, @@ -1038,15 +1034,13 @@ pub unsafe extern "C" fn dav1d_picture_unref_internal(p: *mut Dav1dPicture) { ); dav1d_data_props_set_defaults(&mut (*p).m); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_thread_picture_unref(p: *mut Dav1dThreadPicture) { + +pub unsafe fn dav1d_thread_picture_unref(p: *mut Dav1dThreadPicture) { dav1d_picture_unref_internal(&mut (*p).p); (*p).progress = 0 as *mut atomic_uint; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_picture_get_event_flags( - p: *const Dav1dThreadPicture, -) -> Dav1dEventFlags { + +pub unsafe fn dav1d_picture_get_event_flags(p: *const Dav1dThreadPicture) -> Dav1dEventFlags { if (*p).flags as u64 == 0 { return 0 as Dav1dEventFlags; } diff --git a/src/ref.rs b/src/ref.rs index c5fd3991c..576c46116 100644 --- a/src/ref.rs +++ b/src/ref.rs @@ -9,8 +9,6 @@ extern "C" { __alignment: size_t, __size: size_t, ) -> libc::c_int; - fn dav1d_mem_pool_push(pool: *mut Dav1dMemPool, buf: *mut Dav1dMemPoolBuffer); - fn dav1d_mem_pool_pop(pool: *mut Dav1dMemPool, size: size_t) -> *mut Dav1dMemPoolBuffer; } #[derive(Copy, Clone)] #[repr(C)] @@ -26,6 +24,8 @@ use crate::include::stdatomic::atomic_int; use crate::src::mem::dav1d_alloc_aligned; use crate::src::mem::dav1d_free_aligned; +use crate::src::mem::dav1d_mem_pool_pop; +use crate::src::mem::dav1d_mem_pool_push; use crate::src::mem::Dav1dMemPool; use crate::src::mem::Dav1dMemPoolBuffer; @@ -40,8 +40,8 @@ unsafe extern "C" fn default_free_callback(data: *const uint8_t, user_data: *mut } dav1d_free_aligned(user_data); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_ref_create(mut size: size_t) -> *mut Dav1dRef { + +pub unsafe fn dav1d_ref_create(mut size: size_t) -> *mut Dav1dRef { size = size .wrapping_add(::core::mem::size_of::<*mut libc::c_void>()) .wrapping_sub(1) @@ -70,8 +70,8 @@ unsafe extern "C" fn pool_free_callback(data: *const uint8_t, user_data: *mut li user_data as *mut Dav1dMemPoolBuffer, ); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_ref_create_using_pool( + +pub unsafe fn dav1d_ref_create_using_pool( pool: *mut Dav1dMemPool, mut size: size_t, ) -> *mut Dav1dRef { @@ -95,8 +95,8 @@ pub unsafe extern "C" fn dav1d_ref_create_using_pool( (*res).user_data = buf as *mut libc::c_void; return res; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_ref_wrap( + +pub unsafe fn dav1d_ref_wrap( ptr: *const uint8_t, mut free_callback: Option ()>, user_data: *mut libc::c_void, @@ -114,8 +114,8 @@ pub unsafe extern "C" fn dav1d_ref_wrap( (*res).user_data = user_data; return res; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_ref_dec(pref: *mut *mut Dav1dRef) { + +pub unsafe fn dav1d_ref_dec(pref: *mut *mut Dav1dRef) { if pref.is_null() { unreachable!(); } diff --git a/src/refmvs.rs b/src/refmvs.rs index f23d3689b..0df8b9c7d 100644 --- a/src/refmvs.rs +++ b/src/refmvs.rs @@ -1124,8 +1124,7 @@ pub unsafe fn dav1d_refmvs_find( // cache the current tile/sbrow (or frame/sbrow)'s projectable motion vectors // into buffers for use in future frame's temporal MV prediction -#[no_mangle] -pub unsafe extern "C" fn dav1d_refmvs_save_tmvs( +pub unsafe fn dav1d_refmvs_save_tmvs( dsp: *const Dav1dRefmvsDSPContext, rt: *const refmvs_tile, col_start8: libc::c_int, @@ -1158,8 +1157,7 @@ pub unsafe extern "C" fn dav1d_refmvs_save_tmvs( ); } -#[no_mangle] -pub unsafe extern "C" fn dav1d_refmvs_tile_sbrow_init( +pub unsafe fn dav1d_refmvs_tile_sbrow_init( rt: *mut refmvs_tile, rf: *const refmvs_frame, tile_col_start4: libc::c_int, @@ -1405,8 +1403,8 @@ pub unsafe extern "C" fn save_tmvs_c( y += 1; } } -#[no_mangle] -pub unsafe extern "C" fn dav1d_refmvs_init_frame( + +pub unsafe fn dav1d_refmvs_init_frame( rf: *mut refmvs_frame, seq_hdr: *const Dav1dSequenceHeader, frm_hdr: *const Dav1dFrameHeader, @@ -1582,15 +1580,15 @@ pub unsafe extern "C" fn dav1d_refmvs_init_frame( (*rf).use_ref_frame_mvs = ((*rf).n_mfmvs > 0) as libc::c_int; return 0 as libc::c_int; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_refmvs_init(rf: *mut refmvs_frame) { + +pub unsafe fn dav1d_refmvs_init(rf: *mut refmvs_frame) { (*rf).r = 0 as *mut refmvs_block; (*rf).r_stride = 0 as libc::c_int as ptrdiff_t; (*rf).rp_proj = 0 as *mut refmvs_temporal_block; (*rf).rp_stride = 0 as libc::c_int as ptrdiff_t; } -#[no_mangle] -pub unsafe extern "C" fn dav1d_refmvs_clear(rf: *mut refmvs_frame) { + +pub unsafe fn dav1d_refmvs_clear(rf: *mut refmvs_frame) { if !((*rf).r).is_null() { dav1d_freep_aligned(&mut (*rf).r as *mut *mut refmvs_block as *mut libc::c_void); } diff --git a/src/thread_task.rs b/src/thread_task.rs index 0e81e3c92..23ea27cd5 100644 --- a/src/thread_task.rs +++ b/src/thread_task.rs @@ -1,6 +1,5 @@ use crate::include::stddef::*; use crate::include::stdint::*; -use crate::src::cdf::CdfContext; use ::libc; use cfg_if::cfg_if; extern "C" { @@ -19,11 +18,6 @@ extern "C" { fn pthread_setname_np(name: *const libc::c_char); } } - fn dav1d_cdf_thread_update( - hdr: *const Dav1dFrameHeader, - dst: *mut CdfContext, - src: *const CdfContext, - ); fn dav1d_decode_frame_init(f: *mut Dav1dFrameContext) -> libc::c_int; fn dav1d_decode_frame_init_cdf(f: *mut Dav1dFrameContext) -> libc::c_int; fn dav1d_decode_tile_sbrow(t: *mut Dav1dTaskContext) -> libc::c_int; @@ -604,6 +598,7 @@ pub type generate_grain_uv_fn = Option< >; pub type generate_grain_y_fn = Option ()>; +use crate::src::cdf::dav1d_cdf_thread_update; use crate::src::cdf::CdfThreadContext; use crate::src::internal::Dav1dContext_frame_thread; @@ -1506,7 +1501,7 @@ unsafe extern "C" fn delayed_fg_task(c: *const Dav1dContext, ttd: *mut TaskThrea pthread_cond_signal(&mut (*ttd).delayed_fg.cond); } } -#[no_mangle] + pub unsafe extern "C" fn dav1d_worker_task(mut data: *mut libc::c_void) -> *mut libc::c_void { let mut flush = 0; let mut error_0 = 0; diff --git a/tools/dav1d_cli_parse.rs b/tools/dav1d_cli_parse.rs index 3524223c3..2513432c2 100644 --- a/tools/dav1d_cli_parse.rs +++ b/tools/dav1d_cli_parse.rs @@ -26,7 +26,6 @@ extern "C" { fn memset(_: *mut libc::c_void, _: libc::c_int, _: libc::c_ulong) -> *mut libc::c_void; fn dav1d_version() -> *const libc::c_char; fn dav1d_default_settings(s: *mut Dav1dSettings); - fn dav1d_set_cpu_flags_mask(mask: libc::c_uint); } #[derive(Copy, Clone)] #[repr(C)] @@ -50,6 +49,7 @@ use rav1d::include::dav1d::dav1d::DAV1D_INLOOPFILTER_DEBLOCK; use rav1d::include::dav1d::dav1d::DAV1D_INLOOPFILTER_NONE; use rav1d::include::dav1d::dav1d::DAV1D_INLOOPFILTER_RESTORATION; use rav1d::include::dav1d::picture::Dav1dPicAllocator; +use rav1d::src::cpu::dav1d_set_cpu_flags_mask; #[derive(Copy, Clone)] #[repr(C)] pub struct Dav1dSettings {