I vari formati di CD sono un po 'coinvolti e le specifiche ufficiali ("libro rosso" per CD audio, "libro giallo" per CD dati) non sono disponibili gratuitamente. Ma puoi trovare alcuni dettagli negli standard disponibili come Ecma-130.
Il CD audio originale (chiamato anche CD-DA) è stato modellato sul disco in vinile, il che significa che utilizza anche una traccia a spirale di dati audio continui (il DVD ha successivamente utilizzato tracce circolari). All'interno di questi dati audio sono intercalati in modo molto complesso 8 canali secondari (da P a W), di cui il canale secondario Q contiene informazioni di temporizzazione (letteralmente in minuti / secondi / frazioni di secondo) e il numero della traccia corrente. Per lo scopo originale questo è bastato: per una riproduzione continua, l'obiettivo è stato leggermente regolato per seguire la traccia. Per cercare, l'obiettivo si spostava durante la decodifica del sottocanale Q fino a quando non veniva trovata la traccia giusta. Questo posizionamento è un po 'approssimativo, ma completamente adeguato per ascoltare la musica.
Ancora oggi, molte unità CD per computer non sono in grado di posizionare accuratamente l'obiettivo e sincronizzare i circuiti di decodifica in modo che la lettura dei campioni audio inizi in una posizione esatta. Questo è il motivo per cui molti programmi di ripping di CD hanno una modalità "paranoia", in cui eseguono letture sovrapposte e confrontano i risultati per adattarsi a questo "jitter". Come parte del flusso audio, anche il sottocanale è soggetto a jitter ed è per questo che si ottengono diversi file di sottocanale quando si esegue il ripping su un'unità CD che non può essere posizionata correttamente.
Quando è stata sviluppata la specifica CD di dati (CD-ROM) per estendere la specifica CD-DA, è stata riconosciuta l'importanza di indirizzare e leggere accuratamente i dati, quindi il frame audio di 2352 byte è stato suddiviso in 12 byte di sincronizzazione e 4 byte di intestazione (per l'indirizzo del settore), lasciando i rimanenti 2336 byte per i dati e un ulteriore livello di correzione degli errori. Usando questo schema, i settori possono essere affrontati esattamente senza dover fare affidamento solo sulle informazioni del canale Q. Pertanto l'effetto jitter non si applica, si ottengono sempre gli stessi dati quando si scarica un CD-ROM e non è necessaria ulteriore intelligenza nel dumping.
Modifica con maggiori dettagli:
Secondo Ecma-130 , i dati sono decodificati in più fasi: 24 byte formano un frame F1 , i byte di 106 di questi frame sono distribuiti in 106 frame F2 , che ottengono 8 byte extra di correzione degli errori. Questi frame a loro volta ottengono ciascuno un byte aggiuntivo ("byte di controllo") per trasformarli in frame F3 . Il byte aggiuntivo contiene le informazioni del canale secondario (un canale secondario per ogni posizione di bit). Un gruppo di 98 frame F3 è chiamato sezione e i 98 byte di controllo associati contengono due byte di sincronizzazione e 96 byte di dati del sottocanale reale. Il canale secondario Q ha inoltre 16 bit di correzione dell'errore CRC in quei 96 bit.
L'idea alla base è quella di distribuire i dati sulla superficie del disco in modo tale che graffi, sporco ecc. Non influiscano su molti bit continui, quindi la correzione degli errori può recuperare i dati persi purché i graffi non lo siano troppo grande.
Di conseguenza, l'hardware dell'unità CD deve leggere una sezione completa dopo il riposizionamento dell'obiettivo per scoprire dove si trova nel flusso di dati. La decodifica delle varie fasi viene eseguita dall'hardware, che deve sincronizzarsi con i 2 byte di sincronizzazione nel flusso di byte di controllo. Tutti i modelli di unità CD richiedono un tempo diverso per la sincronizzazione rispetto ad altri modelli (è possibile verificarlo leggendo da due unità diverse, se presenti), a seconda della modalità di implementazione dell'hardware. Inoltre, molti modelli non sempre impiegano esattamente lo stesso tempo per la sincronizzazione, quindi possono avviarsi un po 'in anticipo o in ritardo e produrre i dati decodificati non sempre allo stesso byte.
Pertanto, quando il programma di ripping emette un READ CD
comando (0xBE), fornisce una lunghezza di trasferimento e un indirizzo iniziale (o meglio, tempo del canale Q). L'unità posiziona l'obiettivo, decodifica i fotogrammi, estrae il canale Q, confronta il tempo e quando trova il tempo corretto, inizia a trasferire. Questo trasferimento non inizia sempre nello stesso byte spiegato sopra, quindi il risultato di più READ CD
comandi può essere spostato l'uno contro l'altro. Ecco perché vedi diversi file di subchannel dal tuo ripper.
A seconda dell'hardware e delle circostanze in cui l'obiettivo è regolato, è più o meno casuale se il trasferimento inizia alcuni campioni in anticipo o alcuni campioni in ritardo. Quindi l'unico motivo che vedrai nei risultati è che i turni sono un multiplo della lunghezza del trasferimento.
Alcuni modelli di unità hanno in realtà un hardware accurato che inizierà sempre il trasferimento allo stesso tempo. Lo standard definisce un bit in modalità pagina 0x2a ("Funzionalità CD / DVD e pagina di stato meccanico") che indica se è così, ma l'esperienza del mondo reale mostra che alcune unità che affermano di essere esatte in realtà non lo sono. (Sotto Linux, puoi usare sg_modes
dal sg3-utiles
pacchetto per leggere le pagine della modalità, non so quale strumento usare in Windows).