[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