[MPlayer-dev-eng] Lots of stuff for NUT
Michael Niedermayer
michaelni at gmx.at
Sat Dec 31 21:23:21 CET 2005
Hi
On Sat, Dec 31, 2005 at 09:00:03PM +0200, Oded Shimon wrote:
> On Sat, Dec 31, 2005 at 06:37:35PM +0200, Oded Shimon wrote:
> > On Sat, Dec 31, 2005 at 04:54:25PM +0100, Michael Niedermayer wrote:
> > > do we really need to allow a backptr to point to the current syncpoint? what
> > > do we loose if we would point to the previous?
> >
> > [...]
> >
> > BTW, I'm not sure if it's worth it, but we might want to make 'type'
> > setable by repeat's lsb. In the case of subtitles, you'll have these back
> > ptr's...
> >
> > 1 2 3 4 0 0 0 1 2 3 4 5 0 0 0 0 0 ...
> >
> > Which is basically bringing out the worst in both methods. I'll investigate
> > this later...
>
> OK, theoretically, we don't need perfect accuracy and having back_ptr point
> different is ok. In practice, it complicates things and makes things more
> unpredictable.
>
> I'm done implmenting the idea I had, and it works perfectly, I'm even a bit
> shocked by its low space consumption...
>
> (for 700mb file, 2 streams)
> Your index idea: 105220 bytes
> My new index idea: 101889 bytes
> My new index idea, after throwing away accuracy: 95928
>
> IMO, 6kb is not worth throwing away the accuracy and complicating matters.
> BTW, the first 92KB is the syncpoint data, the rest of the 8kb is the
> repeat stuff... So, unless you have 50 audio streams, the inaccuracy thing
> really doesn't matter...
>
> Here's my index idea in detail...
>
> for(i=0; i<stream_count; i++) {
> j = 0;
> while (j < n) {
> repeat = get_s(); // NOTE THE 'S'
> type = (repeat > 0);
> repeat = abs(repeat);
> b = repeat & 1;
> repeat = (repeat >> 1)+1;
> if (type) {
> for(k=0; k<repeat; k++)
> syncpoint[j+k].stream[i].back_ptr = syncpoint[j-b].pos_div8;
> } else {
> for(k=0; k<repeat; k++)
> syncpoint[j+k].stream[i].back_ptr = syncpoint[j+k-b].pos_div8;
> }
> j += repeat;
> }
> }
>
> The flaw: 1 and -1 are identical, it's a wasted value. Does anybody care?
> Also I think in a smart muxer, 0 should never be used...
>
> The good: In a very possible scenario of "1 2 3 4 5 0 0 0 0 1 2 3 4 5" in
> subtitles, this code scales perfectly, taking up least space possible.
>
> I vote for this to be official index.
i vote in favor of putting the type into repeat, but i vote against the zero
back_ptr which points to the current syncpoint
i also vote in favor for pos/8 instead of pos/16384 if the gain is just ~5%
of the index
[...]
--
Michael
More information about the MPlayer-dev-eng
mailing list