Por que você não pode simplesmente “dd” CD Audio como um CD de dados comum?

4

Meu amigo tentou exportar o dispositivo de cdrom pela rede usando nbd server, mas notamos que, embora ele funcione para CDs de dados, os CDs de áudio não se comportam como os discos de dados comuns. E eu não estou falando sobre presença ou falta de sistema de arquivos, mas sobre o acesso ao nível de bloco bruto.

Embora eu entenda que os CDs de áudio não podem ser realmente interpretados no nível dos arquivos, não podem ser realmente mount , eu entendo que eles contêm muitas informações adicionais que são realmente específicas para o áudio e eu entendo que eles realmente não têm CRC da mesma forma que os discos de dados fazem assim que o processo de leitura de dados é diferente, eu ainda não entendi porque eles não podem ser lidos como um dispositivo de bloco comum de /dev/sr0 ou %código%. O que há de tão especial no CDDA que eles não podem ser apenas lidos no nível de bloco pelo software comum?

Quero dizer que no fim das contas é apenas um fluxo de bytes - se não for como um dispositivo de bloco, então por que /dev/cdrom / dd / cat não pode usá-los como qualquer outro dispositivo de bloco / caractere? Existe alguma razão técnica real ou é só porque ninguém encontrou um caso de uso racional para implementar tal acesso ao meio CDDA no Linux?

    
por Lapsio 11.03.2018 / 00:43

2 respostas

4

CDs de áudio (também chamados de CD-DA, especificados no Livro Vermelho) são o formato mais antigo do CD. O formato é inspirado no registro de áudio, então você tem uma trilha em espiral com dados contínuos, e intercalados com esses dados está a informação de tempo. Não há cabeçalhos de bloco adequados. A menor unidade de informação é um quadro, ou 1/75 segundo, que contém 2352 bytes de dados (para 2 canais, 2 amostras / bytes, 44,1 kHz).

Note que este não é um poder de dois, e nem sequer divide por 256 ou 512. Então, tratar quadros de áudio como blocos de dados é um pouco estranho. Além disso, as primeiras unidades de CD nem sempre podem ser posicionadas corretamente, portanto, se você disser "vá ler o quadro em 12 minutos e 4 segundos e 5 1/75 segundos", às vezes começará alguns bytes antes ou depois. É por isso que existem tantos programas para ler CDs de áudio "corretamente" (como cdparanoia ).

Agora compare isso com um CD de Dados (também chamado de CD-ROM, especificado no Livro Amarelo): Eles pegaram os 2352 bytes de um quadro de áudio e usaram alguns deles para informações de cabeçalho para identificar um bloco. Eles também adicionaram outro nível de correção de erros, então os 2352 bytes de um quadro de áudio se tornam 2048 bytes em um quadro de dados.

Agora temos um poder de dois como tamanho de bloco, temos cabeçalhos adequados e podemos fazer buscas exatas, e podemos realmente fingir que isso é apenas um dispositivo de bloco.

Portanto, esta é a razão pela qual, por padrão, um CD de áudio não é tratado como um dispositivo de bloco, enquanto um CD de dados é.

Dito isto, não há razão para não disponibilizar as informações do CD de Áudio no sistema de arquivos, digamos, como um arquivo WAV para cada faixa. E, de fato, existem alguns projetos de código aberto, como CDfs , ou outros que não consigo lembrar direito agora que usam o FUSE, que representam os dados do CD dessa maneira. No entanto, você ainda está preso ao problema de que não há correção de jitter etc., então é melhor usar algo como cdparanoia .

E o pessoal do kernel também achou que era uma idéia ruim .

    
por 11.03.2018 / 16:06
1

O CDDA para CD de áudio foi criado antes que alguém criasse um sistema de arquivos para CD-ROM (primeiro o High Sierra e depois o ISO 9660). Antes disso, um CD simplesmente não se comportaria como um disco de dados comum. E depois disso, os CDs de áudio ainda precisavam ser retrocompatíveis com os antigos CD players, então eles não poderiam mudá-lo.

    
por 11.03.2018 / 01:52