231 lines
8.9 KiB
HTML
231 lines
8.9 KiB
HTML
<html>
|
|
<head>
|
|
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
|
|
|
|
<title>error correction</title>
|
|
<link rel="stylesheet" type="text/css" href="../include/dvdisaster.css">
|
|
</head>
|
|
<body>
|
|
|
|
<!--- Title header --->
|
|
<table width="100%" cellpadding="0" border="0">
|
|
<tr>
|
|
<td align="left">
|
|
<font size="+3"><b>dvdisaster</b></font>
|
|
<i>Version 0.72 (pl3)</i>
|
|
</td>
|
|
<td align="right">
|
|
<font size="+3"> </font><a href="http://dvdisaster.net/en/">To the Internet version</a>
|
|
<a href="../de/howtos61.html"></a>
|
|
|
|
<a href="../ru/howtos61.html"></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<!--- Language chooser or separator --->
|
|
<table width="100%" cellpadding="0" border="0">
|
|
<tr bgcolor="#000000">
|
|
<td colspan="2" width="100%"><img width=1 height=1 alt=""></td>
|
|
</tr>
|
|
<tr><td colspan="2" width="100%" height="10">
|
|
<img width=1 height=1 alt="">
|
|
</td></tr>
|
|
</table>
|
|
|
|
<!--- Main body (Navigation, actual page content, optional news column) --->
|
|
<table width="100%" cellspacing=0>
|
|
<tr>
|
|
<!--- Navigation --->
|
|
<td bgcolor="#f0f0f0" valign="top" width="20%">
|
|
<table width="100%" cellpadding="10">
|
|
<tr>
|
|
<td>
|
|
<font size="-1"><b>Contents</b></font>
|
|
<table width="100%" cellpadding="0" cellspacing="0">
|
|
<tr bgcolor="#000000">
|
|
<td width="100%"><img width=1 height=1 alt=""></td>
|
|
</tr>
|
|
</table><p>
|
|
|
|
<table width="100%">
|
|
|
|
<tr><td colspan=3><font size="-1"><a href="news.html">News</a></font></td></tr>
|
|
<tr><td></td><td></td><td height="10"></td></tr>
|
|
<tr><td colspan=3><font size="-1"><a href="index.html">Overview</a></font></td></tr>
|
|
<tr><td></td><td></td><td height="10"></td></tr>
|
|
<tr><td colspan=3><font size="-1"><a href="howtos.html">Howtos</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos60.html">The big picture</a></font></td></tr>
|
|
<tr><td valign="top"></td><td>-</td><td><font size="-1">error correction</font></td></tr>
|
|
<tr><td valign="top"></td><td>-</td><td><font size="-1"><a href="howtos62.html">correct usage</a></font></td></tr>
|
|
<tr><td valign="top"></td><td>-</td><td><font size="-1"><a href="howtos63.html">incorrect usage</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos10.html">Scanning media for errors</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos20.html">Putting error correction data on a separate file</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos30.html">Putting error correction data on the medium</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos40.html">Recovering media images</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos50.html">Getting information about images and error correction data</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtos90.html">Testing image compatibility</a></font></td></tr>
|
|
<tr><td valign="top" width="1%">·</td><td colspan=2><font size="-1"><a href="howtosa0.html">Dialogs and buttons</a></font></td></tr>
|
|
<tr><td></td><td></td><td height="10"></td></tr>
|
|
<tr><td colspan=3><font size="-1"><a href="download.html">Download</a></font></td></tr>
|
|
<tr><td></td><td></td><td height="10"></td></tr>
|
|
<tr><td colspan=3><font size="-1"><a href="qa.html">Questions and Answers</a></font></td></tr>
|
|
<tr><td></td><td></td><td height="10"></td></tr>
|
|
<tr><td colspan=3><font size="-1"><a href="feedback.html">Bug reporting</a></font></td></tr>
|
|
</table>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</td>
|
|
<td></td>
|
|
|
|
<!--- Actual page contents --->
|
|
<td valign="top" width="77%" rowspan="2">
|
|
|
|
<!--- Insert actual page content below --->
|
|
|
|
<h3>The idea behind the error correction</h3>
|
|
|
|
<table width="100%">
|
|
<tr valign="top">
|
|
<td><img src="../images/bad-cd.png"></td>
|
|
<td> </td>
|
|
<td><img src="../images/ecc.png"></td>
|
|
<td> </td>
|
|
<td rowspan="3">
|
|
The example from the previous page told us how dvdisaster reconstructs
|
|
data by using the still readable parts of the medium together with
|
|
the error correction data.<p>
|
|
|
|
In order to get the most out of dvdisaster a basic understanding
|
|
of the error correction method is helpful. And while we are at it we
|
|
can refute a misunderstanding we sometimes hear - the error correction
|
|
data is <b>not</b> simply a copy of the last 20% data sectors.
|
|
That'd really be a cheap shot ;-)
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td align="right">80%<img src="../images/rdiag-arrow.png"></td>
|
|
<td> </td>
|
|
<td align="left"><img src="../images/ldiag-arrow.png">20%</td>
|
|
<td> </td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> </td>
|
|
<td> <img src="../images/good-image.png"></td>
|
|
<td> </td>
|
|
<td> </td>
|
|
</tr>
|
|
</table><p>
|
|
|
|
<b>Example: Anna's desk drawer PIN</b><p>
|
|
|
|
Anna has got a desk whose drawers can only be opened after entering
|
|
the numbers "8 6 2 3" into a code lock. Since the drawers do not contain
|
|
any sensitive information she decides to note down the numbers directly
|
|
on the desktop:<p>
|
|
|
|
<img src="../images/ecc-example1.png"><p>
|
|
|
|
Anna is cautious and expects one of the numbers to become unreadable
|
|
by accidentally pouring ink over it. Therefore she also notes down
|
|
the sum of the four numbers (the "+" and "=" signs have only be added for
|
|
clarity):<p>
|
|
|
|
<img src="../images/ecc-example2.png"><p>
|
|
|
|
After a while one of the numbers indeed gets covered by an ink spot:<p>
|
|
|
|
<img src="../images/ecc-example3.png"><p>
|
|
|
|
But this is not a problem as Anna can re-calculate the missing
|
|
number <i>x</i>
|
|
by rearranging the still readable parts of the equation:<p>
|
|
|
|
8 + x + 2 + 3 = 19, hence<p>
|
|
|
|
x = 19 - 8 - 2 - 3, and therefore x = 6.<p>
|
|
|
|
It is easily seen that any one of the original five numbers can be
|
|
recovered from the remaining four. The example also demonstrates
|
|
some important properties of the error correction:
|
|
<p>
|
|
|
|
<table><tr><td><img src="../images/ecc-example4.png"></td><td> </td>
|
|
<td valign="top">
|
|
For a given set of data (e.g. the numbers "8 6 2 3")
|
|
additional error correction data (e.g. the sum "19") can be created
|
|
so that a lost datum can be re-calculated from the remaining data.<p>
|
|
|
|
The same principle is used in dvdisaster; the protected sequence of numbers
|
|
is nothing else than the ISO image of a CD, DVD or BD.</td>
|
|
</tr></table><p>
|
|
|
|
The concept of <b>redundancy</b> can be explained as follows:
|
|
|
|
<ul>
|
|
<li>One "error correction number" is calculated for four input numbers.
|
|
1 of 4 (or 1/4) relates to a redundancy of 25%.</li>
|
|
<li> From one error correction number we can re-calculate exactly one missing
|
|
number, or at most 25% of data.
|
|
The redundancy is equivalent to the maximum capacity of the error correction.</li>
|
|
<li> Additional storage required for the error correction data is also
|
|
determined by the redundancy (25% in the example).</li>
|
|
</ul>
|
|
|
|
dvdisaster uses the term of redundancy accordingly. In addition please
|
|
observe that
|
|
<ul>
|
|
<li>no data can be recovered when the data loss exceeds the redundancy
|
|
(the equation in the example can not be solved for two or more unknowns).</li>
|
|
<li>the error correction data must be calculated at a point in time
|
|
where all data is still present / readable.</li>
|
|
</ul><p>
|
|
|
|
The above shown example does not generalize into an error correction
|
|
scheme for recovering more than one missing data value. To do so a more
|
|
powerful equation system is needed which can be solved for more than
|
|
one missing value. dvdisaster uses a Reed-Solomon code
|
|
which does have such properties; however the required math is not taught
|
|
in school. Interested readers are therefore referred to the respective
|
|
books in coding theory.
|
|
|
|
<!--- do not change below --->
|
|
|
|
</td> <!--- end of page contents --->
|
|
|
|
</tr>
|
|
<tr valign="bottom">
|
|
<td bgcolor="#f0f0f0">
|
|
<table cellpadding="10"><tr><td><a href="http://dvdisaster.net/legacy/en/index.html"><font size="-1">Old documentation (V0.70)</font></a></td></tr></table>
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
|
|
</tr>
|
|
</table> <!--- end of main body table --->
|
|
|
|
|
|
<!--- Page footer --->
|
|
<table width="100%" cellpadding="0" border="0">
|
|
<tr><td colspan="2" width="100%" height="10"><img width=1 height=1 alt=""></td>
|
|
</tr>
|
|
<tr bgcolor="#000000"><td colspan="2" width="100%"><img width=1 height=1 alt=""></td>
|
|
</tr>
|
|
<tr>
|
|
<td align="center">
|
|
<font size="-1">
|
|
<i> Copyright 2004-2011 Carsten Gnörlich.<br>
|
|
Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved.
|
|
</i>
|
|
</font>
|
|
</td>
|
|
</tr>
|
|
<tr bgcolor="#000000"><td colspan="2" width="100%"><img width=1 height=1 alt=""></td>
|
|
</tr>
|
|
</table>
|
|
</body>
|
|
</html>
|