[FFmpeg-devel] [PATCH] avio: fix fourcc if any character is >=0x80.

Ronald S. Bultje rsbultje
Fri Mar 4 22:19:26 CET 2011


Hi,

On Fri, Mar 4, 2011 at 4:14 PM, Baptiste Coudurier
<baptiste.coudurier at gmail.com> wrote:
> On 3/4/11 7:50 AM, Ronald S. Bultje wrote:
>> Hi,
>>
>> 2011/3/4 M?ns Rullg?rd <mans at mansr.com>:
>>> "Ronald S. Bultje" <rsbultje at gmail.com> writes:
>>>
>>>> Fixes issue 2638.
>>>> ---
>>>> ?libavformat/avio_internal.h | ? ?5 ++++-
>>>> ?1 files changed, 4 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/libavformat/avio_internal.h b/libavformat/avio_internal.h
>>>> index 3b38990..279c7f6 100644
>>>> --- a/libavformat/avio_internal.h
>>>> +++ b/libavformat/avio_internal.h
>>>> @@ -42,6 +42,9 @@ int ffio_read_partial(AVIOContext *s, unsigned char *buf, int size);
>>>>
>>>> ?void ffio_fill(AVIOContext *s, int b, int count);
>>>>
>>>> -#define ffio_wfourcc(pb, str) avio_wl32(pb, MKTAG((str)[0], (str)[1], (str)[2], (str)[3]))
>>>> +static av_always_inline void ffio_wfourcc(AVIOContext *pb, const uint8_t *s)
>>>> +{
>>>> + ? ?avio_wl32(pb, MKTAG(s[0], s[1], s[2], s[3]));
>>>> +}
>
> avio_write(pb, s, 4) is faster and better IMHO.
> Why not using that ?

I'd like to eventually change avio_wl32() into doing that if
endianness is suitable, just didn't get to it yet.

Also, I believe it should actually use AV_WL32() instead of a plain
avio_write() (which, on x86-32, expands to the same ASM).

Ronald



More information about the ffmpeg-devel mailing list