[MPlayer-dev-eng] Lots of stuff for NUT
Oded Shimon
ods15 at ods15.dyndns.org
Sun Jan 1 23:13:57 CET 2006
On Sun, Jan 01, 2006 at 05:14:07PM +0200, Oded Shimon wrote:
> 1. The solution above, and simple give up giving the CLOSEST keyframe to a
> specific position, but still enough info to decode requested position.
> 2. The solution of chaanging back_ptr's, which is rather complicated, DOES
> indeed solve EVERYTHING, but raises complexity of muxer greately, and
> for reasons I'll not detail here, makes it possible to have 2 subsequent
> syncpoints with no frame between them.
> 3. Give up fullfilling the promise of "have an index, then no more than a
> single file seek to seek to position". I highly dislike this solution.
> 4. Something else out of the box. Maybe go back to old solutions - keyframe
> index. (If nobody remembers, the probably with keyframe index is that
> you simply cannot seek to arbitrary position in file, only to
> syncpoints, because you need "last_pts" state information)
>
> I vote for 2. It's the "ideal" solution as it always does the right thing.
Sigh, wrong again, I found a situation it breaks.
> "out of the box" solutions i've considered - storing pts and keyframe for
> every stream in syncpoint, storing maybe 2 ts's in a single syncpoint.
> I haven't been able to find a way to actually use these solutions.
> Does anyone have other ideas?
Yet again, a new idea:
Every syncpoint has the pts and back_ptr for EVERY stream, where the pts is
the pts of the last keyframe in the stream.
It might sound crazy, but I think done right, it will not take
significantly more overhead than current method. It's low overhead, low
complexity, and I'm pretty sure it solved everything. The only part left,
is decideding how to code it in syncpoint. My best suggestion:
pts v
if (pts&1) back_ptr_div8 v
else back_ptr_div8=0
pts = pts>>1
pts is ofcourse in timebase of stream. Index is a whole other story.
Thoughts, anyone?
- ods15
More information about the MPlayer-dev-eng
mailing list