[FFmpeg-devel] [PATCH] yadif port to libavfitler

Måns Rullgård mans
Sun Jul 4 14:23:56 CEST 2010


Reinhard Tartler <siretart at tauware.de> writes:

> On Sun, Jul 04, 2010 at 03:36:55 (EDT), Eli Friedman wrote:
>
>> On Sun, Jul 4, 2010 at 12:18 AM, Reimar D?ffinger
>> <Reimar.Doeffinger at gmx.de> wrote:
>>> On Sat, Jul 03, 2010 at 11:34:36PM -0700, Eli Friedman wrote:
>>>> We already use cmov and MMX unconditionally (i.e. assume a Pentium-II
>>>> equivalent) if ffmpeg is built on a machine that has them... not sure
>>>> if that was intentional, but as far as I know there haven't been any
>>>> complaints. ?So that seems fine.
>>>
>>> If that's the case someone broke --enable-runtime-cpudetect and distributions
>>> sure won't be happy about it.
>>
>> Oh, wait, looking more carefully, I don't think anything's broken if
>> you use an i386 gcc and force the CPU in configure to i386.
>
> Sorry, please elaborate here.
>
> If nothing is forced [1], then I end up with these settings in
> config.mak
>
>>> grep -E '(CPU|MMX)' config.mak
> !HAVE_IWMMXT=yes
> HAVE_MMX=yes
> HAVE_MMX2=yes
> CONFIG_RUNTIME_CPUDETECT=yes
>
> in config.log, I see this:
>>> grep ^cpu config.log
> cpu='generic'
>
> what part in ffmpeg is exactly unconditionally using mmx instructions in
> this configuration?
>
> [1] I've used this configuration:
> "--enable-shared --disable-static --enable-gpl --enable-runtime-cpudetect"

That will compile the C code to whatever default target your gcc uses.
The MMX/SSE code is built but used only if cpuid says it's available.

If you do specify a CPU of i686 or later, some asm which cannot be
disable at runtime will be built.  One example is the CABAC decoder
used by H264 which makes good use of cmov if this instruction is
available.  The dumb default here uses lots of unpredictable branches.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list