[FFmpeg-devel] [PATCH] Speex parser

Justin Ruggles justin.ruggles
Mon Aug 31 02:50:32 CEST 2009


Justin Ruggles wrote:

> Justin Ruggles wrote:
> 
>> Michael Niedermayer wrote:
>>
>>> On Sun, Aug 30, 2009 at 10:40:45AM -0400, Justin Ruggles wrote:
>>>> Hi,
>>>>
>>>> Here is a Speex parser.  It does not split any frames, but only analyzes
>>>> them in order to set the proper AVCodecContext parameters.
>>> the decoder can do this, av_find_stream_info() should already create a
>>> decoder to fill these in when they are missing.
>> Why should it have to rely on the decoder...especially since we do not
>> have a native decoder?  So that one MUST compile in an external library
>> for stream copy to work properly.
> 
> If there is no problem with packet duration being 0 or wrong, then I
> think stream copy could work without the parser or decoder.  I tried flv
> to ogg and it seemed to work since timestamps were just copied from one
> container to the other.  Packet duration was still wrong though, and I
> don't know if that causes other problems.

Ok, I think I figured out the solution to this part at least.  Speex
needs to be added to the list of codecs in has_codec_parameters() that
require frame_size to be non-zero, then the libspeex decoder should not
set frame_size at init when it does not have extradata since it could be
the wrong value.  Doing this gives correct packet durations, and would
also allow creation of fake extradata in the muxer to work if we decide
to go that route.

I still don't like that the decoder is required, but I guess that's the
design of lavf, so too bad for me. ;)

-Justin



More information about the ffmpeg-devel mailing list