Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Massimino <pascal.massimino@gmail.com>2014-08-09 15:06:17 +0400
committerMichael Niedermayer <michaelni@gmx.at>2014-08-12 23:58:45 +0400
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);