[theora] OGGZ Seeking in Theora

Stefan Weber s_weber at blyth.ch
Mon Jun 21 02:58:57 PDT 2010


Dear all

Conrad, thank you for your inputs and your help so far. I will use and 
test the seek-rewrite branch as soon as possible.

I figured out that the Keyframe position in the granulepos is the NUMBER 
of the keyframe. When seeking with OGGZ, one has to supply the 
TIME-position (milliseconds) of the desired frame. So I made a short 
workaround by calculating the milliseconds position as follows:

    /ms = (granulepos >> shift) * 1000 / noFPS;
    /

Needless to say, this won't point me to the exact keyframe position. 
Probably this rough calculation is not exact enough?
What is the best approach to calculate the TIME-position for 
oggz-seeking out of a given frame number?

Kind regards,
Stefan


Am 08.06.2010 00:48, schrieb Conrad Parker:
> On 7 June 2010 20:02, Stefan Weber<s_weber at blyth.ch>  wrote:
>    
>> Hi Conrad
>>
>> Thanks for your reply to my request. I was able to eliminate some questions
>> now.
>> But I obviously still have some issues calculating the keyframe position.
>> This is what I do:
>>
>> ogg_int64_t granule = oggz_tell_granulepos(oggz);
>> int shift = oggz_get_granuleshift(oggz, sn);
>> int noOfFramesSinceKeyframe = granule>>shift;
>> int keyFramePosition = oldPosition - noOfFramesSinceKeyframe;
>> oggz_seek_units(oggz, keyFramePosition, SEEK_SET);
>>
>> oldPosition being the position where initially has been seeked to as from
>> oggz_tell_units().
>>
>> Seeking works, but not to keyframes :(  Am I getting wrong some units or
>> something?
>>      
> This line:
>
> | int noOfFramesSinceKeyframe = granule>>shift;
>
> calculates the position of the previous keyframe, not the offset since. See:
>
> http://wiki.xiph.org/GranulePosAndSeeking
>
> so you should be able to use that calculation directly for keyFramePosition.
>
>    
>>> If you're working with this now anyway, please try the seek-rewrite
>>> branch, from the repo at github: http://github.com/kfish/liboggz
>>>        
>> Whats different in this branch? Why would I use it?
>>      
> It has improvements in both efficiency and accuracy, but does not have
> as much real-world testing. If people test it and report good results
> then it will be released as the main version sooner.
>
> Conrad.
>    
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/theora/attachments/20100621/c8127f4c/attachment.htm 


More information about the theora mailing list