summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMåns Rullgård <mans@mansr.com>2009-01-18 05:52:12 +0000
committerMåns Rullgård <mans@mansr.com>2009-01-18 05:52:12 +0000
commit74c474634487696fa0cca055cb8694d0e4bc1329 (patch)
tree7053ebb58fb85e1f9fbd0d3c14407b8a2e2dc534
parentc2fbf89398bcb3e8b652c23a18200d79cac84fc2 (diff)
Alpha: proper IDCT selection
Only select the Alpha IDCT if auto or explicitly requested. Also disable it in lowres mode. Originally committed as revision 16666 to svn://svn.ffmpeg.org/ffmpeg/trunk
-rw-r--r--libavcodec/alpha/dsputil_alpha.c4
-rw-r--r--libavcodec/avcodec.h1
-rw-r--r--libavcodec/options.c1
3 files changed, 6 insertions, 0 deletions
diff --git a/libavcodec/alpha/dsputil_alpha.c b/libavcodec/alpha/dsputil_alpha.c
index c1500b11f9..905137edf2 100644
--- a/libavcodec/alpha/dsputil_alpha.c
+++ b/libavcodec/alpha/dsputil_alpha.c
@@ -356,7 +356,11 @@ void dsputil_init_alpha(DSPContext* c, AVCodecContext *avctx)
put_pixels_clamped_axp_p = c->put_pixels_clamped;
add_pixels_clamped_axp_p = c->add_pixels_clamped;
+ if (!avctx->lowres &&
+ (avctx->idct_algo == FF_IDCT_AUTO ||
+ avctx->idct_algo == FF_IDCT_SIMPLEALPHA)) {
c->idct_put = simple_idct_put_axp;
c->idct_add = simple_idct_add_axp;
c->idct = simple_idct_axp;
+ }
}
diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 958ba8c30d..edd4a7beb6 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -1398,6 +1398,7 @@ typedef struct AVCodecContext {
#define FF_IDCT_FAAN 20
#define FF_IDCT_EA 21
#define FF_IDCT_SIMPLENEON 22
+#define FF_IDCT_SIMPLEALPHA 23
/**
* slice count
diff --git a/libavcodec/options.c b/libavcodec/options.c
index e04219a1d7..953dfe6a06 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -210,6 +210,7 @@ static const AVOption options[]={
{"simplearmv5te", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV5TE, INT_MIN, INT_MAX, V|E|D, "idct"},
{"simplearmv6", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEARMV6, INT_MIN, INT_MAX, V|E|D, "idct"},
{"simpleneon", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLENEON, INT_MIN, INT_MAX, V|E|D, "idct"},
+{"simplealpha", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_SIMPLEALPHA, INT_MIN, INT_MAX, V|E|D, "idct"},
{"h264", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_H264, INT_MIN, INT_MAX, V|E|D, "idct"},
{"vp3", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_VP3, INT_MIN, INT_MAX, V|E|D, "idct"},
{"ipp", NULL, 0, FF_OPT_TYPE_CONST, FF_IDCT_IPP, INT_MIN, INT_MAX, V|E|D, "idct"},