summaryrefslogtreecommitdiff
path: root/libavcodec/xvididct.c
diff options
context:
space:
mode:
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);