From 1768e43cebd646174bb1366611da575052989e0a Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sun, 20 Jan 2013 22:26:42 -0800 Subject: [PATCH 1/2] vorbisdsp: change block_size type from int to intptr_t. This saves one instruction in the x86-64 assembly. --- libavcodec/arm/vorbisdsp_init_arm.c | 3 ++- libavcodec/ppc/vorbisdsp_altivec.c | 2 +- libavcodec/vorbis.h | 2 +- libavcodec/vorbisdec.c | 2 +- libavcodec/vorbisdsp.h | 5 ++++- libavcodec/x86/vorbisdsp_init.c | 6 ++++-- 6 files changed, 13 insertions(+), 7 deletions(-) diff --git a/libavcodec/arm/vorbisdsp_init_arm.c b/libavcodec/arm/vorbisdsp_init_arm.c index ec8fbd5bc9..8c88cc5404 100644 --- a/libavcodec/arm/vorbisdsp_init_arm.c +++ b/libavcodec/arm/vorbisdsp_init_arm.c @@ -24,7 +24,8 @@ #include "libavutil/arm/cpu.h" #include "libavcodec/vorbisdsp.h" -void ff_vorbis_inverse_coupling_neon(float *mag, float *ang, int blocksize); +void ff_vorbis_inverse_coupling_neon(float *mag, float *ang, + intptr_t blocksize); void ff_vorbisdsp_init_arm(VorbisDSPContext *c) { diff --git a/libavcodec/ppc/vorbisdsp_altivec.c b/libavcodec/ppc/vorbisdsp_altivec.c index 07c232430f..d6b961c6e9 100644 --- a/libavcodec/ppc/vorbisdsp_altivec.c +++ b/libavcodec/ppc/vorbisdsp_altivec.c @@ -27,7 +27,7 @@ #if HAVE_ALTIVEC static void vorbis_inverse_coupling_altivec(float *mag, float *ang, - int blocksize) + intptr_t blocksize) { int i; vector float m, a; diff --git a/libavcodec/vorbis.h b/libavcodec/vorbis.h index 6b72f6ad7e..e4d7dd4847 100644 --- a/libavcodec/vorbis.h +++ b/libavcodec/vorbis.h @@ -43,7 +43,7 @@ int ff_vorbis_len2vlc(uint8_t *bits, uint32_t *codes, unsigned num); void ff_vorbis_floor1_render_list(vorbis_floor1_entry * list, int values, uint16_t *y_list, int *flag, int multiplier, float * out, int samples); -void ff_vorbis_inverse_coupling(float *mag, float *ang, int blocksize); +void ff_vorbis_inverse_coupling(float *mag, float *ang, intptr_t blocksize); #define ilog(i) av_log2(2*(i)) diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index 6b75ae393a..791314e9fc 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -1450,7 +1450,7 @@ static inline int vorbis_residue_decode(vorbis_context *vc, vorbis_residue *vr, } } -void ff_vorbis_inverse_coupling(float *mag, float *ang, int blocksize) +void ff_vorbis_inverse_coupling(float *mag, float *ang, intptr_t blocksize) { int i; for (i = 0; i < blocksize; i++) { diff --git a/libavcodec/vorbisdsp.h b/libavcodec/vorbisdsp.h index b6b2f29fd8..32fcfef5b0 100644 --- a/libavcodec/vorbisdsp.h +++ b/libavcodec/vorbisdsp.h @@ -19,9 +19,12 @@ #ifndef AVCODEC_VORBISDSP_H #define AVCODEC_VORBISDSP_H +#include + typedef struct VorbisDSPContext { /* assume len is a multiple of 4, and arrays are 16-byte aligned */ - void (*vorbis_inverse_coupling)(float *mag, float *ang, int blocksize); + void (*vorbis_inverse_coupling)(float *mag, float *ang, + intptr_t blocksize); } VorbisDSPContext; void ff_vorbisdsp_init(VorbisDSPContext *dsp); diff --git a/libavcodec/x86/vorbisdsp_init.c b/libavcodec/x86/vorbisdsp_init.c index 5243095003..6f86f6720d 100644 --- a/libavcodec/x86/vorbisdsp_init.c +++ b/libavcodec/x86/vorbisdsp_init.c @@ -25,7 +25,8 @@ #if HAVE_INLINE_ASM #if ARCH_X86_32 -static void vorbis_inverse_coupling_3dnow(float *mag, float *ang, int blocksize) +static void vorbis_inverse_coupling_3dnow(float *mag, float *ang, + intptr_t blocksize) { int i; __asm__ volatile ("pxor %%mm7, %%mm7":); @@ -54,7 +55,8 @@ static void vorbis_inverse_coupling_3dnow(float *mag, float *ang, int blocksize) } #endif -static void vorbis_inverse_coupling_sse(float *mag, float *ang, int blocksize) +static void vorbis_inverse_coupling_sse(float *mag, float *ang, + intptr_t blocksize) { int i; From ce378f0dd0c4e5350b3280e6b3e8d6b46fe4b0a3 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sat, 19 Jan 2013 12:04:06 -0800 Subject: [PATCH 2/2] fate: Use wmv2 IDCT for wmv2 tests --- libavcodec/wmv2enc.c | 4 ++++ tests/fate-run.sh | 3 ++- tests/fate/vcodec.mak | 5 +++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/libavcodec/wmv2enc.c b/libavcodec/wmv2enc.c index 4643835145..ee6136b265 100644 --- a/libavcodec/wmv2enc.c +++ b/libavcodec/wmv2enc.c @@ -55,6 +55,10 @@ static int encode_ext_header(Wmv2Context *w){ static av_cold int wmv2_encode_init(AVCodecContext *avctx){ Wmv2Context * const w= avctx->priv_data; + if(avctx->idct_algo==FF_IDCT_AUTO){ + avctx->idct_algo=FF_IDCT_WMV2; + } + if(ff_MPV_encode_init(avctx) < 0) return -1; diff --git a/tests/fate-run.sh b/tests/fate-run.sh index d1633e8be4..9c23b674c8 100755 --- a/tests/fate-run.sh +++ b/tests/fate-run.sh @@ -128,6 +128,7 @@ enc_dec(){ enc_opt=$4 dec_fmt=$5 dec_opt=$6 + ddc_opt=$8 encfile="${outdir}/${test}.${enc_fmt}" decfile="${outdir}/${test}.out.${dec_fmt}" cleanfiles="$cleanfiles $decfile" @@ -139,7 +140,7 @@ enc_dec(){ -f $enc_fmt -y $tencfile || return do_md5sum $encfile echo $(wc -c $encfile) - avconv $DEC_OPTS -i $tencfile $ENC_OPTS $dec_opt $FLAGS \ + avconv $DEC_OPTS $ddc_opt -i $tencfile $ENC_OPTS $dec_opt $FLAGS \ -f $dec_fmt -y $tdecfile || return do_md5sum $decfile tests/tiny_psnr $srcfile $decfile $cmp_unit $cmp_shift diff --git a/tests/fate/vcodec.mak b/tests/fate/vcodec.mak index 5a5b703b45..cc33010978 100644 --- a/tests/fate/vcodec.mak +++ b/tests/fate/vcodec.mak @@ -2,7 +2,7 @@ fate-vsynth1-%: SRC = tests/data/vsynth1.yuv fate-vsynth2-%: SRC = tests/data/vsynth2.yuv fate-vsynth%: CODEC = $(word 3, $(subst -, ,$(@))) fate-vsynth%: FMT = avi -fate-vsynth%: CMD = enc_dec "rawvideo -s 352x288 -pix_fmt yuv420p" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-s 352x288 -pix_fmt yuv420p $(DECOPTS)" -keep +fate-vsynth%: CMD = enc_dec "rawvideo -s 352x288 -pix_fmt yuv420p" $(SRC) $(FMT) "-c $(CODEC) $(ENCOPTS)" rawvideo "-s 352x288 -pix_fmt yuv420p $(DECOPTS)" -keep "$(DDCOPTS)" fate-vsynth%: CMP_UNIT = 1 fate-vsynth%: REF = $(SRC_PATH)/tests/ref/vsynth/$(@:fate-%=%) @@ -218,7 +218,8 @@ FATE_VCODEC-$(call ENCDEC, WMV1, AVI) += wmv1 fate-vsynth%-wmv1: ENCOPTS = -qscale 10 FATE_VCODEC-$(call ENCDEC, WMV2, AVI) += wmv2 -fate-vsynth%-wmv2: ENCOPTS = -qscale 10 +fate-vsynth%-wmv2: DDCOPTS = -idct auto +fate-vsynth%-wmv2: ENCOPTS = -qscale 10 -idct auto FATE_VCODEC-$(call ENCDEC, RAWVIDEO, AVI) += yuv fate-vsynth%-yuv: CODEC = rawvideo