[FFmpeg-cvslog] r17686 - trunk/libavformat/r3d.c
Baptiste Coudurier
baptiste.coudurier
Sun Mar 1 23:58:58 CET 2009
Aurelien Jacobs wrote:
> Baptiste Coudurier wrote:
>
>> Hi,
>>
>> On 3/1/2009 7:28 AM, aurel wrote:
>>> Author: aurel
>>> Date: Sun Mar 1 16:28:56 2009
>>> New Revision: 17686
>>>
>>> Log:
>>> use new metadata API in r3d demuxer
>>>
>>> Modified:
>>> trunk/libavformat/r3d.c
>>>
>>> Modified: trunk/libavformat/r3d.c
>>> ==============================================================================
>>> --- trunk/libavformat/r3d.c Sun Mar 1 15:56:27 2009 (r17685)
>>> +++ trunk/libavformat/r3d.c Sun Mar 1 16:28:56 2009 (r17686)
>>> @@ -51,6 +51,7 @@ static int read_atom(AVFormatContext *s,
>>> static int r3d_read_red1(AVFormatContext *s)
>>> {
>>> AVStream *st = av_new_stream(s, 0);
>>> + char filename[258];
>>> int tmp, tmp2;
>>>
>>> if (!st)
>>> @@ -92,12 +93,11 @@ static int r3d_read_red1(AVFormatContext
>>> av_set_pts_info(ast, 32, 1, st->time_base.den);
>>> }
>>>
>>> - st->filename = av_mallocz(258);
>>> - if (!st->filename)
>>> - return AVERROR(ENOMEM);
>>> - get_buffer(s->pb, st->filename, 257);
>>> + get_buffer(s->pb, filename, 257);
>>> + filename[sizeof(filename)-1] = 0;
>>> + av_metadata_set(&st->metadata, "filename", filename);
>>>
>>> - dprintf(s, "filename %s\n", st->filename);
>>> + dprintf(s, "filename %s\n", filename);
>>> dprintf(s, "resolution %dx%d\n", st->codec->width, st->codec->height);
>>> dprintf(s, "timescale %d\n", st->time_base.den);
>>> dprintf(s, "frame rate %d/%d\n",
>> Wouldn't it be more convenient to be able to av_metadata_set using
>> uint8_t *, avoiding memcpy/strdup ?
>
> Could you be more specific ? I don't get what you mean. This is exactly
> how av_metadata_set() works right now.
Really ? I see av_strdup in av_metadata_set.
> Or maybe you mean using av_metadata_set() with a ByteIOContext* ?
> And if so, should it read a fixed amount of bytes (eventually adding
> trailing 0) or should it read until it find a 0 ? In the last case,
> it wouldn't avoid a memcpy. And in the first case, I think it would
> anyway handle only a very limited subset of the av_metadata_set()
> use case.
>
I mean:
filename = av_malloc(257);
get_buffer(s->pb, filename, 257);
<set trailing 0>
av_metadata_set(&st->metadata, "filename", filename);
av_metadata_set won't memcpy nor strdup, it will use given buffer, this
avoids declaring a local buffer.
--
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-cvslog
mailing list