Go to the documentation of this file.
31 #define IN_IDCT_DEPTH 16
51 for (
int i = 0;
i < 64;
i++)
54 for (
int i = 0;
i < 8;
i++)
55 idctRowCondDC_extrashift_10(
block +
i*8, 2);
57 for (
int i = 0;
i < 8;
i++) {
59 idctSparseCol_extrashift_10(
block +
i);
65 for (
int i = 0;
i < 64;
i++)
68 for (
int i = 0;
i < 8;
i++)
69 idctRowCondDC_int16_12bit(
block +
i*8, 0);
71 for (
int i = 0;
i < 8;
i++) {
73 idctSparseCol_int16_12bit(
block +
i);
77 #define CLIP_MIN (1 << 2)
78 #define CLIP_MAX_10 (1 << 10) - CLIP_MIN - 1
79 #define CLIP_MAX_12 (1 << 12) - CLIP_MIN - 1
81 #define CLIP_10(x) (av_clip((x), CLIP_MIN, CLIP_MAX_10))
82 #define CLIP_12(x) (av_clip((x), CLIP_MIN, CLIP_MAX_12))
88 static inline void put_pixel(uint16_t *
dst, ptrdiff_t linesize,
const int16_t *in,
int bits_per_raw_sample) {
89 for (
int y = 0; y < 8; y++,
dst += linesize) {
90 for (
int x = 0; x < 8; x++) {
91 int src_offset = (y << 3) + x;
93 if (bits_per_raw_sample == 10) {
126 if (bits_per_raw_sample == 10) {
int idct_permutation_type
void ff_proresdsp_init_x86(ProresDSPContext *dsp, int bits_per_raw_sample)
static void put_pixel(uint16_t *dst, ptrdiff_t linesize, const int16_t *in, int bits_per_raw_sample)
Add bias value, clamp and output pixels of a slice.
static void put_pixels_12(uint16_t *dst, ptrdiff_t linesize, const int16_t *in)
static void prores_idct_10(int16_t *restrict block, const int16_t *restrict qmat)
Special version of ff_simple_idct_int16_10bit() which does dequantization and scales by a factor of 2...
uint8_t idct_permutation[64]
av_cold void ff_proresdsp_init(ProresDSPContext *dsp, int bits_per_raw_sample)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
#define i(width, name, range_min, range_max)
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
static void prores_idct_12(int16_t *restrict block, const int16_t *restrict qmat)
static void put_pixels_10(uint16_t *dst, ptrdiff_t linesize, const int16_t *in)
static void prores_idct_put_10_c(uint16_t *out, ptrdiff_t linesize, int16_t *block, const int16_t *qmat)
av_cold void ff_init_scantable_permutation(uint8_t *idct_permutation, enum idct_permutation_type perm_type)
The exact code depends on how similar the blocks are and how related they are to the block
void(* idct_put)(uint16_t *out, ptrdiff_t linesize, int16_t *block, const int16_t *qmat)
static void prores_idct_put_12_c(uint16_t *out, ptrdiff_t linesize, int16_t *block, const int16_t *qmat)