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

James Almer jamrial at gmail.com
Wed Jun 4 01:01:42 CEST 2014


On 28/05/14 7:58 PM, James Almer wrote:
> 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?

Ping



More information about the ffmpeg-devel mailing list