[matroska-devel] matroska on lossy CDs
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