[Matroska-devel] Re: Dirac Video Codec

Arioch /BDV/ the_Arioch at nm.ru
Tue Oct 5 12:44:15 CEST 2004

The stars so gaily glistened... (Mon, 4 Oct 2004 21:00:03 -0500 @125)
...while the fading voice of Paul whispered through the darkness:

[Sorry, skipped] 

 PB> Matroska.  Besides localizing errors, Matroska also has the possibility
 PB> of adding CRC32 data at different levels. 

Alas this is almost undocumented in EBML docs :-((((

 PB>  I have only seen it done at the Cluster level, but this lets you know 
 PB> if a Cluster has been damaged, even if all of the data appears to be 
 PB> valid. 

Just a crazy idea:

I'm afraid that calculating MD5 or CRC (or maybe some stronger signature, like SHA) would take a lot o CPU.
I wonder, if there was some kind of spots, say signed  would be some small `sub-stream` made of every 16th byte of Cluster.

Little errors, like bit flip, are not of big danger, as You've shown.
And such CRC could be, i think, relatively quickly checked (read: checked at the time of playback) and help to find relatively long troubles.
Of course current all-bytes-through CRC my co-exists :-)

 PB>  And while it has not been implemented yet, there is also the 
 PB> possibility of adding error recovery data in the same way to be able 
 PB> to actually recover damaged data.

I think such a 'brackets', are to be more standardised in EBML.
for exampel here is one more possible application:
Let's imagine EBML-based archiver format, instead of current 7z, zip, rar.
Then we can imagine passworded encryption of some of the data.
And it will give as flexibility (may be too big indeed) as, for example:
  ....[CRC slot  (file header - name, date, size etc) [password encryption (file data) ] ]...
or ...[CRC slot [password encryption slot  (header)(data) ] ]....
or even ...[password1 encryption (header)(data).. [password2 (header)(data)] (h)(d) ]....

1st and 2nd line gives You 2 modes of password protected archives, i met in different archivers.
Some programs can show file info but will not de-compress until password is given.
Other even does not allwo You to list the password-protected files.

3rd line is some crazy method, that might be used by some installers, but would be too complex for usual user.
It is more of theory than of real-life practical example.

I just thought that good EBML library, would have some callbacks or some gates to master application, so application would provide decoder (here - password-using decrypter) and thus will generate derived EBML sub-stream.
Of course, nothing stops me from doing RAM streams by the means of application itself, and then give this sub-stream to another instance of EBML parser - but that is not so cute :-) 
And that will not use any context, gathered why parsing main EBML stream. For example if some tag (class id in terms of EBML?) will have different meaning when put inside different outer classes-containers.

Sorry for my poor English, that just soem thoughts into the air, so i do not know if they worth reading such a misty attempt to explain :-)

ICQ - xmpp://arioch@jabber.ru  xmpp://93438391@icq.jabber.ru
http://Arioch.nm.ru/FL/Fidolook_SL.png    Mail: the_Arioch<at>nm<dot>ru

More information about the Matroska-devel mailing list