[Matroska-devel] New Matroska field: Timescale

Steve Lhomme slhomme at matroska.org
Wed Sep 23 17:43:30 CEST 2015

Following this week-end's VDD15 (Videolan Dev Days) we have some
productive talks with Dave Rice (working on the IETF specifications)
and a guy from YouTube on how we could improve Matroska for long term
storage/archival and also new features in video.

There are a few fields that would need to be added to reach this goal.
I'll send an email for each (family of) field so the discussions are
easy to follow.

One of the most common drawback mentioned when Matroska comes to mind
is the inaccurate approach for timestamps (that should not be called
timecodes which is something different in the video world). The proper
way to do it, at least for clock accurate digital sources should be
using a fraction format (numerator/denominator).

See this page for own the basic math works:

(1233 + 564264) * 1000000 = 565497000000
     = 565497 ms
     = 565.497s

With a numerator/denominator approach this example would become:
(1233 + 564264) * 1 / 1000 = 565.497s

A NSTC movie (29.76fps) could have a better accuracy using 30000/1001
(or 30/1001 if you want a large range of values in your block).

One of the drawback (and why it was not adopted in the first place) is
that when you mix heterogeneous sources you need to find a common
fraction that works for all tracks and still get enough range within
the 16 bits possible for a Block timecode. It was less of a problem
when we had TrackTimecodeScale to account for each track specifics,
but that element is deprecated.

If we decide to use fractions, it should be possible to keep backward
compatibility. The current TimecodeScale would be an approximation of
the fraction in nanoseconds. New players would take advantage of the
new fields as they are upgraded.

Steve Lhomme
Matroska association Chairman

More information about the Matroska-devel mailing list