[FFmpeg-soc] [soc]: r1168 - rv40/rv40.c

Kostya kostya.shishkov at gmail.com
Thu Aug 23 18:18:08 CEST 2007


On Thu, Aug 23, 2007 at 06:05:26PM +0200, kostya wrote:
> Author: kostya
> Date: Thu Aug 23 18:05:26 2007
> New Revision: 1168
> 
> Log:
> Handle case when slice tail is sent as another slice

Let me elaborate on it a bit.

Real container stores video frame by slices (controversal decision to me).
They decided to drop macroblock count in slice, so you need either to get
next slice, parse its header and set limit or just decode until end and
hope thet nothing goes wrong. But it appears that sometimes slice end is
stored as new slice so you need to add it to the end before decoding.

In order to workaround this err... design I keep track of last macroblock
decoded successfully in slice and in case of bit reader reading past
frame data set mode expecting frame tail, then if it arrives (without
correct slice header), concatenating it with the previous data and
decoding starting from the last successfully decoded macroblock.

I've run my decoder under FFplay and MPlayer and should note that lavf
demuxer drops some frames (can be clearly seen on title fade out in
test.rmvb), so I will try to fix it.



More information about the FFmpeg-soc mailing list