[matroska-devel] matroska on lossy CDs

Steve Lhomme steve.lhomme at free.fr
Tue Jan 21 20:45:51 CET 2003

As said in this thread :

  Yesterday Christian raised an interresting question on how we can 
handle matroska files in XCD, ie mode 2 form 2 CDs. For those not aware, 
it's a way to write more data on a CD but in the other end you remove 
built-in error correction. So you can only use formats that have 
built-in error detection (EDC), and even better error correction (ECC) 
in such CDs.

The current situation of matroska is that the EDC (CRC32) is possible at 
all levels but mandatory nowhere. There is no elements for ECC yet, but 
I think we need to discuss with Frank about it (he knows a lot about ECC 
and has some working code). I guess it would be similar to CRC32 is use 
(possible everywhere but mandatory nowhere).

So that means we are very flexible (unlike any other existing 
container). Since on XCD you usually put only one file (named 
SOMETHING.dat) on one CD, you probably want the best protection for that 
CD/file. Most of the time the matroska files you capture or download 
won't have ECC or EDC inside (that's a possibility) so we can imagine a 
tool to add them in the file to burn. And depending on the final file 
size you want (probably the max size of data you can fit on your CD) 
that tool will decide where EDC should be used and where ECC should be 
used to maximize reliability of the file over time.

That's what the flexibility of EBML allow us to do, and that no other 
container can afford or do technically.

The fun part is that a file you download with too much protection and 
too large for a CD could still fit on that CD by removing some of them.

Frank, could you explain here (ML) a bit more about your ECC idea ? I 
browsed a bit on your MPC pages about it today. But the Hamming thing is 
still a bit obscure to me. What we need to add is one or more global 
matroska elements to handle ECC correctly (probably based on your 
work/study). One of the problem I see is that your system is based on 
bits, not octet, so it would be a bit tricky to express that in simple 
EBML (a complex way could tell the numbers of bits to use). The other 
problem is that adding ECC to a Cluster (or just a Block in the 
BlockAddition) with data as large as a few MB, the ECC calculus could 
take a lot of CPU and be very large.


More information about the Matroska-devel mailing list