# Pastebin hgz0N2IG diff --git a/libavcodec/idctdsp.c b/libavcodec/idctdsp.c index f42803c..e1f1d98 100644 --- a/libavcodec/idctdsp.c +++ b/libavcodec/idctdsp.c @@ -256,8 +256,8 @@ av_cold void ff_idctdsp_init(IDCTDSPContext *c, AVCodecContext *avctx) c->perm_type = FF_IDCT_PERM_NONE; } else { if (avctx->bits_per_raw_sample == 10 || avctx->bits_per_raw_sample == 9) { - //c->idct_put = ff_simple_idct_put_10; - c->idct_put = ff_idct_float; + c->idct_put = ff_simple_idct_put_10; + //c->idct_put = ff_idct_float; c->idct_add = ff_simple_idct_add_10; c->idct = ff_simple_idct_10; c->perm_type = FF_IDCT_PERM_NONE; diff --git a/libavcodec/simple_idct_template.c b/libavcodec/simple_idct_template.c index f532313..9105936 100644 --- a/libavcodec/simple_idct_template.c +++ b/libavcodec/simple_idct_template.c @@ -78,8 +78,8 @@ #define COL_SHIFT 18 #define DC_SHIFT 1 # else -#define ROW_SHIFT 12 -#define COL_SHIFT 19 +#define ROW_SHIFT 13 +#define COL_SHIFT 21 #define DC_SHIFT 2 # endif @@ -109,11 +109,12 @@ #ifdef EXTRA_SHIFT static inline void FUNC(idctRowCondDC_extrashift)(int16_t *row, int extra_shift) #else -static inline void FUNC(idctRowCondDC)(int16_t *row, int extra_shift) +static inline void FUNC(idctRowCondDC)(int32_t *row, int extra_shift) #endif { SUINT a0, a1, a2, a3, b0, b1, b2, b3; +#if 0 #if HAVE_FAST_64BIT #define ROW0_MASK (0xffffLL << 48 * HAVE_BIGENDIAN) if (((AV_RN64A(row) & ~ROW0_MASK) | AV_RN64A(row+4)) == 0) { @@ -148,6 +149,7 @@ static inline void FUNC(idctRowCondDC)(int16_t *row, int extra_shift) return; } #endif +#endif a0 = (W4 * row[0]) + (1 << (ROW_SHIFT + extra_shift - 1)); a1 = a0; @@ -168,7 +170,7 @@ static inline void FUNC(idctRowCondDC)(int16_t *row, int extra_shift) b3 = MUL(W7, row[1]); MAC(b3, -W5, row[3]); - if (AV_RN64A(row + 4)) { + if (1) { a0 += W4*row[4] + W6*row[6]; a1 += - W4*row[4] - W2*row[6]; a2 += - W4*row[4] + W2*row[6]; @@ -251,7 +253,7 @@ static inline void FUNC(idctRowCondDC)(int16_t *row, int extra_shift) static inline void FUNC(idctSparseCol_extrashift)(int16_t *col) #else static inline void FUNC(idctSparseColPut)(pixel *dest, ptrdiff_t line_size, - int16_t *col) + int32_t *col) { SUINT a0, a1, a2, a3, b0, b1, b2, b3; @@ -316,8 +318,9 @@ static inline void FUNC(idctSparseCol)(int16_t *col) } #ifndef EXTRA_SHIFT -void FUNC(ff_simple_idct_put)(uint8_t *dest_, ptrdiff_t line_size, int16_t *block) +void FUNC(ff_simple_idct_put)(uint8_t *dest_, ptrdiff_t line_size, int16_t *block_) { + int32_t *block = (int32_t *)block_; pixel *dest = (pixel *)dest_; int i;