Os vários formatos de CD estão um pouco envolvidos, e as especificações oficiais ("livro vermelho" para CD de áudio, "livro amarelo" para CD de dados) não estão disponíveis gratuitamente. Mas você pode encontrar alguns detalhes nos padrões disponíveis, como o Ecma-130.
O CD de áudio original (também chamado de CD-DA) foi modelado no disco de vinil, o que significa que ele também usa uma faixa espiral de dados de áudio contínuos (o DVD posteriormente usou faixas circulares). Intercalados dentro desses dados de áudio de uma maneira muito complexa, existem 8 subcanais (P a W), dos quais o subcanal Q contém informações de tempo (literalmente em minutos / segundos / frações de segundos) e o número da faixa atual. Para o objetivo original, isso foi suficiente: para reprodução contínua, a lente foi ajustada levemente para seguir a pista. Para procurar, a lente se moveria ao decodificar o sub-canal Q até que o caminho certo fosse encontrado. Esse posicionamento é um pouco grosseiro, mas completamente adequado para ouvir música.
Ainda hoje, muitas unidades de CD de computador não podem posicionar a lente com precisão e sincronizar completamente o circuito de decodificação, de modo que a leitura das amostras de áudio comece na posição exata. É por isso que muitos programas de cópia de CD possuem um modo de "paranóia", onde fazem leituras sobrepostas e comparam os resultados para ajustar esse "tremor". Como parte do fluxo de áudio, o subcanal também está sujeito a instabilidade, e é por isso que você obtém arquivos de subcanais diferentes quando copia uma unidade de CD que não pode ser posicionada com precisão.
Quando a especificação CD de dados (CD-ROM) foi desenvolvida para estender a especificação CD-DA, a importância de endereçar e ler com precisão os dados foi reconhecida; portanto, o quadro de áudio de 2352 bytes foi subdividido em 12 bytes de sincronização e 4 bytes de cabeçalho (por o endereço do setor), deixando os 2336 bytes restantes para dados e um nível adicional de correção de erros. Usando esse esquema, os setores podem ser endereçados exatamente sem precisar confiar apenas nas informações do canal Q. Portanto, o efeito de tremulação não se aplica, você sempre obtém os mesmos dados quando despeja um CD-ROM e nenhuma inteligência adicional no despejo é necessária.
Edite com mais detalhes:
De acordo com o Ecma-130 , os dados são embaralhados em estágios: 24 bytes compõem um quadro F1 , os bytes de 106 desses quadros são distribuídos em 106 quadros F2 , que obtêm 8 bytes extras de correção de erros. Esses quadros, por sua vez, recebem um byte extra ("byte de controle") para transformá-los em quadros F3 . O byte extra contém as informações do sub-canal (um sub-canal para cada posição de bit). Um grupo de 98 quadros F3 é chamado de seção , e os 98 bytes de controle associados contêm dois bytes de sincronização e 96 bytes de dados reais do subcanal. Além disso, o subcanal Q possui 16 bits de correção de erro CRC nesses 96 bits.
A idéia por trás disso é distribuir dados na superfície do disco de maneira que arranhões, sujeira etc. não afetem muitos bits contínuos, portanto a correção de erros pode recuperar os dados perdidos, desde que os arranhões não sejam muito grande.
Como conseqüência, o hardware da unidade de CD precisa ler uma seção completa após reposicionar a lente para descobrir onde ela está no fluxo de dados. A decodificação dos vários estágios é feita pelo hardware, que precisa se sincronizar com os 2 bytes de sincronização no fluxo de controle-byte. Todos os modelos de unidades de CD precisam de uma quantidade de tempo diferente para sincronizar em comparação com outros modelos (você pode testar isso lendo em duas unidades diferentes, se as tiver), dependendo de como o hardware é implementado. Além disso, muitos modelos nem sempre levam exatamente o mesmo tempo para sincronizar, para que possam iniciar um pouco mais cedo ou mais tarde e gerar os dados decodificados nem sempre no mesmo byte.
Portanto, quando o programa de READ CD
extração emite um comando (0xBE), ele fornece um comprimento de transferência e um endereço inicial (ou melhor, hora do canal Q). O drive posiciona a lente, decodifica os quadros, extrai o canal Q, compara o tempo e, quando encontra o tempo correto, começa a transferir. Essa transferência nem sempre começa no mesmo byte explicado acima, portanto, o resultado de vários READ CD
comandos pode ser alternado entre si. É por isso que você vê diferentes arquivos de sub-canais do seu estripador.
Dependendo do hardware e das circunstâncias em que a lente é ajustada, é mais ou menos aleatório se a transferência iniciar algumas amostras mais cedo ou mais tarde. Portanto, o único padrão que você verá nos resultados é que os turnos são múltiplos da duração da transferência.
Alguns modelos de unidades têm hardware preciso, que sempre inicia a transferência ao mesmo tempo. O padrão define um pouco na página 0x2a do modo ("Recursos de CD / DVD e página de status mecânico") que indica se esse é o caso, mas a experiência do mundo real mostra que algumas unidades que afirmam ser exatas não são de fato. (No Linux, você pode usar sg_modes
o sg3-utiles
pacote para ler as páginas de modo, não sei qual ferramenta usar no Windows).