[FFmpeg-devel] [PATCH] Speex parser

Måns Rullgård mans
Mon Sep 21 01:23:45 CEST 2009


Michael Niedermayer <michaelni at gmx.at> writes:

> On Sun, Sep 20, 2009 at 10:05:36PM +0100, M?ns Rullg?rd wrote:
>> "Ronald S. Bultje" <rsbultje at gmail.com> writes:
>> 
>> > Hi,
>> >
>> > 2009/9/20 M?ns Rullg?rd <mans at mansr.com>:
>> >> What I would like is a raw demuxer returning exactly what is in the
>> >> file, no decoding, no parsing. ?This can be done separately if
>> >> needed.
>> >
>> > Isn't that av_read_packet() (instead of av_read_frame())?
>> 
>> Sort of, except that av_read_packet() doesn't actually work.  During
>> file opening, some packets are read, analysed, and placed in a queue.
>> This queue is bypassed by av_read_packet() so you miss the first few
>> packets of the file.
>> 
>> It is possible to open a file without having it analysed, but then yet
>> other things stop working, e.g. the list of streams might not be
>> populated for an mpeg-ps file.
>
> iam trying to implement what you want but iam hitting a wall here
> there really are so many things filled in and you clearly do want many
> to be kept. I cant read your mind, please say clearly which values you
> want not to be filled in by lavf?

I don't need this urgently or anything, so don't spend your time on
this unless you really want to.  I'm sure there are more pressing
things in need of attention (such as my patches ;-).

> please correct below:
> pts/dts:                    no
> frame boundaries:           no
> start_time:                 ?
> file duration:              ?
> packet duration:            (pretty much meaningless without parsers)
> stream array:               yes
> extradata:                  (unreliable without parsers)

Why is that?  If a file header contains extradata, it should be
returned, otherwise not.  The ogg abomination is of course a special
case.

> fps:                        (unreliable without parsers)
> values that need decoding:  (unreliable without parsers)

I want whatever fields are provided by global headers.  If fps is
provided, return it unchecked, otherwise leave undefined.  Any
decoding/parsing required to determine missing values I can do myself.

I'm mentioning these things because, although I'm not working on
anything lavf-based at the moment, whenever I do, I often find these
raw access functions lacking.  I know others who use lavf share this
experience.

Another thing I didn't mention earlier: it seems that packets returned
by av_read_frame() must be consumed by application before calling it
again.  In other words, it is impossible to buffer frames for later
decoding without copying the data out of the AVPacket.

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



More information about the ffmpeg-devel mailing list