summaryrefslogtreecommitdiff
path: root/libavcodec/xvididct.c
diff options
context:
space:
mode:
authorPascal Massimino <pascal.massimino@gmail.com>2014-08-09 13:06:17 +0200
committerMichael Niedermayer <michaelni@gmx.at>2014-08-12 21:58:45 +0200
commit298b3b6c1f8f66b9bc6de53a7b51d3de745d946b (patch)
tree464a3a571455ebf0f5eb5e0453482a00cf8a9ea3 /libavcodec/xvididct.c
parent9ffac3d00d2f453552c7541dcdd96f88b2419bb2 (diff)
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.c19
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);