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

Oded Shimon ods15 at ods15.dyndns.org
Sat Jan 14 09:39:42 CET 2006


On Sat, Jan 14, 2006 at 09:28:00AM +0200, Oded Shimon wrote:
> [...]

I have some bad news.. I finished implementing at least my solution (it was 
as easy as I expected!...), but I found another big problem...

(low bitrate file)

Before:
Syncpoints: 19434 size: 433317  (10 subtitle streams)
Syncpoints: 19432 size: 356410  (10 subtitle streams) (/16384)

After:
Syncpoints: 65372 size: 2496660 (10 subtitle streams)
Syncpoints: 65287 size: 1211460 (10 subtitle streams) (/16384)


The insane change overhead is very obviously not due to change in syncpoint 
spec, but thanks to the fact that i finally added the syncpoint placement rule:

if (nut->last_syncpoint - old_back_ptr > nut->max_distance) put_syncpoint(nut);


The big problem arises here not only from having to put tons of additional 
syncpoints, but also now that in the syncpoints themselves, none of the 
back_ptr's are shared, so they compress horribly. /16384 helps the 
situation a lot (back_ptr's which point close to each other are now 
shared), however it still doesn't help the large amount of syncpoints being 
written.

Niether solution prevents this problem... The only thing I can think of 
that helps this is going back to per EVERY stream pts and back_ptr, in its 
case you can put a single syncpoint after the 10 subtitle packets from the 
10 different streams... You could then change the syncpoint placement rule 
to:

When putting a keyframe for a certain stream, if it makes back_ptr change 
by more than T, queue a syncpoint to be written before the next keyfame for 
this stream. If by then a syncpoint has already been written, don't bother.


Thoughts anyone?...

- ods15




More information about the MPlayer-dev-eng mailing list