summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Niedermayer <[email protected]>2015-03-11 22:04:41 +0100
committerMichael Niedermayer <[email protected]>2015-03-11 22:04:45 +0100
commitc388db185c8034d8cb00cb83e61dbc8d2805628f (patch)
tree2c790fb642fb65ec6dd9bb1ae286cbcac776504c
parenta19a10a53e4a2d83320da8d15e6266d98330b80d (diff)
parent893b353362bc220280efd8d14c4878a1cafe18a8 (diff)
Merge commit '893b353362bc220280efd8d14c4878a1cafe18a8' into release/0.10
* commit '893b353362bc220280efd8d14c4878a1cafe18a8': x86: Only use optimizations with cmov if the CPU supports the instruction Merged-by: Michael Niedermayer <[email protected]>
-rw-r--r--doc/APIchanges2
-rw-r--r--libavcodec/x86/dsputil_mmx.c3
-rw-r--r--libavcodec/x86/h264_intrapred_init.c3
-rw-r--r--libavcodec/x86/h264dsp_mmx.c3
4 files changed, 7 insertions, 4 deletions
diff --git a/doc/APIchanges b/doc/APIchanges
index 6484a2a46a..b35a65821b 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -13,7 +13,7 @@ libavutil: 2011-04-18
API changes, most recent first:
-2014-09-16 - xxxxxxx - lavu 51.22.3 - cpu.h
+2014-09-16 - 8637f4e - lavu 51.22.3 - cpu.h
Add AV_CPU_FLAG_CMOV.
2012-01-24 - xxxxxxx - lavfi 2.60.100
diff --git a/libavcodec/x86/dsputil_mmx.c b/libavcodec/x86/dsputil_mmx.c
index 6847e6e6f8..3d394a1dfe 100644
--- a/libavcodec/x86/dsputil_mmx.c
+++ b/libavcodec/x86/dsputil_mmx.c
@@ -2668,7 +2668,8 @@ void dsputil_init_mmx(DSPContext* c, AVCodecContext *avctx)
c->add_hfyu_median_prediction = ff_add_hfyu_median_prediction_mmx2;
#endif
#if HAVE_7REGS
- if (HAVE_AMD3DNOW && (mm_flags & AV_CPU_FLAG_3DNOW))
+ if (HAVE_AMD3DNOW && (mm_flags & AV_CPU_FLAG_3DNOW) &&
+ (mm_flags & AV_CPU_FLAG_CMOV))
c->add_hfyu_median_prediction = add_hfyu_median_prediction_cmov;
#endif
diff --git a/libavcodec/x86/h264_intrapred_init.c b/libavcodec/x86/h264_intrapred_init.c
index 967503e646..b9a6fc3e0d 100644
--- a/libavcodec/x86/h264_intrapred_init.c
+++ b/libavcodec/x86/h264_intrapred_init.c
@@ -188,7 +188,8 @@ void ff_h264_pred_init_x86(H264PredContext *h, int codec_id, const int bit_depth
if (chroma_format_idc <= 1)
h->pred8x8 [PLANE_PRED8x8] = ff_pred8x8_plane_mmx;
if (codec_id == CODEC_ID_SVQ3) {
- h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_mmx;
+ if (mm_flags & AV_CPU_FLAG_CMOV)
+ h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_svq3_mmx;
} else if (codec_id == CODEC_ID_RV40) {
h->pred16x16[PLANE_PRED8x8] = ff_pred16x16_plane_rv40_mmx;
} else {
diff --git a/libavcodec/x86/h264dsp_mmx.c b/libavcodec/x86/h264dsp_mmx.c
index fdf44c59a9..e3854ff2ea 100644
--- a/libavcodec/x86/h264dsp_mmx.c
+++ b/libavcodec/x86/h264dsp_mmx.c
@@ -361,7 +361,8 @@ void ff_h264dsp_init_x86(H264DSPContext *c, const int bit_depth, const int chrom
if (chroma_format_idc <= 1)
c->h264_idct_add8 = ff_h264_idct_add8_8_mmx;
c->h264_idct_add16intra = ff_h264_idct_add16intra_8_mmx;
- c->h264_luma_dc_dequant_idct= ff_h264_luma_dc_dequant_idct_mmx;
+ if (mm_flags & AV_CPU_FLAG_CMOV)
+ c->h264_luma_dc_dequant_idct = ff_h264_luma_dc_dequant_idct_mmx;
if (mm_flags & AV_CPU_FLAG_MMX2) {
c->h264_idct_dc_add = ff_h264_idct_dc_add_8_mmx2;