diff --git a/include/dav1d/dav1d.rs b/include/dav1d/dav1d.rs index ac8739aee..5821c9c64 100644 --- a/include/dav1d/dav1d.rs +++ b/include/dav1d/dav1d.rs @@ -1,3 +1,6 @@ +pub use crate::src::internal::Dav1dContext; +pub use crate::src::r#ref::Dav1dRef; + #[derive(Clone)] #[repr(C)] pub struct Dav1dLogger { diff --git a/lib.rs b/lib.rs index 61956e3d3..866942261 100644 --- a/lib.rs +++ b/lib.rs @@ -59,7 +59,8 @@ pub mod src { #[cfg(feature = "bitdepth_8")] mod filmgrain_tmpl_8; mod getbits; - mod internal; + // TODO(kkysen) Temporarily `pub(crate)` due to a `pub use` until TAIT. + pub(super) mod internal; mod intra_edge; mod ipred; mod ipred_prepare; @@ -107,7 +108,7 @@ pub mod src { mod recon_tmpl_16; #[cfg(feature = "bitdepth_8")] mod recon_tmpl_8; - pub mod r#ref; + pub(crate) mod r#ref; mod refmvs; mod scan; mod tables; diff --git a/src/cdef_apply_tmpl_16.rs b/src/cdef_apply_tmpl_16.rs index bda7d8602..2fac73915 100644 --- a/src/cdef_apply_tmpl_16.rs +++ b/src/cdef_apply_tmpl_16.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -10,218 +9,21 @@ extern "C" { } pub type pixel = uint16_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; +use crate::src::internal::Dav1dFrameContext; -use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::Dav1dPixelLayout; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; + use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I422; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - use crate::src::align::Align16; -use crate::src::internal::Dav1dFrameContext_frame_thread; -use crate::src::internal::Dav1dFrameContext_lf; use crate::src::lf_mask::Av1Filter; -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; +use crate::src::internal::Dav1dTaskContext; use crate::src::internal::Dav1dDSPContext; @@ -231,20 +33,7 @@ use crate::src::cdef::CDEF_HAVE_BOTTOM; use crate::src::cdef::CDEF_HAVE_LEFT; use crate::src::cdef::CDEF_HAVE_RIGHT; use crate::src::cdef::CDEF_HAVE_TOP; -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::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; pub type Backup2x8Flags = libc::c_uint; pub const BACKUP_2X8_UV: Backup2x8Flags = 2; pub const BACKUP_2X8_Y: Backup2x8Flags = 1; diff --git a/src/cdef_apply_tmpl_8.rs b/src/cdef_apply_tmpl_8.rs index 7461155b2..816fcc34d 100644 --- a/src/cdef_apply_tmpl_8.rs +++ b/src/cdef_apply_tmpl_8.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -10,219 +9,20 @@ extern "C" { } pub type pixel = uint8_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; +use crate::src::internal::Dav1dFrameContext; -use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::Dav1dPixelLayout; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I422; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; - -use crate::include::dav1d::headers::Dav1dSequenceHeader; - use crate::src::align::Align16; -use crate::src::internal::Dav1dFrameContext_frame_thread; -use crate::src::internal::Dav1dFrameContext_lf; use crate::src::lf_mask::Av1Filter; -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; +use crate::src::internal::Dav1dTaskContext; use crate::src::internal::Dav1dDSPContext; @@ -232,20 +32,7 @@ use crate::src::cdef::CDEF_HAVE_BOTTOM; use crate::src::cdef::CDEF_HAVE_LEFT; use crate::src::cdef::CDEF_HAVE_RIGHT; use crate::src::cdef::CDEF_HAVE_TOP; -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::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; pub type Backup2x8Flags = libc::c_uint; pub const BACKUP_2X8_UV: Backup2x8Flags = 2; pub const BACKUP_2X8_Y: Backup2x8Flags = 1; diff --git a/src/cdf.rs b/src/cdf.rs index 949228737..760acfdcf 100644 --- a/src/cdf.rs +++ b/src/cdf.rs @@ -1,7 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; -use crate::include::stddef::*; use crate::include::stdint::*; use crate::src::align::*; @@ -13,147 +11,19 @@ extern "C" { use crate::src::tables::dav1d_partition_type_count; -use crate::include::stdatomic::atomic_int; 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; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; + use crate::include::dav1d::headers::Dav1dFrameHeader; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; use crate::include::dav1d::headers::DAV1D_N_SWITCHABLE_FILTERS; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - use crate::src::align::Align16; -use crate::src::internal::Dav1dFrameContext_lf; -use crate::src::lf_mask::Av1Filter; - -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; use crate::src::levels::N_BS_SIZES; -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; #[repr(C)] pub struct CdfContext { @@ -255,78 +125,7 @@ pub struct CdfModeContext { pub pal_uv: Align4<[[uint16_t; 2]; 2]>, pub intrabc: Align4<[uint16_t; 2]>, } -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - -use crate::src::internal::Dav1dDSPContext; +use crate::src::internal::Dav1dContext; #[derive(Clone)] #[repr(C)] @@ -343,19 +142,6 @@ pub union CdfThreadContext_data { pub qcat: libc::c_uint, } -use crate::src::internal::Dav1dContext_frame_thread; -use crate::src::internal::Dav1dContext_refs; -use crate::src::internal::Dav1dTileGroup; -use crate::src::picture::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; - use crate::src::levels::N_BL_LEVELS; use crate::src::levels::N_COMP_INTER_PRED_MODES; use crate::src::levels::N_INTRA_PRED_MODES; diff --git a/src/decode.rs b/src/decode.rs index 5899ddd13..db0c21d9d 100644 --- a/src/decode.rs +++ b/src/decode.rs @@ -174,83 +174,19 @@ use crate::src::warpmv::dav1d_find_affine_int; use crate::src::warpmv::dav1d_get_shear_params; use crate::src::warpmv::dav1d_set_affine_mv2d; -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; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; + +use crate::src::internal::Dav1dFrameContext; + use libc::pthread_cond_signal; use libc::pthread_cond_wait; use libc::pthread_mutex_lock; use libc::pthread_mutex_unlock; -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::TaskThreadData; use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::Dav1dWarpedMotionParams; @@ -277,8 +213,7 @@ use crate::include::dav1d::headers::DAV1D_RESTORATION_SWITCHABLE; use crate::include::dav1d::headers::DAV1D_RESTORATION_WIENER; use crate::src::internal::CodedBlockInfo; -use crate::src::internal::Dav1dFrameContext_frame_thread; -use crate::src::internal::Dav1dFrameContext_lf; + use crate::src::levels::Av1Block; use crate::src::levels::MotionMode; use crate::src::lf_mask::Av1Filter; @@ -290,170 +225,30 @@ use crate::src::levels::mv; use crate::src::env::BlockContext; use crate::src::refmvs::refmvs_block; use crate::src::refmvs::refmvs_block_unaligned; -use crate::src::refmvs::refmvs_frame; + use crate::src::refmvs::refmvs_mvpair; use crate::src::refmvs::refmvs_refpair; use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} - -impl Dav1dFrameContext_bd_fn { - pub unsafe fn recon_b_intra( - &self, - context: *mut Dav1dTaskContext, - block_size: BlockSize, - flags: EdgeFlags, - block: *const Av1Block, - ) { - self.recon_b_intra.expect("non-null function pointer")(context, block_size, flags, block); - } - - pub unsafe fn recon_b_inter( - &self, - context: *mut Dav1dTaskContext, - block_size: BlockSize, - block: *const Av1Block, - ) -> libc::c_int { - self.recon_b_inter.expect("non-null function pointer")(context, block_size, block) - } - pub unsafe fn read_coef_blocks( - &self, - context: *mut Dav1dTaskContext, - block_size: BlockSize, - block: *const Av1Block, - ) { - self.read_coef_blocks.expect("non-null function pointer")(context, block_size, block); - } -} - -pub type read_coef_blocks_fn = - Option ()>; use crate::src::levels::BlockSize; +use crate::src::internal::Dav1dTaskContext; use crate::src::levels::BS_128x128; use crate::src::levels::BS_4x4; use crate::src::levels::BS_64x64; -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; use crate::src::levels::FILTER_2D_BILINEAR; -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - use crate::src::internal::Dav1dTileState; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; +use crate::src::internal::Dav1dContext; -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; use crate::src::intra_edge::EdgeFlags; use crate::src::intra_edge::EdgeTip; use crate::src::intra_edge::EdgeBranch; use crate::src::intra_edge::EdgeNode; use crate::src::intra_edge::EDGE_I444_TOP_HAS_RIGHT; -use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::cdef::Dav1dCdefDSPContext; use crate::src::cdf::dav1d_cdf_thread_copy; @@ -463,13 +258,11 @@ use crate::src::cdf::dav1d_cdf_thread_unref; use crate::src::cdf::dav1d_cdf_thread_update; use crate::src::cdf::CdfThreadContext; use crate::src::filmgrain::Dav1dFilmGrainDSPContext; -use crate::src::internal::Dav1dDSPContext; + use crate::src::ipred::Dav1dIntraPredDSPContext; use crate::src::itx::Dav1dInvTxfmDSPContext; use crate::src::loopfilter::Dav1dLoopFilterDSPContext; -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; @@ -477,13 +270,7 @@ 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 ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; + use crate::src::internal::ScalableMotionParams; use crate::src::levels::BlockLevel; use crate::src::levels::TX_4X4; diff --git a/src/internal.rs b/src/internal.rs index 8f0725a8e..36847170e 100644 --- a/src/internal.rs +++ b/src/internal.rs @@ -1,9 +1,22 @@ use crate::include::common::bitdepth::DynCoef; use crate::include::common::bitdepth::DynPixel; +use crate::include::dav1d::common::Dav1dDataProps; use crate::include::dav1d::data::Dav1dData; +use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; +use crate::include::dav1d::dav1d::Dav1dEventFlags; +use crate::include::dav1d::dav1d::Dav1dInloopFilterType; +use crate::include::dav1d::dav1d::Dav1dLogger; +use crate::include::dav1d::headers::Dav1dContentLightLevel; +use crate::include::dav1d::headers::Dav1dFrameHeader; +use crate::include::dav1d::headers::Dav1dITUTT35; +use crate::include::dav1d::headers::Dav1dMasteringDisplay; +use crate::include::dav1d::headers::Dav1dSequenceHeader; +use crate::include::dav1d::headers::Dav1dWarpedMotionParams; +use crate::include::dav1d::picture::Dav1dPicAllocator; use crate::include::dav1d::picture::Dav1dPicture; use crate::include::stdatomic::atomic_int; use crate::include::stdatomic::atomic_uint; +use crate::include::stddef::ptrdiff_t; use crate::include::stdint::int16_t; use crate::include::stdint::int32_t; use crate::include::stdint::int8_t; @@ -12,13 +25,18 @@ use crate::include::stdint::uint8_t; use crate::src::align::*; use crate::src::cdef::Dav1dCdefDSPContext; use crate::src::cdf::CdfContext; +use crate::src::cdf::CdfThreadContext; +use crate::src::env::BlockContext; use crate::src::filmgrain::Dav1dFilmGrainDSPContext; use crate::src::intra_edge::EdgeBranch; +use crate::src::intra_edge::EdgeFlags; use crate::src::intra_edge::EdgeNode; use crate::src::intra_edge::EdgeTip; use crate::src::ipred::Dav1dIntraPredDSPContext; use crate::src::itx::Dav1dInvTxfmDSPContext; use crate::src::levels::Av1Block; +use crate::src::levels::BlockSize; +use crate::src::levels::Filter2d; use crate::src::lf_mask::Av1Filter; use crate::src::lf_mask::Av1FilterLUT; use crate::src::lf_mask::Av1Restoration; @@ -26,9 +44,20 @@ use crate::src::lf_mask::Av1RestorationUnit; use crate::src::loopfilter::Dav1dLoopFilterDSPContext; use crate::src::looprestoration::Dav1dLoopRestorationDSPContext; use crate::src::mc::Dav1dMCDSPContext; +use crate::src::mem::Dav1dMemPool; use crate::src::msac::MsacContext; use crate::src::picture::Dav1dThreadPicture; +use crate::src::picture::PictureFlags; use crate::src::r#ref::Dav1dRef; +use crate::src::recon::backup_ipred_edge_fn; +use crate::src::recon::filter_sbrow_fn; +use crate::src::recon::read_coef_blocks_fn; +use crate::src::recon::recon_b_inter_fn; +use crate::src::recon::recon_b_intra_fn; +use crate::src::refmvs::refmvs_frame; +use crate::src::refmvs::refmvs_temporal_block; +use crate::src::refmvs::refmvs_tile; +use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::thread_data::thread_data; use libc::pthread_cond_t; @@ -134,6 +163,63 @@ pub struct Dav1dContext_intra_edge { pub tip_sb64: [EdgeTip; 64], } +#[repr(C)] +pub struct Dav1dContext { + pub(crate) fc: *mut Dav1dFrameContext, + pub(crate) n_fc: libc::c_uint, + pub(crate) tc: *mut Dav1dTaskContext, + pub(crate) n_tc: libc::c_uint, + pub(crate) tile: *mut Dav1dTileGroup, + pub(crate) n_tile_data_alloc: libc::c_int, + pub(crate) n_tile_data: libc::c_int, + pub(crate) n_tiles: libc::c_int, + pub(crate) seq_hdr_pool: *mut Dav1dMemPool, + pub(crate) seq_hdr_ref: *mut Dav1dRef, + pub(crate) seq_hdr: *mut Dav1dSequenceHeader, + pub(crate) frame_hdr_pool: *mut Dav1dMemPool, + pub(crate) frame_hdr_ref: *mut Dav1dRef, + pub(crate) frame_hdr: *mut Dav1dFrameHeader, + pub(crate) content_light_ref: *mut Dav1dRef, + pub(crate) content_light: *mut Dav1dContentLightLevel, + pub(crate) mastering_display_ref: *mut Dav1dRef, + pub(crate) mastering_display: *mut Dav1dMasteringDisplay, + pub(crate) itut_t35_ref: *mut Dav1dRef, + pub(crate) itut_t35: *mut Dav1dITUTT35, + pub(crate) in_0: Dav1dData, + pub(crate) out: Dav1dThreadPicture, + pub(crate) cache: Dav1dThreadPicture, + pub(crate) flush_mem: atomic_int, + pub(crate) flush: *mut atomic_int, + pub(crate) frame_thread: Dav1dContext_frame_thread, + pub(crate) task_thread: TaskThreadData, + pub(crate) segmap_pool: *mut Dav1dMemPool, + pub(crate) refmvs_pool: *mut Dav1dMemPool, + pub(crate) refs: [Dav1dContext_refs; 8], + pub(crate) cdf_pool: *mut Dav1dMemPool, + pub(crate) cdf: [CdfThreadContext; 8], + pub(crate) dsp: [Dav1dDSPContext; 3], + pub(crate) refmvs_dsp: Dav1dRefmvsDSPContext, + pub(crate) intra_edge: Dav1dContext_intra_edge, + pub(crate) allocator: Dav1dPicAllocator, + pub(crate) apply_grain: libc::c_int, + pub(crate) operating_point: libc::c_int, + pub(crate) operating_point_idc: libc::c_uint, + pub(crate) all_layers: libc::c_int, + pub(crate) max_spatial_id: libc::c_int, + pub(crate) frame_size_limit: libc::c_uint, + pub(crate) strict_std_compliance: libc::c_int, + pub(crate) output_invisible_frames: libc::c_int, + pub(crate) inloop_filters: Dav1dInloopFilterType, + pub(crate) decode_frame_type: Dav1dDecodeFrameType, + pub(crate) drain: libc::c_int, + pub(crate) frame_flags: PictureFlags, + pub(crate) event_flags: Dav1dEventFlags, + pub(crate) cached_error_props: Dav1dDataProps, + pub(crate) cached_error: libc::c_int, + pub(crate) logger: Dav1dLogger, + pub(crate) picture_pool: *mut Dav1dMemPool, +} + #[derive(Clone)] #[repr(C)] pub struct Dav1dTask { @@ -152,6 +238,50 @@ pub struct ScalableMotionParams { pub step: libc::c_int, } +#[repr(C)] +pub struct Dav1dFrameContext_bd_fn { + pub recon_b_intra: recon_b_intra_fn, + pub recon_b_inter: recon_b_inter_fn, + pub filter_sbrow: filter_sbrow_fn, + pub filter_sbrow_deblock_cols: filter_sbrow_fn, + pub filter_sbrow_deblock_rows: filter_sbrow_fn, + pub filter_sbrow_cdef: Option ()>, + pub filter_sbrow_resize: filter_sbrow_fn, + pub filter_sbrow_lr: filter_sbrow_fn, + pub backup_ipred_edge: backup_ipred_edge_fn, + pub read_coef_blocks: read_coef_blocks_fn, +} + +impl Dav1dFrameContext_bd_fn { + pub unsafe fn recon_b_intra( + &self, + context: *mut Dav1dTaskContext, + block_size: BlockSize, + flags: EdgeFlags, + block: *const Av1Block, + ) { + self.recon_b_intra.expect("non-null function pointer")(context, block_size, flags, block); + } + + pub unsafe fn recon_b_inter( + &self, + context: *mut Dav1dTaskContext, + block_size: BlockSize, + block: *const Av1Block, + ) -> libc::c_int { + self.recon_b_inter.expect("non-null function pointer")(context, block_size, block) + } + + pub unsafe fn read_coef_blocks( + &self, + context: *mut Dav1dTaskContext, + block_size: BlockSize, + block: *const Av1Block, + ) { + self.read_coef_blocks.expect("non-null function pointer")(context, block_size, block); + } +} + #[repr(C)] pub struct CodedBlockInfo { pub eob: [int16_t; 3], @@ -243,6 +373,65 @@ pub struct FrameTileThreadData { pub lowest_pixel_mem_sz: libc::c_int, } +#[repr(C)] +pub struct Dav1dFrameContext { + pub seq_hdr_ref: *mut Dav1dRef, + pub seq_hdr: *mut Dav1dSequenceHeader, + pub frame_hdr_ref: *mut Dav1dRef, + pub frame_hdr: *mut Dav1dFrameHeader, + pub refp: [Dav1dThreadPicture; 7], + pub cur: Dav1dPicture, + pub sr_cur: Dav1dThreadPicture, + pub mvs_ref: *mut Dav1dRef, + pub mvs: *mut refmvs_temporal_block, + pub ref_mvs: [*mut refmvs_temporal_block; 7], + pub ref_mvs_ref: [*mut Dav1dRef; 7], + pub cur_segmap_ref: *mut Dav1dRef, + pub prev_segmap_ref: *mut Dav1dRef, + pub cur_segmap: *mut uint8_t, + pub prev_segmap: *const uint8_t, + pub refpoc: [libc::c_uint; 7], + pub refrefpoc: [[libc::c_uint; 7]; 7], + pub gmv_warp_allowed: [uint8_t; 7], + pub in_cdf: CdfThreadContext, + pub out_cdf: CdfThreadContext, + pub tile: *mut Dav1dTileGroup, + pub n_tile_data_alloc: libc::c_int, + pub n_tile_data: libc::c_int, + pub svc: [[ScalableMotionParams; 2]; 7], + pub resize_step: [libc::c_int; 2], + pub resize_start: [libc::c_int; 2], + pub c: *const Dav1dContext, + pub ts: *mut Dav1dTileState, + pub n_ts: libc::c_int, + pub dsp: *const Dav1dDSPContext, + pub bd_fn: Dav1dFrameContext_bd_fn, + pub ipred_edge_sz: libc::c_int, + pub ipred_edge: [*mut DynPixel; 3], + pub b4_stride: ptrdiff_t, + pub w4: libc::c_int, + pub h4: libc::c_int, + pub bw: libc::c_int, + pub bh: libc::c_int, + pub sb128w: libc::c_int, + pub sb128h: libc::c_int, + pub sbh: libc::c_int, + pub sb_shift: libc::c_int, + pub sb_step: libc::c_int, + pub sr_sb128w: libc::c_int, + pub dq: [[[uint16_t; 2]; 3]; 8], + pub qm: [[*const uint8_t; 3]; 19], + pub a: *mut BlockContext, + pub a_sz: libc::c_int, + pub rf: refmvs_frame, + pub jnt_weights: [[uint8_t; 7]; 7], + pub bitdepth_max: libc::c_int, + pub frame_thread: Dav1dFrameContext_frame_thread, + pub lf: Dav1dFrameContext_lf, + pub task_thread: Dav1dFrameContext_task_thread, + pub tile_thread: FrameTileThreadData, +} + #[repr(C)] pub struct Dav1dTileState_tiling { pub col_start: libc::c_int, @@ -375,3 +564,27 @@ pub struct Dav1dTaskContext_task_thread { pub flushed: bool, pub die: bool, } + +#[repr(C)] +pub struct Dav1dTaskContext { + pub c: *const Dav1dContext, + pub f: *const Dav1dFrameContext, + pub ts: *mut Dav1dTileState, + pub bx: libc::c_int, + pub by: libc::c_int, + pub l: BlockContext, + pub a: *mut BlockContext, + pub rt: refmvs_tile, + pub c2rust_unnamed: Dav1dTaskContext_cf, + pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], + pub pal_sz_uv: [[uint8_t; 32]; 2], + pub txtp_map: [uint8_t; 1024], + pub scratch: Dav1dTaskContext_scratch, + pub warpmv: Dav1dWarpedMotionParams, + pub lf_mask: *mut Av1Filter, + pub top_pre_cdef_toggle: libc::c_int, + pub cur_sb_cdef_idx_ptr: *mut int8_t, + pub tl_4x4_filter: Filter2d, + pub frame_thread: Dav1dTaskContext_frame_thread, + pub task_thread: Dav1dTaskContext_task_thread, +} diff --git a/src/levels.rs b/src/levels.rs index 0f5fb6cd8..e0c476efe 100644 --- a/src/levels.rs +++ b/src/levels.rs @@ -209,6 +209,7 @@ impl mv { self == Self::INVALID } + #[allow(dead_code)] pub fn is_valid(self) -> bool { !self.is_invalid() } @@ -391,6 +392,7 @@ impl Av1Block { &mut self.c2rust_unnamed.c2rust_unnamed.y_angle } + #[allow(dead_code)] pub unsafe fn uv_angle(&self) -> i8 { self.c2rust_unnamed.c2rust_unnamed.uv_angle } diff --git a/src/lf_apply_tmpl_16.rs b/src/lf_apply_tmpl_16.rs index b78733325..c7ff33eab 100644 --- a/src/lf_apply_tmpl_16.rs +++ b/src/lf_apply_tmpl_16.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -10,232 +9,20 @@ extern "C" { } pub type pixel = uint16_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; +use crate::src::internal::Dav1dFrameContext; + use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; -use crate::include::dav1d::headers::Dav1dFrameHeader; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - -use crate::src::internal::Dav1dFrameContext_lf; use crate::src::lf_mask::Av1Filter; -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::internal::Dav1dDSPContext; -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::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; use crate::src::lr_apply::LR_RESTORE_U; use crate::src::lr_apply::LR_RESTORE_V; use crate::src::lr_apply::LR_RESTORE_Y; diff --git a/src/lf_apply_tmpl_8.rs b/src/lf_apply_tmpl_8.rs index b1a6b0c46..93be3fcdf 100644 --- a/src/lf_apply_tmpl_8.rs +++ b/src/lf_apply_tmpl_8.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -10,233 +9,20 @@ extern "C" { } pub type pixel = uint8_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; +use crate::src::internal::Dav1dFrameContext; + use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; -use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; - -use crate::include::dav1d::headers::Dav1dSequenceHeader; - -use crate::src::internal::Dav1dFrameContext_lf; use crate::src::lf_mask::Av1Filter; -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::internal::Dav1dDSPContext; -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::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; use crate::src::lr_apply::LR_RESTORE_U; use crate::src::lr_apply::LR_RESTORE_V; use crate::src::lr_apply::LR_RESTORE_Y; diff --git a/src/lib.rs b/src/lib.rs index d1944d8ef..128a3f313 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,7 @@ use std::cmp; use crate::include::common::bitdepth::DynCoef; -use crate::include::common::bitdepth::DynPixel; + use crate::include::stddef::*; use crate::include::stdint::*; use crate::src::intra_edge::dav1d_init_mode_tree; @@ -79,8 +79,6 @@ use crate::src::r#ref::Dav1dRef; use crate::src::thread_task::dav1d_worker_task; use crate::src::thread_task::FRAME_ERROR; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; - use crate::include::dav1d::headers::Dav1dContentLightLevel; use crate::include::dav1d::headers::Dav1dITUTT35; use crate::include::dav1d::headers::Dav1dMasteringDisplay; @@ -92,63 +90,7 @@ use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::data::Dav1dData; use crate::include::dav1d::picture::Dav1dPicAllocator; use crate::include::dav1d::picture::Dav1dPicture; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; +use crate::src::internal::Dav1dContext; use libc::pthread_attr_destroy; use libc::pthread_attr_init; @@ -170,26 +112,22 @@ use crate::include::dav1d::dav1d::Dav1dLogger; use crate::include::dav1d::dav1d::DAV1D_DECODEFRAMETYPE_ALL; use crate::include::dav1d::dav1d::DAV1D_DECODEFRAMETYPE_KEY; use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_ALL; -use crate::src::picture::PictureFlags; + use crate::src::picture::PICTURE_FLAG_NEW_TEMPORAL_UNIT; use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_NONE; -use crate::src::internal::Dav1dContext_intra_edge; -use crate::src::intra_edge::EdgeFlags; use crate::include::stdatomic::atomic_uint; -use crate::src::internal::Dav1dDSPContext; + use crate::src::refmvs::dav1d_refmvs_clear; use crate::src::refmvs::dav1d_refmvs_init; use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::cdf::dav1d_cdf_thread_unref; -use crate::src::cdf::CdfThreadContext; + use crate::src::filmgrain::Dav1dFilmGrainDSPContext; -use crate::src::internal::Dav1dContext_frame_thread; -use crate::src::internal::Dav1dContext_refs; -use crate::src::internal::Dav1dTileGroup; +use crate::src::internal::Dav1dTaskContext; use crate::src::internal::TaskThreadData; use crate::src::picture::dav1d_default_picture_alloc; use crate::src::picture::dav1d_default_picture_release; @@ -201,138 +139,17 @@ 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; -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::levels::Filter2d; use libc::pthread_t; -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::lf_mask::Av1Filter; -use crate::src::refmvs::refmvs_tile; - -use crate::src::env::BlockContext; -use crate::src::internal::Dav1dTileState; -use crate::src::refmvs::refmvs_frame; -use crate::src::refmvs::refmvs_temporal_block; - -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::src::internal::Dav1dFrameContext_task_thread; +use crate::src::internal::Dav1dFrameContext; use crate::src::internal::Dav1dTask; -use crate::src::internal::Dav1dFrameContext_lf; - use crate::src::internal::CodedBlockInfo; -use crate::src::internal::Dav1dFrameContext_frame_thread; + use crate::src::levels::Av1Block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; #[repr(C)] pub struct Dav1dSettings { pub n_threads: libc::c_int, diff --git a/src/log.rs b/src/log.rs index a1ca1bf75..077cc9162 100644 --- a/src/log.rs +++ b/src/log.rs @@ -1,235 +1,11 @@ -use crate::include::common::bitdepth::DynPixel; -use crate::include::stddef::*; -use crate::include::stdint::*; - use crate::stderr; use ::libc; extern "C" { fn fprintf(_: *mut libc::FILE, _: *const libc::c_char, _: ...) -> libc::c_int; fn vfprintf(_: *mut libc::FILE, _: *const libc::c_char, _: ::core::ffi::VaList) -> libc::c_int; } -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::stdatomic::atomic_int; -use crate::src::r#ref::Dav1dRef; - -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; - -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - -use crate::include::dav1d::headers::Dav1dFrameHeader; - -use crate::include::dav1d::data::Dav1dData; -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::include::dav1d::picture::Dav1dPicture; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::internal::Dav1dDSPContext; -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - -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::Dav1dThreadPicture; -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::lf_mask::Av1Filter; -use crate::src::refmvs::refmvs_tile; - -use crate::src::env::BlockContext; -use crate::src::internal::Dav1dTileState; -use crate::src::refmvs::refmvs_frame; -use crate::src::refmvs::refmvs_temporal_block; - -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::src::internal::Dav1dFrameContext_task_thread; - -use crate::src::internal::Dav1dFrameContext_lf; - -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; +use crate::src::internal::Dav1dContext; #[cold] pub unsafe extern "C" fn dav1d_log_default_callback( diff --git a/src/lr_apply_tmpl_16.rs b/src/lr_apply_tmpl_16.rs index 38617a7f0..52c689c7a 100644 --- a/src/lr_apply_tmpl_16.rs +++ b/src/lr_apply_tmpl_16.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -12,227 +11,24 @@ extern "C" { use crate::src::tables::dav1d_sgr_params; pub type pixel = uint16_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; +use crate::src::internal::Dav1dFrameContext; + use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; -use crate::include::dav1d::headers::Dav1dFrameHeader; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; use crate::include::dav1d::headers::DAV1D_RESTORATION_SGRPROJ; use crate::include::dav1d::headers::DAV1D_RESTORATION_WIENER; use crate::include::dav1d::headers::DAV1D_RESTORATION_NONE; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - use crate::src::align::Align16; -use crate::src::internal::Dav1dFrameContext_lf; -use crate::src::lf_mask::Av1Filter; - -use crate::src::internal::Dav1dFrameContext_frame_thread; use crate::src::lf_mask::Av1RestorationUnit; -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - use crate::src::internal::Dav1dDSPContext; -use crate::src::cdf::CdfThreadContext; - use crate::src::looprestoration::looprestorationfilter_fn; use crate::src::looprestoration::LooprestorationParams; @@ -242,19 +38,6 @@ use crate::src::looprestoration::LR_HAVE_LEFT; use crate::src::looprestoration::LR_HAVE_RIGHT; use crate::src::looprestoration::LR_HAVE_TOP; -use crate::src::internal::Dav1dContext_frame_thread; -use crate::src::internal::Dav1dContext_refs; -use crate::src::internal::Dav1dTileGroup; -use crate::src::picture::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; - use crate::src::lr_apply::LR_RESTORE_U; use crate::src::lr_apply::LR_RESTORE_V; use crate::src::lr_apply::LR_RESTORE_Y; diff --git a/src/lr_apply_tmpl_8.rs b/src/lr_apply_tmpl_8.rs index 8307bc41f..d82a78594 100644 --- a/src/lr_apply_tmpl_8.rs +++ b/src/lr_apply_tmpl_8.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -12,228 +11,24 @@ extern "C" { use crate::src::tables::dav1d_sgr_params; pub type pixel = uint8_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; +use crate::src::internal::Dav1dFrameContext; + use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; -use crate::include::dav1d::headers::Dav1dFrameHeader; - -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; use crate::include::dav1d::headers::DAV1D_RESTORATION_SGRPROJ; use crate::include::dav1d::headers::DAV1D_RESTORATION_WIENER; use crate::include::dav1d::headers::DAV1D_RESTORATION_NONE; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - use crate::src::align::Align16; -use crate::src::internal::Dav1dFrameContext_lf; -use crate::src::lf_mask::Av1Filter; - -use crate::src::internal::Dav1dFrameContext_frame_thread; use crate::src::lf_mask::Av1RestorationUnit; -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - use crate::src::internal::Dav1dDSPContext; -use crate::src::cdf::CdfThreadContext; - use crate::src::looprestoration::looprestorationfilter_fn; use crate::src::looprestoration::LooprestorationParams; @@ -243,19 +38,6 @@ use crate::src::looprestoration::LR_HAVE_LEFT; use crate::src::looprestoration::LR_HAVE_RIGHT; use crate::src::looprestoration::LR_HAVE_TOP; -use crate::src::internal::Dav1dContext_frame_thread; -use crate::src::internal::Dav1dContext_refs; -use crate::src::internal::Dav1dTileGroup; -use crate::src::picture::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; - use crate::src::lr_apply::LR_RESTORE_U; use crate::src::lr_apply::LR_RESTORE_V; use crate::src::lr_apply::LR_RESTORE_Y; diff --git a/src/obu.rs b/src/obu.rs index 67baacc5c..938d34dae 100644 --- a/src/obu.rs +++ b/src/obu.rs @@ -1,6 +1,5 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -15,7 +14,6 @@ extern "C" { 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; @@ -27,66 +25,8 @@ use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::Dav1dRef; use crate::include::stdatomic::atomic_uint; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; +use crate::src::internal::Dav1dFrameContext; + use libc::pthread_cond_wait; use libc::pthread_mutex_lock; use libc::pthread_mutex_unlock; @@ -94,8 +34,6 @@ use libc::pthread_mutex_unlock; use crate::include::dav1d::headers::Dav1dContentLightLevel; use crate::include::dav1d::headers::Dav1dITUTT35; use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::TaskThreadData; use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::Dav1dPixelLayout; @@ -153,132 +91,16 @@ use crate::include::dav1d::headers::Dav1dColorPrimaries; use crate::include::dav1d::headers::DAV1D_COLOR_PRI_BT709; use crate::include::dav1d::headers::DAV1D_COLOR_PRI_UNKNOWN; -use crate::src::internal::Dav1dFrameContext_lf; -use crate::src::lf_mask::Av1Filter; - -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; use crate::src::levels::OBU_META_HDR_CLL; use crate::src::levels::OBU_META_HDR_MDCV; use crate::src::levels::OBU_META_ITUT_T35; use crate::src::levels::OBU_META_SCALABILITY; use crate::src::levels::OBU_META_TIMECODE; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; -use crate::src::internal::Dav1dTileState; +use crate::src::internal::Dav1dContext; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; + use crate::src::picture::PictureFlags; use crate::src::picture::PICTURE_FLAG_NEW_OP_PARAMS_INFO; use crate::src::picture::PICTURE_FLAG_NEW_SEQUENCE; @@ -287,34 +109,15 @@ use crate::src::picture::PICTURE_FLAG_NEW_TEMPORAL_UNIT; use crate::include::dav1d::dav1d::DAV1D_DECODEFRAMETYPE_INTRA; use crate::include::dav1d::dav1d::DAV1D_DECODEFRAMETYPE_REFERENCE; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - -use crate::src::internal::Dav1dDSPContext; - 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 ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; + use crate::include::dav1d::headers::Dav1dObuType; use crate::include::dav1d::headers::DAV1D_OBU_FRAME; use crate::include::dav1d::headers::DAV1D_OBU_FRAME_HDR; @@ -324,7 +127,7 @@ use crate::include::dav1d::headers::DAV1D_OBU_REDUNDANT_FRAME_HDR; use crate::include::dav1d::headers::DAV1D_OBU_SEQ_HDR; use crate::include::dav1d::headers::DAV1D_OBU_TD; use crate::include::dav1d::headers::DAV1D_OBU_TILE_GRP; -use crate::src::internal::ScalableMotionParams; + use crate::src::levels::ObuMetaType; use crate::include::common::intops::iclip_u8; diff --git a/src/picture.rs b/src/picture.rs index 81836104c..2c1302167 100644 --- a/src/picture.rs +++ b/src/picture.rs @@ -1,4 +1,3 @@ -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; use crate::include::stdint::*; @@ -13,207 +12,31 @@ extern "C" { 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::dav1d::headers::Dav1dContentLightLevel; +use crate::include::dav1d::headers::Dav1dITUTT35; +use crate::include::dav1d::headers::Dav1dMasteringDisplay; +use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; +use crate::include::dav1d::picture::Dav1dPicture; 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::internal::Dav1dFrameContext; use crate::src::r#ref::dav1d_ref_dec; use crate::src::r#ref::dav1d_ref_wrap; use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; use crate::include::dav1d::headers::Dav1dFrameHeader; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; + use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; use crate::include::dav1d::headers::Dav1dSequenceHeader; -use crate::src::internal::Dav1dFrameContext_lf; -use crate::src::lf_mask::Av1Filter; - -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_task_thread; - -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - -use crate::src::internal::Dav1dTileState; - -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; +use crate::src::internal::Dav1dContext; + 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; @@ -224,20 +47,9 @@ pub type PictureFlags = libc::c_uint; pub const PICTURE_FLAG_NEW_TEMPORAL_UNIT: PictureFlags = 4; pub const PICTURE_FLAG_NEW_OP_PARAMS_INFO: PictureFlags = 2; pub const PICTURE_FLAG_NEW_SEQUENCE: PictureFlags = 1; -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - -use crate::src::internal::Dav1dDSPContext; - -use crate::src::cdf::CdfThreadContext; - -use crate::src::internal::Dav1dContext_refs; #[repr(C)] pub struct Dav1dThreadPicture { pub p: Dav1dPicture, @@ -246,16 +58,7 @@ pub struct Dav1dThreadPicture { pub flags: PictureFlags, pub progress: *mut atomic_uint, } -use crate::src::internal::Dav1dContext_frame_thread; -use crate::src::internal::Dav1dTileGroup; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; + #[repr(C)] pub struct pic_ctx_context { pub allocator: Dav1dPicAllocator, diff --git a/src/recon.rs b/src/recon.rs index eff324412..774c4231c 100644 --- a/src/recon.rs +++ b/src/recon.rs @@ -4,6 +4,10 @@ use std::ops::BitOr; use crate::include::dav1d::headers::Dav1dPixelLayout; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; +use crate::src::internal::Dav1dFrameContext; +use crate::src::internal::Dav1dTaskContext; +use crate::src::intra_edge::EdgeFlags; +use crate::src::levels::Av1Block; use crate::src::levels::BlockSize; use crate::src::levels::RectTxfmSize; use crate::src::levels::TxClass; @@ -58,6 +62,20 @@ macro_rules! define_DEBUG_BLOCK_INFO { pub(crate) use define_DEBUG_BLOCK_INFO; +pub type recon_b_intra_fn = Option< + unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), +>; + +pub type recon_b_inter_fn = + Option libc::c_int>; + +pub type filter_sbrow_fn = Option ()>; + +pub type backup_ipred_edge_fn = Option ()>; + +pub type read_coef_blocks_fn = + Option ()>; + #[inline] pub fn read_golomb(msac: &mut MsacContext) -> libc::c_uint { let mut len = 0; diff --git a/src/recon_tmpl_16.rs b/src/recon_tmpl_16.rs index 2f2d06e29..c4c06510f 100644 --- a/src/recon_tmpl_16.rs +++ b/src/recon_tmpl_16.rs @@ -2,7 +2,7 @@ use std::cmp; use crate::include::common::bitdepth::BitDepth16; use crate::include::common::bitdepth::DynCoef; -use crate::include::common::bitdepth::DynPixel; + use crate::include::stddef::*; use crate::include::stdint::*; use crate::src::ctx::CaseSet; @@ -77,80 +77,11 @@ use crate::src::wedge::dav1d_wedge_masks; pub type pixel = uint16_t; pub type coef = int32_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; +use crate::src::internal::Dav1dFrameContext; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; @@ -158,143 +89,28 @@ use crate::include::dav1d::headers::Dav1dWarpedMotionParams; use crate::include::dav1d::headers::DAV1D_WM_TYPE_TRANSLATION; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - use crate::src::internal::CodedBlockInfo; -use crate::src::internal::Dav1dFrameContext_frame_thread; -use crate::src::internal::Dav1dFrameContext_lf; + use crate::src::levels::mv; use crate::src::levels::Av1Block; use crate::src::lf_mask::Av1Filter; -use crate::src::env::BlockContext; use crate::src::refmvs::refmvs_block; -use crate::src::refmvs::refmvs_frame; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; + use crate::src::levels::BlockSize; -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; +use crate::src::internal::Dav1dTaskContext; + use crate::src::levels::Filter2d; use crate::src::levels::FILTER_2D_BILINEAR; -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - use crate::src::internal::Dav1dTileState; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_CDEF; use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_DEBLOCK; use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_RESTORATION; -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - use crate::src::intra_edge::EdgeFlags; use crate::src::intra_edge::EDGE_I420_LEFT_HAS_BOTTOM; @@ -302,24 +118,11 @@ use crate::src::intra_edge::EDGE_I420_TOP_HAS_RIGHT; use crate::src::intra_edge::EDGE_I444_LEFT_HAS_BOTTOM; use crate::src::intra_edge::EDGE_I444_TOP_HAS_RIGHT; -use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::internal::Dav1dDSPContext; -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::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; + use crate::src::levels::IntraPredMode; use crate::src::levels::RectTxfmSize; use crate::src::levels::TxClass; diff --git a/src/recon_tmpl_8.rs b/src/recon_tmpl_8.rs index a8f67c68c..106240cc6 100644 --- a/src/recon_tmpl_8.rs +++ b/src/recon_tmpl_8.rs @@ -2,7 +2,7 @@ use std::cmp; use crate::include::common::bitdepth::BitDepth8; use crate::include::common::bitdepth::DynCoef; -use crate::include::common::bitdepth::DynPixel; + use crate::include::stddef::*; use crate::include::stdint::*; use crate::src::ctx::CaseSet; @@ -76,224 +76,40 @@ use crate::src::wedge::dav1d_wedge_masks; pub type pixel = uint8_t; pub type coef = int16_t; -use crate::include::stdatomic::atomic_int; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; -use crate::include::dav1d::picture::Dav1dPicture; -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; -use crate::src::internal::TaskThreadData; +use crate::src::internal::Dav1dFrameContext; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I444; -use crate::include::dav1d::headers::Dav1dFrameHeader; use crate::include::dav1d::headers::Dav1dWarpedMotionParams; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I400; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; use crate::include::dav1d::headers::DAV1D_WM_TYPE_TRANSLATION; -use crate::include::dav1d::headers::Dav1dSequenceHeader; - -use crate::src::internal::Dav1dFrameContext_lf; use crate::src::lf_mask::Av1Filter; use crate::src::internal::CodedBlockInfo; -use crate::src::internal::Dav1dFrameContext_frame_thread; + use crate::src::levels::mv; use crate::src::levels::Av1Block; -use crate::src::env::BlockContext; use crate::src::refmvs::refmvs_block; -use crate::src::refmvs::refmvs_frame; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; + use crate::src::levels::BlockSize; -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; +use crate::src::internal::Dav1dTaskContext; + use crate::src::levels::Filter2d; use crate::src::levels::FILTER_2D_BILINEAR; -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; - use crate::src::internal::Dav1dTileState; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_CDEF; use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_DEBLOCK; use crate::include::dav1d::dav1d::DAV1D_INLOOPFILTER_RESTORATION; -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - use crate::src::intra_edge::EdgeFlags; use crate::src::intra_edge::EDGE_I420_LEFT_HAS_BOTTOM; @@ -301,24 +117,11 @@ use crate::src::intra_edge::EDGE_I420_TOP_HAS_RIGHT; use crate::src::intra_edge::EDGE_I444_LEFT_HAS_BOTTOM; use crate::src::intra_edge::EDGE_I444_TOP_HAS_RIGHT; -use crate::src::refmvs::Dav1dRefmvsDSPContext; use crate::src::internal::Dav1dDSPContext; -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::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; -use crate::src::internal::ScalableMotionParams; + use crate::src::levels::IntraPredMode; use crate::src::levels::RectTxfmSize; use crate::src::levels::TxClass; diff --git a/src/ref.rs b/src/ref.rs index 4202aa779..cf945f3a0 100644 --- a/src/ref.rs +++ b/src/ref.rs @@ -8,12 +8,12 @@ extern "C" { #[repr(C)] pub struct Dav1dRef { - pub data: *mut libc::c_void, - pub const_data: *const libc::c_void, - pub ref_cnt: atomic_int, - pub free_ref: libc::c_int, - pub free_callback: Option ()>, - pub user_data: *mut libc::c_void, + pub(crate) data: *mut libc::c_void, + pub(crate) const_data: *const libc::c_void, + pub(crate) ref_cnt: atomic_int, + pub(crate) free_ref: libc::c_int, + pub(crate) free_callback: Option ()>, + pub(crate) user_data: *mut libc::c_void, } use crate::include::stdatomic::atomic_int; diff --git a/src/thread_task.rs b/src/thread_task.rs index 6d32a818c..72dba251a 100644 --- a/src/thread_task.rs +++ b/src/thread_task.rs @@ -1,8 +1,7 @@ use std::cmp; -use crate::include::common::bitdepth::DynPixel; use crate::include::stddef::*; -use crate::include::stdint::*; + use ::libc; use cfg_if::cfg_if; extern "C" { @@ -58,69 +57,7 @@ extern "C" { use crate::include::stdatomic::atomic_int; use crate::include::stdatomic::atomic_uint; -use crate::include::dav1d::common::Dav1dDataProps; -use crate::include::dav1d::data::Dav1dData; -use crate::src::r#ref::Dav1dRef; -#[repr(C)] -pub struct Dav1dFrameContext { - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub refp: [Dav1dThreadPicture; 7], - pub cur: Dav1dPicture, - pub sr_cur: Dav1dThreadPicture, - pub mvs_ref: *mut Dav1dRef, - pub mvs: *mut refmvs_temporal_block, - pub ref_mvs: [*mut refmvs_temporal_block; 7], - pub ref_mvs_ref: [*mut Dav1dRef; 7], - pub cur_segmap_ref: *mut Dav1dRef, - pub prev_segmap_ref: *mut Dav1dRef, - pub cur_segmap: *mut uint8_t, - pub prev_segmap: *const uint8_t, - pub refpoc: [libc::c_uint; 7], - pub refrefpoc: [[libc::c_uint; 7]; 7], - pub gmv_warp_allowed: [uint8_t; 7], - pub in_cdf: CdfThreadContext, - pub out_cdf: CdfThreadContext, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub svc: [[ScalableMotionParams; 2]; 7], - pub resize_step: [libc::c_int; 2], - pub resize_start: [libc::c_int; 2], - pub c: *const Dav1dContext, - pub ts: *mut Dav1dTileState, - pub n_ts: libc::c_int, - pub dsp: *const Dav1dDSPContext, - pub bd_fn: Dav1dFrameContext_bd_fn, - pub ipred_edge_sz: libc::c_int, - pub ipred_edge: [*mut DynPixel; 3], - pub b4_stride: ptrdiff_t, - pub w4: libc::c_int, - pub h4: libc::c_int, - pub bw: libc::c_int, - pub bh: libc::c_int, - pub sb128w: libc::c_int, - pub sb128h: libc::c_int, - pub sbh: libc::c_int, - pub sb_shift: libc::c_int, - pub sb_step: libc::c_int, - pub sr_sb128w: libc::c_int, - pub dq: [[[uint16_t; 2]; 3]; 8], - pub qm: [[*const uint8_t; 3]; 19], - pub a: *mut BlockContext, - pub a_sz: libc::c_int, - pub rf: refmvs_frame, - pub jnt_weights: [[uint8_t; 7]; 7], - pub bitdepth_max: libc::c_int, - pub frame_thread: Dav1dFrameContext_frame_thread, - pub lf: Dav1dFrameContext_lf, - pub task_thread: Dav1dFrameContext_task_thread, - pub tile_thread: FrameTileThreadData, -} -use crate::src::internal::Dav1dFrameContext_task_thread; -use crate::src::internal::FrameTileThreadData; +use crate::src::internal::Dav1dFrameContext; use crate::src::internal::Dav1dTask; use crate::src::internal::TaskType; @@ -142,168 +79,23 @@ use libc::pthread_cond_wait; use libc::pthread_mutex_lock; use libc::pthread_mutex_unlock; -use crate::include::dav1d::headers::Dav1dContentLightLevel; -use crate::include::dav1d::headers::Dav1dITUTT35; -use crate::include::dav1d::headers::Dav1dMasteringDisplay; use crate::include::dav1d::headers::DAV1D_PIXEL_LAYOUT_I420; use crate::include::dav1d::picture::Dav1dPicture; use crate::src::internal::TaskThreadData; -use crate::include::dav1d::headers::Dav1dFrameHeader; -use crate::include::dav1d::headers::Dav1dWarpedMotionParams; - -use crate::include::dav1d::headers::Dav1dSequenceHeader; - -use crate::src::internal::Dav1dFrameContext_lf; -use crate::src::lf_mask::Av1Filter; - -use crate::src::internal::Dav1dFrameContext_frame_thread; - -use crate::src::levels::Av1Block; -use crate::src::refmvs::refmvs_frame; - -use crate::src::env::BlockContext; -use crate::src::refmvs::refmvs_temporal_block; -#[repr(C)] -pub struct Dav1dFrameContext_bd_fn { - pub recon_b_intra: recon_b_intra_fn, - pub recon_b_inter: recon_b_inter_fn, - pub filter_sbrow: filter_sbrow_fn, - pub filter_sbrow_deblock_cols: filter_sbrow_fn, - pub filter_sbrow_deblock_rows: filter_sbrow_fn, - pub filter_sbrow_cdef: Option ()>, - pub filter_sbrow_resize: filter_sbrow_fn, - pub filter_sbrow_lr: filter_sbrow_fn, - pub backup_ipred_edge: backup_ipred_edge_fn, - pub read_coef_blocks: read_coef_blocks_fn, -} -pub type read_coef_blocks_fn = - Option ()>; -use crate::src::levels::BlockSize; - -#[repr(C)] -pub struct Dav1dTaskContext { - pub c: *const Dav1dContext, - pub f: *const Dav1dFrameContext, - pub ts: *mut Dav1dTileState, - pub bx: libc::c_int, - pub by: libc::c_int, - pub l: BlockContext, - pub a: *mut BlockContext, - pub rt: refmvs_tile, - pub c2rust_unnamed: Dav1dTaskContext_cf, - pub al_pal: [[[[uint16_t; 8]; 3]; 32]; 2], - pub pal_sz_uv: [[uint8_t; 32]; 2], - pub txtp_map: [uint8_t; 1024], - pub scratch: Dav1dTaskContext_scratch, - pub warpmv: Dav1dWarpedMotionParams, - pub lf_mask: *mut Av1Filter, - pub top_pre_cdef_toggle: libc::c_int, - pub cur_sb_cdef_idx_ptr: *mut int8_t, - pub tl_4x4_filter: Filter2d, - pub frame_thread: Dav1dTaskContext_frame_thread, - pub task_thread: Dav1dTaskContext_task_thread, -} -use crate::src::internal::Dav1dTaskContext_frame_thread; -use crate::src::internal::Dav1dTaskContext_task_thread; -use crate::src::levels::Filter2d; - -use crate::src::internal::Dav1dTaskContext_cf; -use crate::src::internal::Dav1dTaskContext_scratch; -use crate::src::refmvs::refmvs_tile; +use crate::src::internal::Dav1dTaskContext; use crate::src::internal::Dav1dTileState; -#[repr(C)] -pub struct Dav1dContext { - pub fc: *mut Dav1dFrameContext, - pub n_fc: libc::c_uint, - pub tc: *mut Dav1dTaskContext, - pub n_tc: libc::c_uint, - pub tile: *mut Dav1dTileGroup, - pub n_tile_data_alloc: libc::c_int, - pub n_tile_data: libc::c_int, - pub n_tiles: libc::c_int, - pub seq_hdr_pool: *mut Dav1dMemPool, - pub seq_hdr_ref: *mut Dav1dRef, - pub seq_hdr: *mut Dav1dSequenceHeader, - pub frame_hdr_pool: *mut Dav1dMemPool, - pub frame_hdr_ref: *mut Dav1dRef, - pub frame_hdr: *mut Dav1dFrameHeader, - pub content_light_ref: *mut Dav1dRef, - pub content_light: *mut Dav1dContentLightLevel, - pub mastering_display_ref: *mut Dav1dRef, - pub mastering_display: *mut Dav1dMasteringDisplay, - pub itut_t35_ref: *mut Dav1dRef, - pub itut_t35: *mut Dav1dITUTT35, - pub in_0: Dav1dData, - pub out: Dav1dThreadPicture, - pub cache: Dav1dThreadPicture, - pub flush_mem: atomic_int, - pub flush: *mut atomic_int, - pub frame_thread: Dav1dContext_frame_thread, - pub task_thread: TaskThreadData, - pub segmap_pool: *mut Dav1dMemPool, - pub refmvs_pool: *mut Dav1dMemPool, - pub refs: [Dav1dContext_refs; 8], - pub cdf_pool: *mut Dav1dMemPool, - pub cdf: [CdfThreadContext; 8], - pub dsp: [Dav1dDSPContext; 3], - pub refmvs_dsp: Dav1dRefmvsDSPContext, - pub intra_edge: Dav1dContext_intra_edge, - pub allocator: Dav1dPicAllocator, - pub apply_grain: libc::c_int, - pub operating_point: libc::c_int, - pub operating_point_idc: libc::c_uint, - pub all_layers: libc::c_int, - pub max_spatial_id: libc::c_int, - pub frame_size_limit: libc::c_uint, - pub strict_std_compliance: libc::c_int, - pub output_invisible_frames: libc::c_int, - pub inloop_filters: Dav1dInloopFilterType, - pub decode_frame_type: Dav1dDecodeFrameType, - pub drain: libc::c_int, - pub frame_flags: PictureFlags, - pub event_flags: Dav1dEventFlags, - pub cached_error_props: Dav1dDataProps, - pub cached_error: libc::c_int, - pub logger: Dav1dLogger, - pub picture_pool: *mut Dav1dMemPool, -} -use crate::src::mem::Dav1dMemPool; - -use crate::include::dav1d::dav1d::Dav1dEventFlags; -use crate::include::dav1d::dav1d::Dav1dLogger; -use crate::src::picture::PictureFlags; - -use crate::include::dav1d::dav1d::Dav1dDecodeFrameType; -use crate::include::dav1d::dav1d::Dav1dInloopFilterType; - -use crate::include::dav1d::picture::Dav1dPicAllocator; -use crate::src::internal::Dav1dContext_intra_edge; - -use crate::src::intra_edge::EdgeFlags; -use crate::src::refmvs::Dav1dRefmvsDSPContext; - -use crate::src::internal::Dav1dDSPContext; +use crate::src::internal::Dav1dContext; use crate::src::cdf::dav1d_cdf_thread_update; -use crate::src::cdf::CdfThreadContext; + use crate::src::filmgrain::Dav1dFilmGrainDSPContext; -use crate::src::internal::Dav1dContext_frame_thread; -use crate::src::internal::Dav1dContext_refs; -use crate::src::internal::Dav1dTileGroup; use crate::src::picture::Dav1dThreadPicture; -pub type backup_ipred_edge_fn = Option ()>; -pub type filter_sbrow_fn = Option ()>; -pub type recon_b_inter_fn = - Option libc::c_int>; -pub type recon_b_intra_fn = Option< - unsafe extern "C" fn(*mut Dav1dTaskContext, BlockSize, EdgeFlags, *const Av1Block) -> (), ->; + use crate::include::common::attributes::ctz; -use crate::src::internal::ScalableMotionParams; pub const FRAME_ERROR: u32 = u32::MAX - 1; pub const TILE_ERROR: i32 = i32::MAX - 1; diff --git a/tests/seek_stress.rs b/tests/seek_stress.rs index 2d258552b..cfef2fd24 100644 --- a/tests/seek_stress.rs +++ b/tests/seek_stress.rs @@ -21,7 +21,9 @@ mod output { use rav1d::include::dav1d::common::Dav1dDataProps; use rav1d::include::dav1d::common::Dav1dUserData; use rav1d::include::dav1d::data::Dav1dData; +use rav1d::include::dav1d::dav1d::Dav1dContext; use rav1d::include::dav1d::dav1d::Dav1dLogger; +use rav1d::include::dav1d::dav1d::Dav1dRef; use rav1d::include::dav1d::dav1d::DAV1D_DECODEFRAMETYPE_ALL; use rav1d::include::dav1d::dav1d::DAV1D_INLOOPFILTER_NONE; use rav1d::include::dav1d::headers::Dav1dColorPrimaries; @@ -52,9 +54,7 @@ use rav1d::src::lib::dav1d_parse_sequence_header; use rav1d::src::lib::dav1d_picture_unref; use rav1d::src::lib::dav1d_send_data; use rav1d::src::lib::dav1d_version; -use rav1d::src::lib::Dav1dContext; use rav1d::src::lib::Dav1dSettings; -use rav1d::src::r#ref::Dav1dRef; #[path = "../tools/dav1d_cli_parse.rs"] mod dav1d_cli_parse; extern "C" { diff --git a/tools/dav1d.rs b/tools/dav1d.rs index 50956ae5a..420000f9d 100644 --- a/tools/dav1d.rs +++ b/tools/dav1d.rs @@ -2,9 +2,9 @@ #![allow(non_upper_case_globals)] #![feature(extern_types)] #![feature(c_variadic)] +use crate::include::dav1d::dav1d::Dav1dRef; use crate::include::stddef::*; use crate::include::stdint::*; -use crate::src::r#ref::Dav1dRef; use ::rav1d::*; mod input { mod annexb;