Les différents formats de CD sont un peu impliqués et les spécifications officielles ("livre rouge" pour CD audio, "livre jaune" pour CD de données) ne sont pas librement disponibles. Mais vous pouvez trouver quelques détails dans les normes disponibles comme Ecma-130.
Le CD audio original (également appelé CD-DA) a été modelé sur le disque vinyle, ce qui signifie qu'il utilise également une piste en spirale de données audio continues (le DVD a ensuite utilisé des pistes circulaires). Entrelacé dans ces données audio d'une manière très complexe sont 8 sous-canaux (P à W), dont le sous-canal Q contient des informations de synchronisation (littéralement en minutes / secondes / fractions de secondes) et le numéro de piste actuel. Pour le but d'origine, cela suffisait: pour un jeu continu, l'objectif était juste légèrement ajusté pour suivre la piste. Pour chercher, l'objectif se déplacerait pendant le décodage du sous-canal Q jusqu'à ce que la bonne piste soit trouvée. Ce positionnement est un peu grossier, mais tout à fait suffisant pour écouter de la musique.
Aujourd'hui encore, de nombreux lecteurs de CD d'ordinateur ne peuvent pas positionner complètement l'objectif avec précision et synchroniser les circuits de décodage de sorte que la lecture des échantillons audio commence à une position exacte. C'est pourquoi de nombreux programmes d'extraction de CD ont un mode "paranoïa", où ils effectuent des lectures superposées et comparent les résultats pour ajuster cette "gigue". Dans le cadre du flux audio, le sous-canal est également sujet à la gigue, et c'est pourquoi vous obtenez différents fichiers de sous-canal lorsque vous extrayez sur un lecteur de CD qui ne peut pas se positionner avec précision.
Lorsque la spécification de CD de données (CD-ROM) a été développée pour étendre la spécification CD-DA, l'importance d'adresser et de lire les données avec précision a été reconnue, de sorte que la trame audio de 2352 octets a été subdivisée en 12 octets de synchronisation et 4 octets d'en-tête (pour l'adresse du secteur), laissant les 2336 octets restants pour les données et un niveau supplémentaire de correction d'erreur. En utilisant ce schéma, les secteurs peuvent être adressés exactement sans avoir à se fier uniquement aux informations du canal Q. Par conséquent, l'effet de gigue ne s'applique pas, vous obtenez toujours les mêmes données lorsque vous videz un CD-ROM, et aucune astuce supplémentaire dans le dumping n'est nécessaire.
Modifier avec plus de détails:
Selon Ecma-130 , les données sont brouillées par étapes: 24 octets constituent une trame F1 , les octets de 106 de ces trames sont répartis en 106 trames F2 , qui obtiennent 8 octets supplémentaires de correction d'erreur. Ces trames reçoivent à leur tour un octet supplémentaire ("octet de contrôle") pour en faire des cadres F3 . L'octet supplémentaire contient les informations de sous-canal (un sous-canal pour chaque position de bit). Un groupe de 98 trames F3 est appelé une section , et les 98 octets de contrôle associés contiennent deux octets de synchronisation et 96 octets de données réelles de sous-canal. Le sous-canal Q a en outre 16 bits de correction d'erreur CRC dans ces 96 bits.
L'idée derrière cela est de distribuer les données sur la surface du disque de telle manière que les rayures, la saleté, etc. n'affectent pas beaucoup de bits continus, de sorte que la correction d'erreur peut récupérer les données perdues tant que les rayures ne le sont pas. trop grand.
Par conséquent, le matériel du lecteur de CD doit lire une section complète après avoir repositionné l'objectif pour savoir où il se trouve dans le flux de données. Le désembrouillage des différentes étapes est effectué par le matériel, qui doit se synchroniser avec les 2 octets de synchronisation dans le flux d'octets de contrôle. Tous les modèles de lecteurs de CD ont besoin d'un temps différent pour se synchroniser par rapport aux autres modèles (vous pouvez le tester en lisant à partir de deux lecteurs différents, si vous en avez), selon la façon dont le matériel est implémenté. De plus, de nombreux modèles ne prennent pas toujours exactement le même temps pour se synchroniser, ils peuvent donc démarrer un peu tôt ou tard et produire les données désembrouillées pas toujours au même octet.
Ainsi, lorsque le programme d'extraction émet une READ CD
commande (0xBE), il fournit une longueur de transfert et une adresse de début (ou plutôt, l'heure du canal Q). Le lecteur positionne l'objectif, désembrouille les images, extrait le canal Q, compare l'heure et lorsqu'il trouve l'heure correcte, il commence à transférer. Ce transfert ne commence pas toujours au même octet comme expliqué ci-dessus, donc le résultat de plusieurs READ CD
commandes peut être décalé les uns contre les autres. C'est pourquoi vous voyez différents fichiers de sous-canal de votre ripper.
Selon le matériel et les circonstances où l'objectif est ajusté, il est plus ou moins aléatoire si le transfert démarre quelques échantillons plus tôt ou quelques échantillons plus tard. Ainsi, le seul motif que vous verrez dans les résultats est que les décalages sont un multiple de la longueur de transfert.
Certains modèles de disques ont en fait un matériel précis qui commencera toujours le transfert en même temps. La norme définit un bit dans la page de mode 0x2a ("Capacités CD / DVD et page d'état mécanique") qui indique si c'est le cas, mais l'expérience du monde réel montre que certains lecteurs prétendant être exacts ne le sont en fait pas. (Sous Linux, vous pouvez utiliser à sg_modes
partir du sg3-utiles
package pour lire les pages de mode, je ne sais pas quel outil utiliser sous Windows).