[Matroska-devel] Opus audio codec

Ralph Giles giles at thaumas.net
Fri Dec 16 20:41:40 CET 2011

On 15 December 2011 13:41, Ralph Giles <giles at thaumas.net> wrote:

> My question is, how do we timestamp those initial clusters, if some of
> the samples from them are to be discarded? If playback starts with
> e.g. sample 24000, what TimeStamp to I put on the first block? It
> should really be negative, but the element takes an unsigned value.

It's been pointed out to me that while the Cluster>Timecode element is
unsigned, the per-block timestamp is a signed short. So we can make
the presentation time of the initial frames negative, up to about half
the range of the pre-skip header field (which is unsigned short).

I also noticed a TrackOffset element, which is a signed integer. Could
we use this to handle larger pre-skip?

Greg also raised the question of how we tell players to let the
decoder setting after a seek. Opus is a little like open-gop or
rolling-intra video codecs; after a certain time, the decoder will
always converge, but you don't necessarily get correct output if you
start presenting the output immediately after a seek.

How is that pre-roll requirement signaled for video?


More information about the Matroska-devel mailing list