[FFmpeg-devel] [PATCH] Set correct frame_size for Speex decoding

Michael Niedermayer michaelni
Sat Aug 1 04:06:00 CEST 2009

On Fri, Jul 31, 2009 at 07:34:00PM -0400, Justin Ruggles wrote:
> Michael Niedermayer wrote:
> > On Fri, Jul 31, 2009 at 06:48:59PM -0400, Justin Ruggles wrote:
> >> Michael Niedermayer wrote:
> >>> On Thu, Jul 30, 2009 at 07:25:17PM -0400, Justin Ruggles wrote:
> >>>> Justin Ruggles wrote:
> >>>>> Hi,
> >>>>>
> >>>>> Currently AVCodecContext.frame_size is not set correctly for Speex.
> >>>>> Since the Ogg and FLV demuxers and the libspeex decoder handle a full
> >>>>> packet as a single frame, frame_size should be set to the Speex
> >>>>> frame_size * frames_per_packet.
> >>>>>
> >>>>> If frames_per_packet is not specified in the Speex header, or if there
> >>>>> is no header, it can be determined after decoding the first packet.
> >>>>>
> >>>>> Stream copy is not implemented yet for Speex, but once it is, a parser
> >>>>> will be able to set all the stream parameters instead of the decoder
> >>>>> when the header is missing or incomplete.
> >>>> ping.
> >>> it might be helpfull if you say who you expect to review this
> >> In general, I'm looking for an ok on having lavf and lavc treat a whole
> >> Speex packet as a single frame.  After considering and trying to code
> >> the split-then-join idea it did not seem like a very clean solution, and
> >> it is not really necessary.  This is my general plan:
> > 
> > which values of frames_per_packet does each container allow?
> > that is each container that supports speex
> AFAIK, Ogg is only limited by the Speex header, which supports up to
> INT32_MAX. (libspeex reads the 4-byte value in the header as a signed int32)
> For FLV, it's unclear.  Here is a quote from Art:
> > Here's what I found.  Set the speex frames per packet all the way from 1 up
> > to 8, and it appears they all now work with Flash Player (I erroneously
> > reported that 1 would not work before, but at least with the latest version
> > that is not the case).  Setting 9 frames per packet causes flash player to
> > start stuttering.  Set 10 or more frames per packet causes flash player to
> > crash, bringing down the browser with it.
> The speexenc commandline program allows encoding between 1 and 10 frames
> per packet.

so if you have a ogg with 11 -acodec copy to flv will not work, IMO thats a
bug. How should that be fixed?
if the parser splits the packets as it should, it should work ...

Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Complexity theory is the science of finding the exact solution to an
approximation. Benchmarking OTOH is finding an approximation of the exact
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20090801/6a2b97b0/attachment.pgp>

More information about the ffmpeg-devel mailing list