[MPlayer-dev-eng] NUT (informal) proposal, based on discussions

Michael Niedermayer michaelni at gmx.at
Wed Jan 18 19:47:43 CET 2006


Hi

On Wed, Jan 18, 2006 at 07:41:40PM +0200, Oded Shimon wrote:
> On Wed, Jan 18, 2006 at 01:29:36PM +0100, Michael Niedermayer wrote:
> > Hi
> > 
> > On Wed, Jan 18, 2006 at 01:36:07PM +0200, Oded Shimon wrote:
> > > On Wed, Jan 18, 2006 at 03:54:34AM +0100, Michael Niedermayer wrote:
> > > > On Tue, Jan 17, 2006 at 09:20:02PM -0500, Rich Felker wrote:
> > > > > yes, there are problems we've been discussing on irc too. some of the
> > > > > problems have a fix by changing the definition of the back_ptr
> > > > > appropriately, but i don't know if they all do. i'm still
> > > > > investigating. will let you know when there's an update, unless you
> > > > > come up with a brilliant idea first. :)
> > > > 
> > > > some rule like:
> > > > there must be no interval of max_distance in which any stream has a keyframe
> > > > but no back ptr anywhere including outside this intervall pointing to any
> > > > keyframe of that stream in the interval
> > > > 
> > > > in our case above both K2 and K15 would need some syncpoints pointing to
> > > > them to fullfill this ...
> > > 
> > > I'm not sure I understand this rule, but I think it comes at relatively 
> > > high implementation cost in muxer...
> > 
> > hmm, lets see
> > 1. keep track of the last keyframe of every stream (easy)
> > 2. keep track of the keyframe which was the target of the last back_ptr 
> >    of every stream (easy)
> > 3. if last_keyframe != last_target && current_keyframe - last_target > max_dist
> >         write syncpoint; 
> >         last_target= last_keyframe= current_keyframe;
> 
> I'm still not 100% sure I understand, but if I'm not mistaken, this still 
> fails - when writing this syncpoint, it might still point to 'last_target' 
> instead of 'last_keyframe' because of dts/pts stuff...
> 
> last_target = pts 10
> last_keyframe = pts 15
> current_keyframe = pts 20
> 
> current dts = 13
> 
> writing a syncpoint will still point to last_target. Or did I completely 
> miss something. (Also don't forget, for your back_ptr method we need to 
> buffer several keyframes, not just the last one.)

hmm, my idea was to use the last keyframes (no buffering) and use their
max pts as timetsamp, this seems pretty easy but maybe iam missing some
issues associated with it?
it wont give you the optimal keyframe in a single seek but there is no
way that could be possible with a single pts anyway you would always end
up with a syncpoint per keyframe and O(n^2*log n) overhead if there are many
streams

[...]

-- 
Michael




More information about the MPlayer-dev-eng mailing list