summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/avcodec.h1
-rw-r--r--libavcodec/sh4/dsputil_sh4.c9
2 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 63511421eb..1393275da8 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -844,6 +844,7 @@ typedef struct AVCodecContext {
#define FF_IDCT_MLIB 6
#define FF_IDCT_ARM 7
#define FF_IDCT_ALTIVEC 8
+#define FF_IDCT_SH4 9
/**
* slice count.
diff --git a/libavcodec/sh4/dsputil_sh4.c b/libavcodec/sh4/dsputil_sh4.c
index 6cf5e72eaf..8ba5c64d27 100644
--- a/libavcodec/sh4/dsputil_sh4.c
+++ b/libavcodec/sh4/dsputil_sh4.c
@@ -105,10 +105,13 @@ extern void dsputil_init_align(DSPContext* c, AVCodecContext *avctx);
void dsputil_init_sh4(DSPContext* c, AVCodecContext *avctx)
{
+ const int idct_algo= avctx->idct_algo;
dsputil_init_align(c,avctx);
c->clear_blocks = clear_blocks_sh4;
- c->idct_put = idct_put;
- c->idct_add = idct_add;
- c->idct_permutation_type= FF_NO_IDCT_PERM; //FF_SIMPLE_IDCT_PERM; //FF_LIBMPEG2_IDCT_PERM;
+ if(idct_algo==FF_IDCT_AUTO || idct_algo==FF_IDCT_SH4){
+ c->idct_put = idct_put;
+ c->idct_add = idct_add;
+ c->idct_permutation_type= FF_NO_IDCT_PERM; //FF_SIMPLE_IDCT_PERM; //FF_LIBMPEG2_IDCT_PERM;
+ }
}