[FFmpeg-cvslog] r19763 - trunk/libavcodec/wmaprodec.c
Sascha Sommer
saschasommer
Sun Sep 6 10:58:11 CEST 2009
Hi,
On Sonntag, 6. September 2009, Michael Niedermayer wrote:
> On Sat, Sep 05, 2009 at 12:07:55PM +0200, faust3 wrote:
> > Author: faust3
> > Date: Sat Sep 5 12:07:55 2009
> > New Revision: 19763
> >
> > Log:
> > reduce output buffer needs
> > (fixes playback of some multichannel files)
>
> i would have thought that the decoder should always decode the smallest
> unit possible instead of decoding as much as fits in the buffer.
> The reason being amongth other things cache & latency ...
>
Changed.
> Also ive not checked it too carefull but returning 0 from decode packet
> doesnt look too correct to me if part of the packet has been decoded
>
The code works correctly with ffmpeg, ffplay and MPlayer. The question is if
what I'm doing is allowed to be done or not.
The code is based on the assumption that decode_packet is called with the same
packet as long as the packet is not fully decoded (the sum of all returned
bytes from decode_packet is equal to the original packet size). This includes
the precondition that no data is appended to it. Otherwise it would never be
possible to decide where a new packet starts. So I think this assumption is
save.
When this is really the same packet e.g. also the data pointer does not change
it is possible to reuse the bitstream reader for multiple decode_packet
invocations.
Otherwise, the bitstream reader has to be reinitialized every time decode
packet is called. This also means that it has to jump to the correct bit
position as the start of the frames is not byte aligned what increases the
complexity of the code.
Regards
Sascha
More information about the ffmpeg-cvslog
mailing list