[theora-dev] further debugging of my ogg/theora decoder

Ralph Giles giles at xiph.org
Mon Nov 17 19:27:28 PST 2008


On Sun, Nov 16, 2008 at 5:54 PM, salsaman <salsaman at gmail.com> wrote:

> I am finding something very strange in my test ogg files.
>
> For example: I have a shift of 64, and I get a granulepos of 5130.
>
> 5130 == 80*64 + 10
>
> which suggests that frame 80 is a keyframe.

That's right.

> However, if I start decoding from the beginning, the 81st frame is a
> keyframe.

Really? Someone has an off-by-one somewhere.

> This suggests that the first frame should be 0. But if I try to search for
> frame 0, it fails.

Correct. The granulepos is derived from the count of decodeable
frames. So the granulepos is:

first frame 1:0 (keyframe)
second frame 1:1
third frame 1:2
 ...
80th frame 80:0 (keyframe)
81st frame 80:1
 ...
90th frame 80:10

> Any suggestions ?

Are you counting frames from 0 instead of 1 somewhere? I try to think
of 'frame index' which starts from zero and 'frame count' which starts
from 1, similar to the normal index and bounds in C 'for' loops. The
granulepos records the count, not the index.

FWIW,
 -r


More information about the theora-dev mailing list