diff options
author | Pascal Massimino <pascal.massimino@gmail.com> | 2014-08-09 13:06:17 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2014-08-12 21:58:45 +0200 |
commit | 298b3b6c1f8f66b9bc6de53a7b51d3de745d946b (patch) | |
tree | 464a3a571455ebf0f5eb5e0453482a00cf8a9ea3 /libavcodec/xvididct.c | |
parent | 9ffac3d00d2f453552c7541dcdd96f88b2419bb2 (diff) | |
download | ffmpeg-298b3b6c1f8f66b9bc6de53a7b51d3de745d946b.tar.gz |
avcodec: add C xvid IDCT support
Thanks to Pascal Massimino and Michael Militzer for permission to use under LGPL
The xvid idct code is from xvid, and nearly unchanged to make future syncing easy
the integration into ffmpeg is done by the commiter
the commit message is written by the commiter
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/xvididct.c')
-rw-r--r-- | libavcodec/xvididct.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/libavcodec/xvididct.c b/libavcodec/xvididct.c index 8645af439a..ac10d2d613 100644 --- a/libavcodec/xvididct.c +++ b/libavcodec/xvididct.c @@ -22,6 +22,18 @@ #include "idctdsp.h" #include "xvididct.h" +static void idct_xvid_put(uint8_t *dest, int line_size, int16_t *block) +{ + ff_idct_xvid(block); + put_pixels_clamped_c(block, dest, line_size); +} + +static void idct_xvid_add(uint8_t *dest, int line_size, int16_t *block) +{ + ff_idct_xvid(block); + add_pixels_clamped_c(block, dest, line_size); +} + av_cold void ff_xvididct_init(IDCTDSPContext *c, AVCodecContext *avctx) { const unsigned high_bit_depth = avctx->bits_per_raw_sample > 8; @@ -31,6 +43,13 @@ av_cold void ff_xvididct_init(IDCTDSPContext *c, AVCodecContext *avctx) avctx->idct_algo == FF_IDCT_XVID)) return; + if (avctx->idct_algo == FF_IDCT_XVID) { + c->idct_put = idct_xvid_put; + c->idct_add = idct_xvid_add; + c->idct = ff_idct_xvid; + c->perm_type = FF_IDCT_PERM_NONE; + } + if (ARCH_X86) ff_xvididct_init_x86(c); |