[MPlayer-dev-eng] Lots of stuff for NUT

Michael Niedermayer michaelni at gmx.at
Wed Jan 11 16:54:37 CET 2006


Hi

On Wed, Jan 11, 2006 at 04:58:46PM +0200, Oded Shimon wrote:
> On Wed, Jan 11, 2006 at 03:45:56PM +0100, Michael Niedermayer wrote:
> > On Wed, Jan 11, 2006 at 03:21:38PM +0200, Oded Shimon wrote:
> > > On Wed, Jan 11, 2006 at 11:53:30AM +0100, Michael Niedermayer wrote:
> > > > what about:
> > > > current_dts is the dts of the current frame
> > > > S is the set of all keyframes which have pts <= current_dts
> > > > if adding a keyframe to S causes the backptr change to be >= t then write a
> > > > syncpoint, and assign the maximum pts from S to it
> > > 
> > > I'm completely confused by this explanation. Help me with an example. given 
> > > this scenario:
> > > 
> > > audio:   A0  A1  A2  A3  A4  A5  A6
> > > video: I0  P1  P2  I5  B3  B4  P6  P7
> > DTS:     -1 0 0 1 1 2 2 3 3 4 4 5 5 6 6
> > SP:     X0  X1      X2  X3  X4  X5  X6
> > SP_PTRA -   0       1   2   3   4   5
> > SP_PTRV -   0       0   0   0   2   2
> > SP_PTS  -   0       2   3   4   5   6
> > 
> > ok, ive added many syncpoints to make it more clear, obviously there
> > would be fewer in practice ...
> > and yes probably the pts selection could be improved by adjusting it
> > downward where possible (X2 2->1)
> 
> OK, this seems very similar of the old idea I had of back_ptr not pointing 
> to NEAREST keyframe, but most correct keyframe. I remember researching this 
> idea thoroughly, and finding at the very least, that it is complicated as 
> hell.

whats so complicated on it? not to mention pointing to nearest is totally
wrong

write_sp(){
1. find the most recent keyframes in each stream which have pts<=current dts
2. find the corresponding syncpoints for these keyframes and set the back_ptrs
3. find the first keyframe after each of these syncpoints and set sp_pts to
their maximum pts
}

and when to write it:
"if writing the next frame would cause the syncpoint distance to be >t then
write a syncpoint before the next frame"
together with:
"if any back_ptr would change by >T then write a syncpoint"
work?
or does this fail in some silly case


> 
> I think if we code it efficiently, we might as well go for the "almost" 
> single pts and save ourselves the high complexity, it is simply not worth 
> it.

IMHO having syncpoints point to themselfs is ugly and having more then the
needed pts is ugly too

[...]
-- 
Michael




More information about the MPlayer-dev-eng mailing list