71 #define EIGHT_BIT_SAMPLES 78 #define RIGHT_SHIFT(x, n) ((x) >> (n)) 89 Sorry,
this code only copes with 8x8 DCTs.
129 #ifdef EIGHT_BIT_SAMPLES 135 #define ONE ((int32_t) 1) 137 #define CONST_SCALE (ONE << CONST_BITS) 146 #define FIX(x) ((int32_t) ((x) * CONST_SCALE + 0.5)) 153 #define DESCALE(x,n) RIGHT_SHIFT((x) + (ONE << ((n)-1)), n) 166 #ifdef EIGHT_BIT_SAMPLES 167 #ifdef SHORTxSHORT_32 168 #define MULTIPLY(var,const) (((int16_t) (var)) * ((int16_t) (const))) 170 #ifdef SHORTxLCONST_32 171 #define MULTIPLY(var,const) (((int16_t) (var)) * ((int32_t) (const))) 176 #define MULTIPLY(var,const) ((var) * (const)) 184 #define FIX_0_211164243 1730 185 #define FIX_0_275899380 2260 186 #define FIX_0_298631336 2446 187 #define FIX_0_390180644 3196 188 #define FIX_0_509795579 4176 189 #define FIX_0_541196100 4433 190 #define FIX_0_601344887 4926 191 #define FIX_0_765366865 6270 192 #define FIX_0_785694958 6436 193 #define FIX_0_899976223 7373 194 #define FIX_1_061594337 8697 195 #define FIX_1_111140466 9102 196 #define FIX_1_175875602 9633 197 #define FIX_1_306562965 10703 198 #define FIX_1_387039845 11363 199 #define FIX_1_451774981 11893 200 #define FIX_1_501321110 12299 201 #define FIX_1_662939225 13623 202 #define FIX_1_847759065 15137 203 #define FIX_1_961570560 16069 204 #define FIX_2_053119869 16819 205 #define FIX_2_172734803 17799 206 #define FIX_2_562915447 20995 207 #define FIX_3_072711026 25172 215 int32_t tmp0, tmp1, tmp2, tmp3;
216 int32_t tmp10, tmp11, tmp12, tmp13;
218 int32_t d0, d1, d2, d3, d4, d5, d6, d7;
219 register int16_t *dataptr;
228 for (rowctr =
DCTSIZE-1; rowctr >= 0; rowctr--) {
251 if ((d1 | d2 | d3 | d4 | d5 | d6 | d7) == 0) {
255 int16_t dcval = (int16_t) (d0 * (1 <<
PASS1_BITS));
256 register int v = (dcval & 0xffff) | ((dcval * (1 << 16)) & 0xffff0000);
572 tmp0 = tmp1 = tmp2 = tmp3 = 0;
597 for (rowctr =
DCTSIZE-1; rowctr >= 0; rowctr--) {
918 tmp0 = tmp1 = tmp2 = tmp3 = 0;
953 int32_t tmp0, tmp1, tmp2, tmp3;
954 int32_t tmp10, tmp11, tmp12, tmp13;
957 register int16_t *dataptr;
968 for (rowctr =
DCTSIZE-1; rowctr >= 0; rowctr--) {
985 if ((d2 | d4 | d6) == 0) {
990 register int v = (dcval & 0xffff) | ((dcval << 16) & 0xffff0000);
1012 tmp10 = tmp0 + tmp3;
1013 tmp13 = tmp0 - tmp3;
1014 tmp11 = tmp1 + tmp2;
1015 tmp12 = tmp1 - tmp2;
1024 tmp10 = tmp0 + tmp3;
1025 tmp13 = tmp0 - tmp3;
1026 tmp11 = tmp1 + tmp2;
1027 tmp12 = tmp1 - tmp2;
1038 tmp10 = tmp0 + tmp3;
1039 tmp13 = tmp0 - tmp3;
1040 tmp11 = tmp1 + tmp2;
1041 tmp12 = tmp1 - tmp2;
1064 for (rowctr =
DCTSIZE-1; rowctr >= 0; rowctr--) {
1090 tmp10 = tmp0 + tmp3;
1091 tmp13 = tmp0 - tmp3;
1092 tmp11 = tmp1 + tmp2;
1093 tmp12 = tmp1 - tmp2;
1102 tmp10 = tmp0 + tmp3;
1103 tmp13 = tmp0 - tmp3;
1104 tmp11 = tmp1 + tmp2;
1105 tmp12 = tmp1 - tmp2;
1116 tmp10 = tmp0 + tmp3;
1117 tmp13 = tmp0 - tmp3;
1118 tmp11 = tmp1 + tmp2;
1119 tmp12 = tmp1 - tmp2;
1139 int d00, d01, d10, d11;
1154 data[0] = (data[0] + 4)>>3;
void ff_j_rev_dct1(DCTBLOCK data)
ptrdiff_t const GLvoid * data
void ff_j_rev_dct4(DCTBLOCK data)
The exact code depends on how similar the blocks are and how related they are to the block
int16_t DCTBLOCK[DCTSIZE2]
void ff_add_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
void ff_j_rev_dct2(DCTBLOCK data)
void ff_put_pixels_clamped_c(const int16_t *block, uint8_t *av_restrict pixels, ptrdiff_t line_size)
void ff_j_rev_dct(DCTBLOCK data)
void ff_jref_idct_put(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
and forward the test the status of outputs and forward it to the corresponding return FFERROR_NOT_READY If the filters stores internally one or a few frame for some it can consider them to be part of the FIFO and delay acknowledging a status change accordingly Example code
common internal and external API header
void ff_jref_idct_add(uint8_t *dest, ptrdiff_t line_size, int16_t *block)
#define MULTIPLY(var, const)