Skip to content

Commit

Permalink
struct Dav1dIntraPredDSPContext: Type-erase fn ptrs and deduplica…
Browse files Browse the repository at this point in the history
…te (#429)
  • Loading branch information
randomPoison authored Sep 11, 2023
1 parent 2ef1e87 commit 2c493b7
Show file tree
Hide file tree
Showing 18 changed files with 1,066 additions and 2,548 deletions.
55 changes: 1 addition & 54 deletions src/cdef_apply_tmpl_16.rs
Original file line number Diff line number Diff line change
Expand Up @@ -240,63 +240,10 @@ 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::ipred::Dav1dIntraPredDSPContext;
use crate::src::itx::Dav1dInvTxfmDSPContext;
use crate::src::loopfilter::Dav1dLoopFilterDSPContext;
use crate::src::mc::Dav1dMCDSPContext;
#[derive(Copy, Clone)]
#[repr(C)]
pub struct Dav1dIntraPredDSPContext {
pub intra_pred: [angular_ipred_fn; 14],
pub cfl_ac: [cfl_ac_fn; 3],
pub cfl_pred: [cfl_pred_fn; 6],
pub pal_pred: pal_pred_fn,
}
pub type pal_pred_fn = Option<
unsafe extern "C" fn(
*mut pixel,
ptrdiff_t,
*const uint16_t,
*const uint8_t,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type cfl_pred_fn = Option<
unsafe extern "C" fn(
*mut pixel,
ptrdiff_t,
*const pixel,
libc::c_int,
libc::c_int,
*const int16_t,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type cfl_ac_fn = Option<
unsafe extern "C" fn(
*mut int16_t,
*const pixel,
ptrdiff_t,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type angular_ipred_fn = Option<
unsafe extern "C" fn(
*mut pixel,
ptrdiff_t,
*const pixel,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
#[repr(C)]
pub struct Dav1dFilmGrainDSPContext {
pub generate_grain_y: generate_grain_y_fn,
Expand Down
52 changes: 1 addition & 51 deletions src/cdef_apply_tmpl_8.rs
Original file line number Diff line number Diff line change
Expand Up @@ -241,61 +241,11 @@ 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::ipred::Dav1dIntraPredDSPContext;
use crate::src::itx::Dav1dInvTxfmDSPContext;
use crate::src::loopfilter::Dav1dLoopFilterDSPContext;
use crate::src::mc::Dav1dMCDSPContext;
#[repr(C)]
pub struct Dav1dIntraPredDSPContext {
pub intra_pred: [angular_ipred_fn; 14],
pub cfl_ac: [cfl_ac_fn; 3],
pub cfl_pred: [cfl_pred_fn; 6],
pub pal_pred: pal_pred_fn,
}
pub type pal_pred_fn = Option<
unsafe extern "C" fn(
*mut pixel,
ptrdiff_t,
*const uint16_t,
*const uint8_t,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type cfl_pred_fn = Option<
unsafe extern "C" fn(
*mut pixel,
ptrdiff_t,
*const pixel,
libc::c_int,
libc::c_int,
*const int16_t,
libc::c_int,
) -> (),
>;
pub type cfl_ac_fn = Option<
unsafe extern "C" fn(
*mut int16_t,
*const pixel,
ptrdiff_t,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type angular_ipred_fn = Option<
unsafe extern "C" fn(
*mut pixel,
ptrdiff_t,
*const pixel,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
#[repr(C)]
pub struct Dav1dFilmGrainDSPContext {
pub generate_grain_y: generate_grain_y_fn,
pub generate_grain_uv: [generate_grain_uv_fn; 3],
Expand Down
52 changes: 1 addition & 51 deletions src/cdf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -338,62 +338,12 @@ pub struct Dav1dDSPContext {
pub lr: Dav1dLoopRestorationDSPContext,
}
use crate::src::cdef::Dav1dCdefDSPContext;
use crate::src::ipred::Dav1dIntraPredDSPContext;
use crate::src::itx::Dav1dInvTxfmDSPContext;
use crate::src::loopfilter::Dav1dLoopFilterDSPContext;
use crate::src::looprestoration::Dav1dLoopRestorationDSPContext;
use crate::src::mc::Dav1dMCDSPContext;
#[repr(C)]
pub struct Dav1dIntraPredDSPContext {
pub intra_pred: [angular_ipred_fn; 14],
pub cfl_ac: [cfl_ac_fn; 3],
pub cfl_pred: [cfl_pred_fn; 6],
pub pal_pred: pal_pred_fn,
}
pub type pal_pred_fn = Option<
unsafe extern "C" fn(
*mut libc::c_void,
ptrdiff_t,
*const uint16_t,
*const uint8_t,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type cfl_pred_fn = Option<
unsafe extern "C" fn(
*mut libc::c_void,
ptrdiff_t,
*const libc::c_void,
libc::c_int,
libc::c_int,
*const int16_t,
libc::c_int,
) -> (),
>;
pub type cfl_ac_fn = Option<
unsafe extern "C" fn(
*mut int16_t,
*const libc::c_void,
ptrdiff_t,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type angular_ipred_fn = Option<
unsafe extern "C" fn(
*mut libc::c_void,
ptrdiff_t,
*const libc::c_void,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
#[repr(C)]
pub struct Dav1dFilmGrainDSPContext {
pub generate_grain_y: generate_grain_y_fn,
pub generate_grain_uv: [generate_grain_uv_fn; 3],
Expand Down
52 changes: 1 addition & 51 deletions src/decode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,62 +469,12 @@ pub struct Dav1dDSPContext {
pub lr: Dav1dLoopRestorationDSPContext,
}
use crate::src::cdef::Dav1dCdefDSPContext;
use crate::src::ipred::Dav1dIntraPredDSPContext;
use crate::src::itx::Dav1dInvTxfmDSPContext;
use crate::src::loopfilter::Dav1dLoopFilterDSPContext;
use crate::src::looprestoration::Dav1dLoopRestorationDSPContext;
use crate::src::mc::Dav1dMCDSPContext;
#[repr(C)]
pub struct Dav1dIntraPredDSPContext {
pub intra_pred: [angular_ipred_fn; 14],
pub cfl_ac: [cfl_ac_fn; 3],
pub cfl_pred: [cfl_pred_fn; 6],
pub pal_pred: pal_pred_fn,
}
pub type pal_pred_fn = Option<
unsafe extern "C" fn(
*mut libc::c_void,
ptrdiff_t,
*const uint16_t,
*const uint8_t,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type cfl_pred_fn = Option<
unsafe extern "C" fn(
*mut libc::c_void,
ptrdiff_t,
*const libc::c_void,
libc::c_int,
libc::c_int,
*const int16_t,
libc::c_int,
) -> (),
>;
pub type cfl_ac_fn = Option<
unsafe extern "C" fn(
*mut int16_t,
*const libc::c_void,
ptrdiff_t,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
pub type angular_ipred_fn = Option<
unsafe extern "C" fn(
*mut libc::c_void,
ptrdiff_t,
*const libc::c_void,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
libc::c_int,
) -> (),
>;
#[repr(C)]
pub struct Dav1dFilmGrainDSPContext {
pub generate_grain_y: generate_grain_y_fn,
pub generate_grain_uv: [generate_grain_uv_fn; 3],
Expand Down
Loading

0 comments on commit 2c493b7

Please sign in to comment.