<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <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"> <span class="fxxl"><b>dvdisaster</b></span> <i>Version 0.72.4 / 0.72 (pl4)</i> </td> <td align="right"> <span class="fxxl"> </span><a href="http://dvdisaster.net/en/">To the Internet version</a> <a href="../cs/howtos61.html"></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> <td colspan="2" class="hsep"></td> </tr> <tr><td colspan="2" style="height: 10px"> </td></tr> </table> <!-- Main body (Navigation, actual page content, optional news column) --> <table width="100%" cellspacing=0> <tr> <!-- Navigation --> <td style="background-color:#f0f0f0; vertical-align:top; width:20%;"> <table width="100%" cellpadding="10"> <tr> <td> <span class="fs"><b>Contents</b></span> <table width="100%" cellpadding="0" cellspacing="0"> <tr> <td class="hsep"></td> </tr> </table><p> <table width="100%"> <tr><td colspan=3><span class="fs"><a href="news.html">News</a></span></td></tr> <tr><td></td><td></td><td style="height:10px;"></td></tr> <tr><td colspan=3><span class="fs"><a href="index.html">Overview</a></span></td></tr> <tr><td></td><td></td><td style="height:10px;"></td></tr> <tr><td colspan=3><span class="fs"><a href="howtos.html">Howtos</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos60.html">The big picture</a></span></td></tr> <tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs">error correction</span></td></tr> <tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="howtos62.html">correct usage</a></span></td></tr> <tr><td></td><td style="vertical-align:top; font-size:small;">-</td><td><span class="fs"><a href="howtos63.html">incorrect usage</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos10.html">Scanning media for errors</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos20.html">Putting error correction data on a separate file</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos30.html">Putting error correction data on the medium</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos40.html">Recovering media images</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos50.html">Getting information about images and error correction data</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtos90.html">Testing image compatibility</a></span></td></tr> <tr><td style="width:1%; vertical-align:top;">·</td><td colspan=2><span class="fs"><a href="howtosa0.html">Dialogs and buttons</a></span></td></tr> <tr><td></td><td></td><td style="height:10px;"></td></tr> <tr><td colspan=3><span class="fs"><a href="download.html">Download</a></span></td></tr> <tr><td></td><td></td><td style="height:10px;"></td></tr> <tr><td colspan=3><span class="fs"><a href="qa.html">Questions and Answers</a></span></td></tr> <tr><td></td><td></td><td style="height:10px;"></td></tr> <tr><td colspan=3><span class="fs"><a href="feedback.html">Bug reporting</a></span></td></tr> </table> </td> </tr> </table> </td> <td></td> <!-- Actual page contents --> <td style="vertical-align:top; width:77%;" rowspan="2"> <!-- Insert actual page content below --> <h3 class="top">The idea behind the error correction</h3> <table width="100%"> <tr valign="top"> <td><img src="../images/bad-cd.png" alt="Icon: Damaged medium (partially unreadable)"></td> <td> </td> <td><img src="../images/ecc.png" alt="Icon: Separate file with error correction data"></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" class="w65x">80%<img src="../images/rdiag-arrow.png" alt="Icon: Diagonal arrow right"></td> <td> </td> <td align="left" class="w65x"><img src="../images/ldiag-arrow.png" alt="Icon: Diagonal arrow left">20%</td> <td> </td> </tr> <tr> <td> </td> <td> <img src="../images/good-image.png" alt="Icon: Complete image"></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" alt="8 6 2 3"><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" alt="8+6+2+3=19"><p> After a while one of the numbers indeed gets covered by an ink spot:<p> <img src="../images/ecc-example3.png" alt="8+ +6+2+3=19"><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" alt="8+6+2+3 (medium)=19 (ecc)"></td><td> </td> <td class="valignt"> 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 style="background-color:#f0f0f0;"> <table cellpadding="10"><tr><td><a href="http://dvdisaster.net/legacy/en/index.html"><span class="fs"></span></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" style="width:100%; height:10px;"></td> </tr> <tr><td colspan="2" class="hsep"></td> </tr> <tr> <td align="center"> <span class="fs"> <i> Copyright 2004-2012 Carsten Gnörlich.<br> Verbatim copying and distribution of this entire article is permitted in any medium, provided this notice is preserved. </i> </span> </td> </tr> <tr><td colspan="2" class="hsep"></td> </tr> </table> </body> </html>