Los diversos formatos de CD están un poco involucrados, y las especificaciones oficiales ("libro rojo" para CD de audio, "libro amarillo" para CD de datos) no están disponibles de forma gratuita. Pero puede encontrar algunos detalles en los estándares disponibles como Ecma-130.
El CD de audio original (también llamado CD-DA) fue modelado en el disco de vinilo, lo que significa que también utiliza una pista en espiral de datos de audio continuos (el DVD luego utilizó pistas circulares). Intercalados dentro de estos datos de audio de una manera muy compleja hay 8 subcanales (P a W), de los cuales el subcanal Q contiene información de temporización (literalmente en minutos / segundos / fracciones de segundos) y el número de pista actual. Para el propósito original, esto fue suficiente: para la reproducción continua, la lente se ajustó ligeramente para seguir la pista. Para buscar, la lente se movería mientras decodificaba el subcanal Q hasta encontrar la pista correcta. Este posicionamiento es un poco tosco, pero completamente adecuado para escuchar música.
Todavía hoy, muchas unidades de CD de computadora no pueden posicionar con precisión la lente y sincronizar los circuitos de decodificación para que la lectura de muestras de audio comience en una posición exacta. Esta es la razón por la cual muchos programas de extracción de CD tienen un modo de "paranoia", donde hacen lecturas superpuestas y comparan los resultados para ajustarse a esta "fluctuación". Como parte de la transmisión de audio, el subcanal también está sujeto a fluctuaciones, y es por eso que obtiene diferentes archivos de subcanal cuando extrae en una unidad de CD que no puede posicionarse con precisión.
Cuando se desarrolló la especificación del CD de datos (CD-ROM) para ampliar la especificación del CD-DA, se reconoció la importancia de direccionar y leer los datos con precisión, por lo que la trama de audio de 2352 bytes se subdividió en 12 bytes de sincronización y 4 bytes de encabezado (para la dirección del sector), dejando los 2336 bytes restantes para datos y un nivel adicional de corrección de errores. Con este esquema, los sectores se pueden abordar exactamente sin tener que depender únicamente de la información del canal Q. Por lo tanto, el efecto de jitter no se aplica, siempre obtienes los mismos datos cuando vuelcas un CD-ROM y no se necesita ninguna inteligencia adicional en el volcado.
Editar con más detalles:
De acuerdo con Ecma-130 , los datos se codifican en etapas: 24 bytes forman un cuadro F1 , los bytes de 106 de estos cuadros se distribuyen en 106 cuadros F2 , que obtienen 8 bytes adicionales de corrección de errores. Esos cuadros a su vez obtienen un byte adicional ("byte de control") para convertirlos en F3-Frames . El byte adicional contiene la información del subcanal (un subcanal para cada posición de bit). Un grupo de 98 F3-Frames se denomina sección , y los 98 bytes de control asociados contienen dos bytes de sincronización y 96 bytes de datos de subcanal reales. El subcanal Q además tiene 16 bits de corrección de error CRC en esos 96 bits.
La idea detrás de esto es distribuir datos en la superficie del disco de tal manera que los rasguños, la suciedad, etc. no afecten muchos bits continuos, por lo que la corrección de errores puede recuperar los datos perdidos siempre que los rasguños no sean demasiado grande.
Como consecuencia, el hardware de la unidad de CD necesita leer una sección completa después de reposicionar la lente para averiguar dónde está en el flujo de datos. El descifrado de las distintas etapas se realiza mediante hardware, que debe sincronizarse con los 2 bytes de sincronización en el flujo de bytes de control. Todos los modelos de unidades de CD necesitan una cantidad de tiempo diferente para sincronizarse en comparación con otros modelos (puede probarlo leyendo desde dos unidades diferentes, si las tiene), dependiendo de cómo se implemente el hardware. Además, muchos modelos no siempre tardan exactamente el mismo tiempo en sincronizarse, por lo que pueden comenzar un poco más temprano o más tarde y generar los datos descifrados no siempre en el mismo byte.
Entonces, cuando el programa de extracción emite un READ CD
comando (0xBE), proporciona una longitud de transferencia y una dirección de inicio (o más bien, tiempo de canal Q). La unidad posiciona la lente, descifra los marcos, extrae el canal Q, compara el tiempo y, cuando encuentra el tiempo correcto, comienza a transferir. Esta transferencia no siempre comienza en el mismo byte que se explicó anteriormente, por lo que el resultado de múltiples READ CD
comandos puede cambiarse entre sí. Es por eso que ve diferentes archivos de subcanal de su destripador.
Dependiendo del hardware y las circunstancias en que se ajusta la lente, es más o menos aleatorio si la transferencia comienza algunas muestras antes o algunas muestras tarde. Entonces, el único patrón que verá en los resultados es que los cambios son un múltiplo de la longitud de transferencia.
Algunos modelos de unidades tienen un hardware preciso que siempre comenzará la transferencia al mismo tiempo. El estándar define un bit en la página de modo 0x2a ("Capacidades de CD / DVD y página de estado mecánico") que indica si ese es el caso, pero la experiencia del mundo real muestra que algunas unidades que afirman ser exactas no lo son. (En Linux, puede usar sg_modes
el sg3-utiles
paquete para leer las páginas de modo, no sé qué herramienta usar en Windows).