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

Michael Niedermayer michaelni at gmx.at
Tue Jan 3 16:07:21 CET 2006


Hi
On Tue, Jan 03, 2006 at 04:29:35PM +0200, Oded Shimon wrote:
> On Tue, Jan 03, 2006 at 03:44:53PM +0200, Oded Shimon wrote:
> > On Tue, Jan 03, 2006 at 02:25:28PM +0200, Oded Shimon wrote:
> > > On Tue, Jan 03, 2006 at 12:04:49PM +0100, Michael Niedermayer wrote:
> > > > On Tue, Jan 03, 2006 at 11:05:47AM +0200, Oded Shimon wrote:
> > > > > just pts in global timebase:     Syncpoints: 27674 size: 315730
> > > > > single back_ptr and pts:         Syncpoints: 27678 size: 391804
> > > > > single pts, per stream back_ptr: Syncpoints: 27675 size: 441061
> > > > > The above spec:                  Syncpoints: 27676 size: 459898
> > > > 
> > > > well my critique against this is that you have choosen the testcase so your
> > > > method will have least overhead
> > > > why not try low bitrate (phone modem speed) with a few subtitle streams
> > > > 
> > > > i really think its unfair that you guys attack my suggestions with non
> > > > existing weird stuff like non one-in one-out codecs on tape while your
> > > > stuff is shown in the most ideal case :)
> > > 
> > > Hmm, I agree. Well, unfortunately nutmerge is yet to surpport subtitles, 
> > > but here is my best attempt.
> > > 
> > > This is a 621MB 4.5 hours avi (481768 video frames, average 670 bytes per 
> > > video frame, 480 bytes per audio frame).
> > > (BTW, it was 2.3mb crappy video that I just repeated over and over :)
> > > It has audio and video streams, and 2 additional fake streams which give 1 
> > > 5 byte keyframe every 100 video frames with the exact same pts as video at 
> > > that point, and have the same timebase as video. Is this is a good fake 
> > > subtitle stream? (4 streams total)
> > > 
> > > The results:
> > > just single pts:             Syncpoints: 19315 size: 229235
> > > single back_ptr and pts:     Syncpoints: 19315 size: 276897
> > > per stream back ptr and pts: Syncpoints: 19321 size: 452250
> > 
> > P.S. for pathological 10 "subtitle" streams, 12 streams total, following 
> > same rules as before:
> > 
> > Syncpoints: 19351 size: 948221
> > 
> > i.e., the extra overhead is 750kb.
> > 
> > I'm considering a possible alternative syncpoint coding method. I'll 
> > respond later.
> 
> ok, here's the spec:
> 
> syncpoint:
> 	startcode				u(64)
> 	n=0
> 	for (;;) {
> 		back_ptr_div8[n]		v
> 		n++
> 		if (!back_ptr_div8[n]) break
> 	}
> 	coded_pts				v
> 	stream = coded_pts % stream_count
> 	coded_pts /= stream_count
> 	back_ptr[stream] = back_ptr_div8[coded_pts%n]
> 	pts[stream] = coded_pts/n
> 
> 	for (i=0; i<stream_count; i++) {
> 		if (i == stream) continue
> 		coded_pts			v
> 		back_ptr[i] = back_ptr_div8[coded_pts%n]
> 		pts[i] = covert_ts(pts[stream], timebase[stream], timebase[i])
>                 pts[i] -= coded_pts/n
> 	}
> 
> For the low bitrate file, with 2 subtitle streams:
> Syncpoints: 19320 size: 429893
> (a small 20kb gain)
> 
> for 10 subtitle streams:
> Syncpoints: 19338 size: 613488
> (a big >300kb gain)
> 
> And for the original average 700mb file before:
> Syncpoints: 27462 size: 489232
> (a strange 30kb loss)

and how good is:

syncpoint:
	startcode				u(64)
	coded_pts				v
	stream = coded_pts % stream_count
	back_ptr[stream] = back_ptr_div8[0]     v
	pts[stream] = coded_pts/stream_count
        n=1
	for (i=0; i<stream_count; i++) {
		if (i == stream) continue
		coded_pts			v
                A= coded_pts % (n+1)
                B= coded_pts / (n+1)
                if(A == n)
                    back_ptr_div8[n++]		v
                back_ptr[i]= back_ptr_div8[A]
		pts[i] = covert_ts(pts[stream], timebase[stream], timebase[i])
                pts[i] -= B
	}

[...]
-- 
Michael




More information about the MPlayer-dev-eng mailing list