#include "common/attributes.h"
#include "common/intops.h"
#include "src/filmgrain.h"
#include "src/tables.h"
#define SUB_GRAIN_WIDTH …
#define SUB_GRAIN_HEIGHT …
static inline int get_random_number(const int bits, unsigned *const state) { … }
static inline int round2(const int x, const uint64_t shift) { … }
static void generate_grain_y_c(entry buf[][GRAIN_WIDTH],
const Dav1dFilmGrainData *const data
HIGHBD_DECL_SUFFIX)
{ … }
static NOINLINE void
generate_grain_uv_c(entry buf[][GRAIN_WIDTH],
const entry buf_y[][GRAIN_WIDTH],
const Dav1dFilmGrainData *const data, const intptr_t uv,
const int subx, const int suby HIGHBD_DECL_SUFFIX)
{ … }
#define gnuv_ss_fn(nm, ss_x, ss_y) …
gnuv_ss_fn(420, 1, 1);
gnuv_ss_fn(422, 1, 0);
gnuv_ss_fn(444, 0, 0);
static inline entry sample_lut(const entry grain_lut[][GRAIN_WIDTH],
const int offsets[2][2], const int subx, const int suby,
const int bx, const int by, const int x, const int y)
{ … }
static void fgy_32x32xn_c(pixel *const dst_row, const pixel *const src_row,
const ptrdiff_t stride,
const Dav1dFilmGrainData *const data, const size_t pw,
const uint8_t scaling[SCALING_SIZE],
const entry grain_lut[][GRAIN_WIDTH],
const int bh, const int row_num HIGHBD_DECL_SUFFIX)
{ … }
static NOINLINE void
fguv_32x32xn_c(pixel *const dst_row, const pixel *const src_row,
const ptrdiff_t stride, const Dav1dFilmGrainData *const data,
const size_t pw, const uint8_t scaling[SCALING_SIZE],
const entry grain_lut[][GRAIN_WIDTH], const int bh,
const int row_num, const pixel *const luma_row,
const ptrdiff_t luma_stride, const int uv, const int is_id,
const int sx, const int sy HIGHBD_DECL_SUFFIX)
{ … }
#define fguv_ss_fn(nm, ss_x, ss_y) …
fguv_ss_fn(420, 1, 1);
fguv_ss_fn(422, 1, 0);
fguv_ss_fn(444, 0, 0);
#if HAVE_ASM
#if ARCH_AARCH64 || ARCH_ARM
#include "src/arm/filmgrain.h"
#elif ARCH_X86
#include "src/x86/filmgrain.h"
#endif
#endif
COLD void bitfn(dav1d_film_grain_dsp_init)(Dav1dFilmGrainDSPContext *const c) { … }