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

Michael Niedermayer michaelni at gmx.at
Sat Jan 14 02:06:01 CET 2006


Hi

On Sat, Jan 14, 2006 at 12:34:55AM +0200, Oded Shimon wrote:
> On Fri, Jan 13, 2006 at 11:25:39PM +0100, Michael Niedermayer wrote:
[...]
> > > > > Since (I think) we have completely prooved that both methods are 100% 
> > > > > working, the tradeoff here is purely:
> > > > > 1. complexity and allowing several syncpoints with no frame inbetween
> > > > > 2. overhead of (most likely) 1 byte per syncpoint for almost any file
> > > > > 
> > > > > My vote is still 2, and I have a feeling Rich will flame on the several 
> > > > > syncpoints thing, however I'm gonna start implementing single ts, and if 
> > > > > Rich agrees with it then I'm OK with finalizing it...
> > > 
> > > OK, umm, I'm trying, but as I feared it is getting increasingly much more 
> > > complicated, especially the interleaved dts cache flushing part... I'm 
> > > still highly suggesting multiple ts. The overhead is REALLY not an issue 
> > > now, so it's not an excuse IMO... (You do remember that it is as many ts's 
> > > as the amount of delay>0 streams, plus one, right? So rarely EVER is more 
> > > than two ts necessary..)
> > 
> > the flushing is needed anyway, if you want delay>0 EORs as 1in 1out decoders
> > need the extra packets to output anything and for delay=0 EORs theres no
> > flushing if i understand it correctly so really i cant see how multiple ts
> > are going to simplify anything here ...
> 
> With multiple ts there is no interleaved cache flushing that causes 
> syncpoints. There isn't even any possible situation of 2 syncpoints with no 
> frames inbetween. I finished all the code necessary for multiple ts for the 
> nut_write_frame() code in 5 lines:
> 
> 
> <after writing frame data>
> if (is_key) {
>         old_back_ptr = stream->back_ptr;
>         stream->back_ptr = nut->last_syncpoint;
>         if (nut->last_syncpoint != old_back_ptr) stream->key_pts = pts;
>         if (old_back_ptr - nut->last_syncpoint > nut->max_distance) put_syncpoint();
> }
> 
> 
> Now all you have to do in the syncpoint is grab all stream->key_pts and 
> stream->back_ptr, compress and output!.. Certainely much simpler than what 
> I'm still trying to implement here.. :/

hmm, what about a method which stores <= 1+num of non 0 delay pts
i mean we only need to store a pts for a delay>0 stream if its pts is >
the SP TS or something like that i think

[...]
-- 
Michael




More information about the MPlayer-dev-eng mailing list