[FFmpeg-devel] [PATCH] Fix for ogg timestamps when packets span multiple ogg pages
David Conrad
lessen42
Fri Dec 26 09:16:38 CET 2008
On Dec 1, 2008, at 1:21 PM, Michael Niedermayer wrote:
> On Sun, Nov 09, 2008 at 02:48:01AM -0500, David Conrad wrote:
>> On Nov 6, 2008, at 5:51 PM, David Conrad wrote:
>>
>>> Hi,
>>>
>>> The problem with the current code comes from how an ogg page with
>>> only a
>>> partial packet uses the special granulepos of -1. The granulepos
>>> needs to
>>> be saved from the last page that completed a packet until the next
>>> page
>>> that completes a packet, where it is the timestamp of the first
>>> complete
>>> packet.
>>
>>
>> After looking at ogg granule_position some more, there's another
>> problem in
>> that Dirac and ogm both assume that the timestamp is the beginning
>> of the
>> associated packet, wheras Xiph codecs define the granule as the
>> time after
>> the associated packet is fully decoded (I'm assuming, I've only found
>> Vorbis and Theora to do so explicitly.)
>>
>> Currently the ogg demuxer simply assumes that all codecs use the
>> latter
>> definition and does codec-specific interpretation of the granule on
>> the
>> next packet. This causes problems with determining Theora
>> keyframes, as the
>> frame after the actual keyframe gets the flag.
>>
>> Here's a general fix to always associate the granule and derived
>> flags with
>> the correct packet, and then delay the interpreted timestamp to the
>> next
>> packet for Xiph codecs. This fixes ogm timestamps, Theora
>> keyframes, and
>> allows for correct Dirac timestamps.
>
> ping, i think the patch is still missing a review from our ogg demuxer
> maintainer
ping x2
(I know M?ns said on irc he'd fix this possibly in a different way,
but it has been a while)
More information about the ffmpeg-devel
mailing list