Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 137

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 259

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1149

Deprecated: Function set_magic_quotes_runtime() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1034

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/ncorlett/neillcorlett.com/wiki/wikka.php:137) in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1136

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ncorlett/neillcorlett.com/wiki/wikka.php:137) in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 1136
<br /> <b>Deprecated</b>: Function ereg() is deprecated in <b>/home/ncorlett/neillcorlett.com/wiki/wikka.php</b> on line <b>439</b><br /> How ECM Works<br /> <b>Deprecated</b>: Function ereg() is deprecated in <b>/home/ncorlett/neillcorlett.com/wiki/wikka.php</b> on line <b>439</b><br /> - Neill Corlett's Home Page


Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 439
How ECM Works


Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/actions/header.php on line 55


Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 41

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 46

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 61

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 62

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 70

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 72

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 79

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 80

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/handlers/page/show.php on line 85

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 630

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 630

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 630

Deprecated: Function ereg() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 628

Deprecated: Function ereg_replace() is deprecated in /home/ncorlett/neillcorlett.com/wiki/wikka.php on line 630

CD Data Sectors


To understand what ECM does and how it works, you must first understand the sectors in a CD and what they're made of.

A typical data CD consists of thousands of 2352-byte sectors. Each sector looks like this (drawings not to scale):


Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/safehtml.php on line 308

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 159

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 161

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 162

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 163

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 165

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 166

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 167

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 243

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 250

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 259

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 266

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 273

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 280

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 467

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 469

Deprecated: Assigning the return value of new by reference is deprecated in /home/ncorlett/neillcorlett.com/wiki/3rdparty/core/safehtml/classes/HTMLSax.php on line 471


Only 2048 bytes in each sector are used for actual data. The rest are:
  • Sync - A special code used by the drive to tell where the sector begins
  • Address - This tells the drive which sector it's looking at
  • EDC - Error Detection Code, used to detect if the data is corrupt
  • ECC - Error Correction Code, used to correct the data if it is corrupt
When you create BIN/CUE files from a data CD, the BIN contains all of this data - all 2352 bytes from each sector.

The light-colored areas in the diagram (sync, address, data) are usually easy to compress. However, the dark areas (EDC, ECC) look like noise, and are nearly impossible to compress with conventional tools such as WinRAR. When you compress a BIN file in WinRAR, each sector ends up looking something like this:



Sync, address, and data compress okay, but EDC and ECC just sit there like bricks taking up space. And they usually don't even need to be there!

Filtering Sectors Through ECM First


ECM selectively strips the sync, EDC and ECC codes from each sector, whenever possible. Once a BIN file has been run through ECM, the resulting sectors look like this:



That process, in itself, doesn't reduce the BIN size very much. But notice how the only parts left are the light-colored (easy to compress) parts! Now, when you run the ECM file through WinRAR, you'll get much better results than before:



But wait a minute, don't I need those ECC codes? Doesn't that make it less reliable?


You get the EDC/ECC codes back when you convert from ECM back to BIN (which is required before burning - you can't currently burn a ECM file directly).

When you're archiving or transmitting files in a format such as RAR, you already have error detection built in. WinRAR doesn't particularly care about the CD sector EDC/ECC codes, and just handles BIN files like any other file.

So no, you're not losing any reliability by converting BIN files to ECM, as long as you make sure to convert them back before burning.

What about copy protection? Don't they use bogus ECC data? Wouldn't ECM ruin that?


ECM only eliminates EDC/ECC data for sectors where it's verifiably possible to recreate that data. If the ECC is bogus, ECM will preserve that bogus data.

You won't lose any data by converting a file to ECM and back again. The process is completely lossless.




Wiki

contact Neill Corlett