[MPlayer-dev-eng] Finalize NUT spec
Oded Shimon
ods15 at ods15.dyndns.org
Sat Jan 28 07:05:29 CET 2006
On Fri, Jan 27, 2006 at 05:40:09PM +0200, Oded Shimon wrote:
> We're almost there.
>
> 1) EOR in index.
> I propose, in this section of index:
> for(; j<n && j<syncpoints; j++){
> if (!has_keyframe[j][i]) continue
> A v
> last_pts += A
> keyframe_pts[j][i] = last_pts
> }
>
> Change to:
>
> for(; j<n && j<syncpoints; j++){
> if (!has_keyframe[j][i]) continue
> A v
> if (A) {
> last_pts += A
> keyframe_pts[j][i] = last_pts
> } else {
> A v
> last_pts += A
> eor_pts[j][i] = last_pts
> }
> }
>
> Where EOR pts should only be given if there isn't any keyframe in the
> _entire_ syncpoint region (between this syncpoint and the last syncpoint)
>
> S EOR3 K7 EOR10 S => key 7
>
> S frame7 EOR10 S => eor 10
>
> S K7 EOR10 S .... S .... S K13 S => key 7, eor 10, no key, key 13
>
> I think this breaks optimal seeking in some silly situations, I'm not sure,
> maybe strict interleaving saves you from that. Either way, I don't think it
> is worth fixing.
> Found it:
> S K7 S ... S ... S EOR10 K13 S
>
> We want pts 11, we'll end up at K7 cause EOR10 is "silenced" by the K13.
> Only question left, do we care. I don't.
I think I've got a solution.. Using same method above: Treat EOR same as
keyframes (they are keyframes after all), however, don't mark the
syncpoint region as eor'd if there is any non-eor keyframe in it:
S EOR3 K7 EOR10 S => key 3
S frame7 EOR10 S => eor 10
S K7 EOR10 S .... S .... S K13 S => key 7, eor 10, no key, key 13
and the breaking one from before:
S K7 S ... S ... S EOR10 K13 S => key 7, ..., key 10
Which makes that work...
Not sure if there are other problems...
- ods15
More information about the MPlayer-dev-eng
mailing list