[MPlayer-dev-eng] Nut and B frames
Michael Niedermayer
michaelni at gmx.at
Wed Apr 28 00:47:43 CEST 2004
Hi
On Wednesday 28 April 2004 00:28, D Richard Felker III wrote:
[...]
> > ----
> > type&pts: I0 P3 B1 B2 P4 P6 B5
> > list - 0 3 3 3 4 6
> > dts - 0 1 2 3 4 5
> >
> > type&pts: I0 P3 P6 B1 B2 P9 B4 B5 ..
> > list -- -0 30 36 36 36 96 96
> > dts - - 0 1 2 3 4 5
> >
> > 2 level bframe prediction I0->B2<-P4 I0->B1<-B2, ...
> > type&pts: I0 P4 B2 B1 B3 P8 B6 B5 B7 ...
> > list -- -0 40 42 42 43 48 68 68
> > dts - - 0 1 2 3 4 5 6
> >
> > and now with #3
> > type&pts: I0 Px B1 B2 .3 P4 Px B5 .6
> >
> > type&pts: I0 Px Px B1 B2 .3 Px B4 B5 .6 ..
> >
> > type&pts: I0 Px B2 B1 B3 .4 Px B6 B5 B7 .8 ...
> > hmm wrong ...
> > rich, do u see a way this could be done with #3 ?
>
> The notation is confusing now because even tho the frames don't always
> have pts attached directly to them, _we_ should know the pts for
> writing examples, to show which order our muxer stored the frames in.
>
> :) So let's rewrite frames as "tmn" where t=type, m=pts (actual time
>
> the frame should be shown), n=coded_pts:
>
> type&pts: I00 P3x B11 B22 .33 P44 P6x B55 .66
>
> type&pts: I00 P3x P6x B11 B22 .33 P9x B44 B55 .66 ..
>
> And now the corrected example 3:
>
> type&pts: I0 P4x B2x B11 .22 B33 .44 P8x B6x B55 .66 B77 .88 ...
>
> And back to your notation:
>
> type&pts: I0 Px Bx B1 .2 B3 .4 Px Bx B5 .6 B7 .8 ...
>
> Notice that the m's are always monotone and can be used for the
> purpose of interleaving. Everything else just gets filled in according
> to order of dependence (same order as encoder output).
>
> Maybe your complaint is that the codec won't know _which_ "pending"
> frame to output for one of the t=. points.
yes
> But IMO this isn't
> possible. The codec always has to know which frame it's going to
> output next, independent of the container...
well yes, but theres the codec less streamcopy issue, in which case we need
the pts, which are no longer stored in such a way that the demuxer can figure
them out without the codec
[...]
--
Michael
level[i]= get_vlc(); i+=get_vlc(); (violates patent EP0266049)
median(mv[y-1][x], mv[y][x-1], mv[y+1][x+1]); (violates patent #5,905,535)
buf[i]= qp - buf[i-1]; (violates patent #?)
for more examples, see http://mplayerhq.hu/~michael/patent.html
stop it, see http://petition.eurolinux.org & http://petition.ffii.org/eubsa/en
More information about the MPlayer-dev-eng
mailing list