Système et noyau | Matériels | Réseau | Xwindows | Documentation | Programmation | Divers

Divers

Tout sur le cdrom

Message de Jean-Louis Noullet du 12 Novembre 2001

Salut à tous,

Laurent Foucher écrivait :
> 
> Je m'interroge sur ce qui est écrit sur les pochettes de cd à graver 650 Mo
> 74 minutes. Or, sachant que la fréquence d'échantillonnage des cd audio
> est de 44100Hz et que le taux d'échantillonnage est de 2 octets et qu'il
> faut gérer la stéréo, un petit calcul nous amène à dire que l'on ne peut
> stocker que 64 mn 20 s sur 650 Mo. Où est donc l'astuce ? mes données
> sont fausses ?
> 

La différence vient principalement du code détecteur-correcteur
d'erreurs supplémentaire pour les données (l'audio est "moins bien
corrigé")

Voici les chiffres :

Tous les CD sont formattés en frames de 588 bits dont il reste
192 bits utiles (24 bytes) après décodage 14-to-8, interprétation
du code détecteur-correcteur d'erreurs dit "Cross Interleave
Reed-Solomon Coding (CIRC)" et d'un byte de "control and display"
Ces frames sont groupés en secteurs de 98 frames soit 2352 bytes utiles.

CD-R standard = 333000 secteurs

CD audio :

- chaque secteur contient 2352 bytes utiles (apres interprétation du
  code détecteur-correcteur d'erreurs "CIRC")
- 1 seconde de musique = 44100 * 2 * 2 = 176400 bytes
  (44100 = frequence d'echantillonnage, *2 pour 16 bits par echantillon,
   encore *2 pour stereo)
- 1 seconde de musique = 176400 / 2352 = 75 secteurs
- la vitesse de lecture de référence "X1" est donc 75 secteurs/seconde
- le CD de 333000 secteurs contient donc 4440 secondes soit 74 minutes
  de son 

CD ROM :

- chaque secteur contient 2048 bytes apres interprétation du header
  de 16 bytes et du second niveau de code détecteur-correcteur d'erreurs
  (CRC) de 288 bytes  (2352 - 288 - 16 = 2048)
- la vitesse "X1" correspond donc à 75 * 2048 = 153600 bytes de data par
  seconde, ou encore exactement 150 kbyte par seconde
- un CD de 333000 secteurs contient donc 666000 kbytes de data, soit
  681984000 bytes ou encore 650.39 M
  
CD-R "long" : contient 360000 secteurs au lieu de 333000, soit 
- en audio 4800 secondes soit 80 minutes
- en data  720000 kbytes = 703.12 M

Notes :
- pourquoi faut-il un niveau supplémentaire de code detecteur-correcteur
  d'erreurs pour les data ? (288 bytes / secteur)
  Dans le cas audio, on admet que quelques erreurs par CD échappent à la
  correction. Le lecteur audio est supposé remplacer les échantillons
  manquants par interpolation, ce qui est indétectable pour l'oreille
  dans le cas d'erreurs isolées.
  Donc il a fallu ajouter un niveau supplémentaire de correction pour les
  CD-ROM de données, ce qui représente un sacrifice de capacité de 14%
  ramené aux data utiles.
- pourquoi faut-il un header supplémentaire (16 bytes) aux secteurs de
  data ?
  Pour permettre l'accès aléatoire (saut à une adresse arbitraire).
  (Le CD audio est conçu pour un accès séquentiel)
- dans le cas du CD ROM, une partie de l'espace calculé ci-dessus ("650 Mo"
  ou "700 Mo" ) est occupé par le filesystem (tables d'allocation = FAT),
  comme sur un disque dur.
    
Jean Louis Noullet