[FFmpeg-devel] [PATCH] Fix for ogg timestamps when packets span multiple ogg pages
David Conrad
lessen42
Sun Nov 9 08:48:01 CET 2008
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.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: ogg-granule.txt
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20081109/1c8ec08f/attachment.txt>
-------------- next part --------------
More information about the ffmpeg-devel
mailing list