[Ffmpeg-devel] Matroska Patch

Steve Lhomme steve.lhomme
Thu Mar 23 12:09:03 CET 2006


M?ns Rullg?rd wrote:
> Ian Caulfield said:
>> Is it just me, or will the block_time < 0 always be false, as it's an
>> unsigned value? (Obviously this bug isn't introduced by the patch)
> 
> No, block_time is signed.  It's the cluster time that's unsigned.  Thank
> the matroska devs for this mess.  Was it really necessary?

Yes :)

We tried to reduce the container overhead as much as possible. So 
instead of storing a large timecode with each Block, we divided it in 2 
parts, the big one in the Cluster (also usefull to seek quickly in the 
file without using Meta Seek or Cue Header) and a small one in each Block.

Given we store data in coding order, it's very possible that you create 
a new Cluster and the first frame(s) have a timecode lower than the 
Cluster time, so the difference (offset compared to the cluster time) 
needs to be signed. The Cluster time is usually the biggest timecode 
found in the previous Cluster (but it can be different, depending on the 
muxer).

Steve






More information about the ffmpeg-devel mailing list