[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