32-bit Cyclical Redundancy Check (CRC-32)
All MPEG-2 private table sections with the private_indicator set to one have a four-byte table section footer called the CRC-32, for 32-bit cyclic redundancy check.
A CRC has a similar function to "parity checks" that were around in the first days of computers: a way of checking if data was transmitted correctly.
Each time a table section is created, the creator calculates a polynomial on each byte of the table section, starting with the table_id and ending with the last byte. The result is a 32-bit (four byte) value that is divided into four bytes and appended to the table section.
At the receiving end, the same calculation is performed, except that the four bytes of the CRC-32 are also included. If the result is zero, then the section was received properly. If the result is non-zero, then the section is of no value and is discarded. Unlike forward error correction schemes, CRC-32 doesn't provide a mechanism for correcting the section, it only flags errors in transmission. CRC-32 can find any number of errors in a private table section.
There is an argument that digital transmission, using Forward Error correction, has so few errors that CRC-32 is overkill. Some private tables used in data broadcasting can optionally use CRC-32, a simpler "checksum" or no error detection at all.
|