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

Oded Shimon ods15 at ods15.dyndns.org
Wed Jan 18 21:37:04 CET 2006


On Wed, Jan 18, 2006 at 09:11:39PM +0100, Michael Niedermayer wrote:
> Hi
> 
> On Wed, Jan 18, 2006 at 10:03:26PM +0200, Oded Shimon wrote:
> [...]
> > > > > so it seems we have
> > > > > per stream ptr&pts  O(streams log streams) overhead, O(log filesize) seeks
> > > > > per stream ptr&1pts O(streams log streams) overhead, O(log filesize) seeks
> > > > > 1 ptr+pts O(log streams) overhead and O(log filesize) seeks but not "optimal"
> > > > 
> > > > O(s*log(s))  is a bit unoptimistic, I think even false.
> > > > My syncpoint compression is worst case scenario O(s) and best case.. Well, 
> > > > still O(s) but with a much smaller constant. :)
> > > > 
> > > > IMO single back pts/ptr is O(1) really, and if you measure it differently, 
> > > > it is O(max keyint). It has little relavence to amount of streams...
> > > 
> > > well, no, your analysis is wrong :)
> > > if we assume similar streams (similar bitrate, frame rate, keyint, ...) which
> > > isnt really a unrealistic assumtation and more here for simplicity then 
> > > anything else then as you add more streams the distance in bytes between
> > > keyrames of one stream will increase proportionally to the number of streams
> > > so a back pointer will point proportionally farther -> log n factor for
> > > storing it unless you do something tricky ...
> > 
> > Ohhh, yes, I forgot extra streams actually take more space in regards to 
> > actual data... Damn side-effects :)
> > 
> > 
> > Any thoughts on other thing I said (max(key_pts)) ?..
> 
> that several syncpoint would have the same pts? well that will always
> happen, think about a single stream in a file 300frame GOP and more then
> 1 syncpoint within a GOP

Re-read my mail:

-
I think using max(key_pts) for syncpoint ts is very false, it doesn't even                                                                                      
strictly interleave by MN rule, and it causes a very odd scenario of                                                                                            
several syncpoints with same ts but different back_ptr (scenario above).
-

all those syncpoints in your GOP will have same back_ptr (more correctly, 
all of them will back point to the same syncpoint). With this, you have 
several syncpoints, with the same pts, but each one has a more "correct" 
and different back_ptr. This isn't disasterous, but it is just blatently 
wrong. Also the syncpoints themselves don't comply to MN rule, which they 
should...

And again, you have to linear search O(max_b_frames + decode_delay) instead 
of max_distance. Rich's algo was based on syncpoints with ts P really 
pointing to the closest keyframe to P, using max(key_pts) destroys that and 
the algo completely.

- ods15




More information about the MPlayer-dev-eng mailing list