Understanding timecode in clusters / simpleblocks

Austin Einter <[email protected]> Sat, 21 Oct 2017 08:35:34 +0530
Newsgroups gmane.comp.multimedia.matroska.user
Message-ID <CANXt1k8bsuFj_U181+_SzUSpOL23kT0HxN8RWCxTCF1kQxKuYw@mail.gmail.com>
--===============8176419751727636804==
Content-Type: multipart/alternative; boundary="94eb2c0da5a4ed51b0055c05dcbe"

--94eb2c0da5a4ed51b0055c05dcbe
Content-Type: text/plain; charset="UTF-8"

I have got a mkv file (with h.264 frames).
I just converted it to xml format (given below) using some open source.

I was able to understand most of the part, except timecode in clusters and
simpleblocks. Can you please help me to understand it.

*<Cluster>*
*  <Timecode>0</Timecode>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.0</timecode>*
*    <keyframe/>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.167</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.083</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.042</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.125</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.292</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.208</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>0.25</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*

*.*
*. -----------------> Number of simple blocks goes here *
*.*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>4.833</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*</Cluster>*


*-----------------> First cluster ends here*

*<Cluster>*
*  <Timecode>5042</Timecode>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>5.042</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>4.958</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>4.917</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>5.0</timecode>*
*    <data>*
*    </data>*
*.*
*. -----------------> Number of simple blocks goes here*
*.*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>9.917</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>10.0</timecode>*
*    <data>*
*    </data>*
*  </SimpleBlock>*
*</Cluster>*
*<Cluster>*
*  <Timecode>10208</Timecode>*
*  <SimpleBlock>*
*    <track>1</track>*
*    <timecode>10.208</timecode>*
*    <data>*
*.*
*.  -----------------> Number of simple blocks goes here *
*.*


Now you can see in

   1. 1st cluster timecode is 0
   2. 1st cluster / 1st simpleblock timecode is 0.0
   3. 1st cluster / 2nd simpleblock timecode is 0.167
   4. 1st cluster / 3rd simpleblock timecode is 0.083

and so on...

How these timecode values are calculated?

Thanks
Austin

--94eb2c0da5a4ed51b0055c05dcbe
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">I have got a mkv file (with h.264 frames).<br>I just conve=
rted it to xml format (given below) using some open source.<div><br></div><=
div>I was able to understand most of the part, except timecode in clusters =
and simpleblocks. Can you please help me to understand it.=C2=A0</div><div>=
<br></div><div><div><b><i>&lt;Cluster&gt;</i></b></div><div><b><i>=C2=A0 &l=
t;Timecode&gt;0&lt;/Timecode&gt;</i></b></div><div><b><i>=C2=A0 &lt;SimpleB=
lock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track&gt;=
</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;0.0&lt;/timecode&gt;=
</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;keyframe/&gt;</i></b></div><div>=
<b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;=
/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div>=
<div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0=
 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;tim=
ecode&gt;0.167&lt;/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;d=
ata&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><d=
iv><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 &lt;Sim=
pleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track=
&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;0.083&lt;/timeco=
de&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div=
><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/Simp=
leBlock&gt;</i></b></div><div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div=
><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b=
><i>=C2=A0 =C2=A0 &lt;timecode&gt;0.042&lt;/timecode&gt;</i></b></div><div>=
<b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;=
/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div>=
<div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0=
 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;tim=
ecode&gt;0.125&lt;/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;d=
ata&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><d=
iv><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 &lt;Sim=
pleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track=
&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;0.292&lt;/timeco=
de&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div=
><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/Simp=
leBlock&gt;</i></b></div><div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div=
><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b=
><i>=C2=A0 =C2=A0 &lt;timecode&gt;0.208&lt;/timecode&gt;</i></b></div><div>=
<b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;=
/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div>=
<div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0=
 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;tim=
ecode&gt;0.25&lt;/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;da=
ta&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><di=
v><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div><div><b><i><br></i></b></d=
iv><div><b><i>.</i></b></div><div><b><i>. -----------------&gt; Number of s=
imple blocks goes here=C2=A0</i></b></div><div><b><i>.</i></b></div><div><b=
><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;tr=
ack&gt;1&lt;/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&g=
t;4.833&lt;/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;data&gt;=
</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><div><b><=
i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div><div><b><i>&lt;/Cluster&gt;</i><=
/b></div><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><b>=
<i>-----------------&gt; First cluster ends here</i></b></div><div><b><i><b=
r></i></b></div><div><b><i>&lt;Cluster&gt;</i></b></div><div><b><i>=C2=A0 &=
lt;Timecode&gt;5042&lt;/Timecode&gt;</i></b></div><div><b><i>=C2=A0 &lt;Sim=
pleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track=
&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;5.042&lt;/timeco=
de&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div=
><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/Simp=
leBlock&gt;</i></b></div><div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div=
><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b=
><i>=C2=A0 =C2=A0 &lt;timecode&gt;4.958&lt;/timecode&gt;</i></b></div><div>=
<b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;=
/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div>=
<div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0=
 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;tim=
ecode&gt;4.917&lt;/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;d=
ata&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><d=
iv><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 &lt;Sim=
pleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track=
&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;5.0&lt;/timecode=
&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div><=
b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></div><div><b><i>.</i></b></div><di=
v><b><i>. -----------------&gt; Number of simple blocks goes here</i></b></=
div><div><b><i>.</i></b></div><div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b>=
</div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;/track&gt;</i></b></div><d=
iv><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;9.917&lt;/timecode&gt;</i></b></div>=
<div><b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0=
 &lt;/data&gt;</i></b></div><div><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b><=
/div><div><b><i>=C2=A0 &lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =
=C2=A0 &lt;track&gt;1&lt;/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &=
lt;timecode&gt;10.0&lt;/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 =
&lt;data&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;/data&gt;</i></b></d=
iv><div><b><i>=C2=A0 &lt;/SimpleBlock&gt;</i></b></div><div><b><i>&lt;/Clus=
ter&gt;</i></b></div><div><b><i>&lt;Cluster&gt;</i></b></div><div><b><i>=C2=
=A0 &lt;Timecode&gt;10208&lt;/Timecode&gt;</i></b></div><div><b><i>=C2=A0 &=
lt;SimpleBlock&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;track&gt;1&lt;=
/track&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;timecode&gt;10.208&lt;=
/timecode&gt;</i></b></div><div><b><i>=C2=A0 =C2=A0 &lt;data&gt;</i></b></d=
iv><div><b><i>.</i></b></div><div><b><i>. =C2=A0-----------------&gt; Numbe=
r of simple blocks goes here=C2=A0</i></b></div><div><b><i>.</i></b></div><=
div><b><i><br></i></b></div></div><div><b><i><br></i></b></div><div><p styl=
e=3D"margin:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit=
;font-stretch:inherit;font-size:15px;line-height:inherit;font-family:Arial,=
&quot;Helvetica Neue&quot;,Helvetica,sans-serif;vertical-align:baseline;cle=
ar:both;color:rgb(36,39,41)">Now you can see in</p><ol style=3D"margin:0px =
0px 1em 30px;padding:0px;border:0px;font-variant-numeric:inherit;font-stret=
ch:inherit;font-size:15px;line-height:inherit;font-family:Arial,&quot;Helve=
tica Neue&quot;,Helvetica,sans-serif;vertical-align:baseline;list-style-pos=
ition:initial;color:rgb(36,39,41)"><li style=3D"margin:0px 0px 0.5em;paddin=
g:0px;border:0px;font-style:inherit;font-variant:inherit;font-weight:inheri=
t;font-stretch:inherit;font-size:inherit;line-height:inherit;font-family:in=
herit;vertical-align:baseline;word-wrap:break-word">1st cluster timecode is=
 0</li><li style=3D"margin:0px 0px 0.5em;padding:0px;border:0px;font-style:=
inherit;font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-=
size:inherit;line-height:inherit;font-family:inherit;vertical-align:baselin=
e;word-wrap:break-word">1st cluster / 1st simpleblock timecode is 0.0</li><=
li style=3D"margin:0px 0px 0.5em;padding:0px;border:0px;font-style:inherit;=
font-variant:inherit;font-weight:inherit;font-stretch:inherit;font-size:inh=
erit;line-height:inherit;font-family:inherit;vertical-align:baseline;word-w=
rap:break-word">1st cluster / 2nd simpleblock timecode is 0.167</li><li sty=
le=3D"margin:0px;padding:0px;border:0px;font-style:inherit;font-variant:inh=
erit;font-weight:inherit;font-stretch:inherit;font-size:inherit;line-height=
:inherit;font-family:inherit;vertical-align:baseline;word-wrap:break-word">=
1st cluster / 3rd simpleblock timecode is 0.083</li></ol><p style=3D"margin=
:0px 0px 1em;padding:0px;border:0px;font-variant-numeric:inherit;font-stret=
ch:inherit;font-size:15px;line-height:inherit;font-family:Arial,&quot;Helve=
tica Neue&quot;,Helvetica,sans-serif;vertical-align:baseline;clear:both;col=
or:rgb(36,39,41)">and so on...</p><p style=3D"margin:0px 0px 1em;padding:0p=
x;border:0px;font-variant-numeric:inherit;font-stretch:inherit;font-size:15=
px;line-height:inherit;font-family:Arial,&quot;Helvetica Neue&quot;,Helveti=
ca,sans-serif;vertical-align:baseline;clear:both;color:rgb(36,39,41)">How t=
hese timecode values are calculated?=C2=A0</p><p style=3D"margin:0px 0px 1e=
m;padding:0px;border:0px;font-variant-numeric:inherit;font-stretch:inherit;=
font-size:15px;line-height:inherit;font-family:Arial,&quot;Helvetica Neue&q=
uot;,Helvetica,sans-serif;vertical-align:baseline;clear:both;color:rgb(36,3=
9,41)">Thanks<br>Austin</p><p style=3D"margin:0px 0px 1em;padding:0px;borde=
r:0px;font-variant-numeric:inherit;font-stretch:inherit;font-size:15px;line=
-height:inherit;font-family:Arial,&quot;Helvetica Neue&quot;,Helvetica,sans=
-serif;vertical-align:baseline;clear:both;color:rgb(36,39,41)"><br></p></di=
v><div><b><i><br></i></b></div><div><b><i><br></i></b></div><div><br></div>=
</div>

--94eb2c0da5a4ed51b0055c05dcbe--

--===============8176419751727636804==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
Matroska-users mailing list
[email protected]
https://lists.matroska.org/cgi-bin/mailman/listinfo/matroska-users
Read Matroska-Users on GMane: http://dir.gmane.org/gmane.comp.multimedia.matroska.user

--===============8176419751727636804==--