[FFmpeg-soc] vp8 de/packetizers

Martin Storsjö martin at martin.st
Wed Aug 4 09:59:19 CEST 2010


On Tue, 3 Aug 2010, David Conrad wrote:

> On Aug 3, 2010, at 10:04 AM, Martin Storsjö <martin at martin.st> wrote:
> 
> > On Mon, 2 Aug 2010, Josh Allmann wrote:
> >
> >> Unless I've mis-counted my marker bits yet again, we are in full
> >> compliance with the spec, except for the parts that are undefined --
> >> the "VP8" encoding name in particular.
> >
> > One issue in the proposal that I don't think we comply to (and that I
> > think should be changed before it is finalized, is this:
> >
> >> 3.3 Lost VP8 RTP packets
> >> If a lost packet is detected in the RTP stream, the transport layer
> >> MUST throw out the current partial VP8 frame (if there is one) and
> >> all subsequent RTP packets until a VP8 payload descriptor with the
> >> key-frame bit is set.
> >
> > Not returning a single packet up until the next keyframe, if a single
> > packet is lost, feels quite horrible to me. Even though it may not  
> > look
> > good if some data is lost, it's still better than not getting any  
> > data at
> > all up until the next keyframe.
> 
> VP8's probability contexts and segment map aren't reset between  
> interframes, so if an entire frame is lost the rest of the GOP will  
> likely decode to total junk.
> 
> If you want to do better than the proposal, you can read the vp8 frame  
> header and ignore the rfc if the first data partition is intact;  
> that's the only guarantee that arithmetic probabilities and the  
> segment map remain correct.

Oh, that's good to know, then I understand the points made in the RTP 
format proposal.

Some parts of that is quite hard to implement - it's hard to detect that a 
whole frame never was delivered to us. For that, we'd probably need to 
pass the RTP sequence numbers to the depacketizer, so that it can notice 
that something was missing, even if the start/end markers look ok.

David, how large is this first data partition approximately? The frames 
are fragmented into RTP packets of around ~1450 bytes (usually) - so if 
we've got the first packet of a frame but not the rest, would we be better 
off returning this than just skipping it?

// Martin


More information about the FFmpeg-soc mailing list