Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: C2 error bits vs. block error (Read 2747 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

C2 error bits vs. block error

In MMC-3 (Table 150), for the READ CD command one has the option to retrieve C2 error bits (one bit for each audio byte returned in the CDDA sector) or the C2 block error (the logical OR of all the error bits).

Since the 2,352 audio bytes of a single sector represent the smallest independent unit accessible by most audio software, what use are the error bits?  In other words, what could I do knowing that there is a C2 error in byte 300 of sector X vs. simply knowing that there is a C2 error somewhere in sector X?

C2 error bits vs. block error

Reply #1
So you can interpolate just those samples rather than the whole frame.

 

C2 error bits vs. block error

Reply #2
In MMC-3 (Table 150), for the READ CD command one has the option to retrieve C2 error bits (one bit for each audio byte returned in the CDDA sector) or the C2 block error (the logical OR of all the error bits).

Since the 2,352 audio bytes of a single sector represent the smallest independent unit accessible by most audio software, what use are the error bits?  In other words, what could I do knowing that there is a C2 error in byte 300 of sector X vs. simply knowing that there is a C2 error somewhere in sector X?


First item:

Technically in MMC-3's Read CD command, you have the option to:

1. Not retrieve C2 error bits.
2. Retrieve C2 error bits.
3. Retrieve C2 error bits plus have the C2 block error (logical OR of all the error bits) pre-pended to the C2 error bits.

The only real difference between 2 and 3 is that 3 may save you some CPU time when processing the data (because the drive is used to create an additional word-sized flag reporting whether or not there are any C2 errors into a single word, instead of having to check all of the bits which would take longer).

Second item:

In addition to what spoon said (it is helpful to only have to interpolate smaller portions of the frame), the flags are can be useful in to assist in your re-read strategy because sometime error-flagged subframes might give an unflagged subframe after several reads if you are lucky (meaning the associated subframe data is more likely to be correct data) or, alternately, the data in the erroneous data in subframe may differ on some rereads so you can also do a statistical analysis of the erroneous subframe and perform your interpolation on the most common result which may be the closest result to correct.

The use of maybe, sometimes, lucky, etc. are used above since drive error detection/correction, C2 generation, etc. performance varies a lot across different hardware.

It reminds me of playing the game Mastermind...you often know there's a problem with the data, but you have to use your cunning analysis to make best guesses given the partial data you have on the problem.

-brendan