[FFmpeg-devel] lavfi state of affairs
Baptiste Coudurier
baptiste.coudurier
Fri Feb 6 02:26:33 CET 2009
On 2/5/2009 4:54 PM, Michael Niedermayer wrote:
> On Thu, Feb 05, 2009 at 04:40:50PM -0800, Baptiste Coudurier wrote:
>> On 2/5/2009 3:52 PM, Michael Niedermayer wrote:
>>> On Thu, Feb 05, 2009 at 03:35:24PM -0800, Baptiste Coudurier
>>> wrote:
>>>> On 2/5/2009 3:18 PM, Michael Niedermayer wrote:
>>> [...]
>>>>>>>> [...]
>>>>>>>>
>>>>>>>> Also libswscale does not support palette output, this
>>>>>>>> makes GIF encoder _useless_.
>>>>>>> swscale supports 4bit and 8bit palette output with a
>>>>>>> fixed palette
>>>>>> Huh ? PAL8 is not mentioned in isSupportedOut(). Is this a
>>>>>> mistake ?
>>>>> yes and no PAL8 in sws means generic PAL8 with arbitrary
>>>>> palette or maybe optimized by sws palette, neither we
>>>>> support. fixed palette that imgconvert calls pal8 is
>>>>> bgr8/rgb8 but with a different palette than imgconvert (swss
>>>>> is simpler to quantize to)
>>>> And here I'm lost, according to avutil.h:
>>>>
>>>> PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette
>>>>
>>>> and
>>>>
>>>> PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G
>>>> 3R(lsb)
>>>>
>>>> Btw, in cpu endianess ? ;)
>>> yes, in cpu endianness, little endian and big endian, its 1 byte
>>> so all at the same time :)
>>>
>>>
>>>> So what should gif encoder _use_ ?
>>> i would say PAL8 + BGR8 + RGB8, in principle PAL8 alone should
>>> work too but then some code somewhere has to turn that into
>>> BGR8/RGB8. supporting all 3 directly is slightly nicer i think,
>>> it would allow the user to choose between PAL8 (custom palette)
>>> once this is supported and RGB8 (fixed palette) via -pix_fmt
>> Am I confused or we should stop using RGB8 name since it does not
>> represent an index to palette ?
>
> RGB8/BGR8 should also set a palette in data[1] (maybe they dont
> currently but that can be fixed if you confirm that it is not set
> ...) thus RGB8/BGR8 also represent an index into a palette.
WTF But according to avutil.h documentation, BGR8 does not mean an index
to a palette .......
>> Besides does this mean that gif encoder is right to use PAL8, and
>> libswscale is supporting PAL8 but misuse BGR8 ?
>
> i dont understand what you mean
You said that libswscale supports PAL8 however it isSupportedOut does
not accept PIX_FMT_PAL8.
Can we refer in terms of PIX_FMT_* please ?
I don't understand anything of what you explain, yet Im dev, how can you
expect a user to understand ?
Libav* user looks and see: "OH gif uses PAL8", then he setups libswscale
and libswscale chokes saying PAL8 unsupported. What does he do ? He will
use imgconvert !
>> I have too many things to do than extending gif encoder in the
>> near future...
>>
>> Also one thing I remember now, I have noticed that:
>>
>> yuv422p -> yuv420p with imgconvert is by default 50% faster than
>> libswscale when not configuring anything:
>
> imgconvert uses nearest neighbor scaling for chroma IIRC so no
> surprise here, it should be compared to sws with similar parameters
Nice, what would be the parameters ? Should I look at where params are
defined in the source code ?
> also if you want fast&crappy yuv422p -> yuv420p theres a trick from
> mplayer, chroma linesize*=2, this should be easy to do with lavfi
Well with neigbor scaling, I _barely_ see any difference of what you
call. I won't ever consider loosing 50% performance for something I
barely see.
Well I'd like to acheive same performance with libswscale even if this
implies _same_ quality than imgconvert, otherwise I loose a feature.
--
Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
checking for life_signs in -lkenny... no
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list