POE is not equal to PIF
The DVD specifications error correction works through the ECC blocks first through rows then through columns (a block is a 2D matrix of data).
So, one PIF
(which is a failure of a parity inner ROW) may contain several COLUMNS worth of incorrect data, before the Parity Outer code correction is applied.
This means that one PIF
can trigger several POE per ECC block, but only one POE per column. We measure and look at disc scans per 8 consecutive ECC blocks (POE) or 1 ECC block at a time (PIF
). However, from the specification point of view, a single ECC block COLUMN is also important.
Look at this (simplified example):
0 and 1 = correct data
X = incorrect data
1 - 4 = rows
A - D = columns
Parity outer columns
A B C D
P 1 0 0 0 = PIE=0, PIF=0, POE=0
a 2 0 x 0 = PIE=1, PIF=0 (assuming that one PIE is correctable), POE = 0, POF = 0
r 3 0 x x = PIE=2, PIF=1 (assuming that one PIE is NOT correctable), POE = 2, POF = 0
i 4 x x x = PIE=3, PIF=1 (assuming PIE unc.), POE=3, POF=0 (assuming POE corr.)
y Inner Rows
The first row is clean.
The second row has one POE, but let's assume it's still correctable (=0 PIF)
The third row has 2 POE, let's assume that's too much to correct (=1 PIF)
and this results in 2 POE (two columns are erroneous after Parity Inner code has been applied)
The fourth row has 3 PIE (uncorrectable), this results in 1 PIF and 3 POE (because 3 columns are erroneus
Do note that I'm talking about number of errors per row and column, not per ECC block.
NB! This is a simplified example to illustrate rows and columns.
ECC blocks on DVD are not comprised of 4x4 byte ECC blocks!
I haven't seen a statistical simulation of correlation between PIF
and I'm too tired/scared/dumb to walk through the DVD correction circuit algorithm by hand.
However, there are some interesting tidbits in the spec itself.
On a dvd disc, there are 208 rows of Parity-Inner code fixable data in an ECC block. Each row has 172 columns for which there is Parity-Inner codes (there are actually 182 columns on each row, only the 172 payload data columns have PO codes for them).
So, assume that a PIF
(which is a parity inner ROW failure after Parity Inner code has been applied) can result in 1 - (172-5) PO columns having an erroneus bytes. You notice I subtract 5 from the max of 172, becaue the PI code can fix up to 5 erroneus bytes per row. So, when a PIF
occurs, lets assume that PI code has still fixed up to 5 erroneous bytes, so not all columns are erroneus (in reality it could be more than 5 in the worst case, depending on implementation).
So, 1 PIF
may result in anything from 1 to 167 PO errors.
As for POF
, up to 8 bytes (8 rows having an uncorrectable byte in the same column) can still be corrected by the Parity Outer code PER column. More than 8 bytes of erroneus data on any one column and a POF
This is a simplified example from the spec. The actual chip level implementation might differ (due to several passes being applied).
According to CISD a DVD disc (conforming to original dvd spec) should have a maximum of 0 POE. Haven't seen too many scans like that yet... In fact, I suspect this figure could be wrong and they mean 0 POF
. No wonder the DVD+R spec is then more relaxed (allows up to 4 PIF
, which can mean anything from 4x(1-167) POE).
So, in fact, if we wanted to scan more diligently, we should have the following spec limits:
/ 8 consecutive ECC blocks (to pass dvd specs)
<=0 POE / 1 ECC block (if CISD data is right) this equals 0 PIF
, because each PIF
is AT LEAST 1 POE (to pass a good disc)
<=4 rows that have max 5 PIE
each / 1 ECC block (to ensure that likelihood of being <=PIF
, thus within DVD+R spec)
/ 1 ECC block (to pass DVD+R spec)
<=8 POE / 1 ECC block COLUMN (to be still be readable, because after 8 POE a POF
may ensue *depending on the implementation of the error correction)
<= 0 POF
(to be theoretically readable)
PS I cannot guarantee the above is 100% correct, as it is based on my limited understanding of DVD specs (DVD, DVD+R) and third party sources. I'm very tired now, this text may have a lot of typos, but I might as well post it now... Please shoot it down if I was too tired to notice my mistakes :)