[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