[FFmpeg-devel] [PATCH] x86/fdct: port fdct functions to yasm

James Almer jamrial at gmail.com
Thu May 29 00:58:12 CEST 2014


On 25/05/14 8:58 PM, James Almer wrote:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/x86/Makefile         |   3 +-
>  libavcodec/x86/dsputilenc_mmx.c |  42 ++-
>  libavcodec/x86/fdct.asm         | 298 ++++++++++++++++++++
>  libavcodec/x86/fdct.c           | 594 ----------------------------------------
>  4 files changed, 315 insertions(+), 622 deletions(-)
>  create mode 100644 libavcodec/x86/fdct.asm
>  delete mode 100644 libavcodec/x86/fdct.c

Currently, this line is preventing this patch from working if ffmpeg is configured 
with --disable-yasm: 
http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavcodec/x86/mpegvideoenc_template.c;h=76a5c5a154cd9c04e714ac623ef2673d15f60764;hb=HEAD#l112
This is an inline asm function that's unconditionally calling one of the simd versions 
of ff_fdct, and was introduced 12 years ago in commit 28db7fce.

There doesn't seem to be a FATE test currently using dct_quantize_<opt> to see if 
changing that line to "s->dsp.fdct(block);" is a possibility (So it might fall back to 
the C implementation if needed), and I'm not sure how to manually trigger it either.
Then there's of course the comment in that line that makes me wonder if changing it 
isn't out of the question to begin with.

The only other solutions would be making the simd versions of dct_quantize depend on 
both inline asm and yasm (Which is ugly and we already reverted changes that tried 
this before), or port them to yasm, which is a big task I'm not really up to.

Any idea if changing that line as mentioned above is a possibility? Or any way/sample 
to test the simd versions of dct_quantize?


More information about the ffmpeg-devel mailing list