AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 523773
Accepted
Neppomuk
Neppomuk
Asked: 2019-06-09 13:21:49 +0800 CST2019-06-09 13:21:49 +0800 CST 2019-06-09 13:21:49 +0800 CST

O que o comando ioctl CDROMPLAYMSF faz exatamente?

  • 772

Eu tenho uma unidade de CD/DVD USB 2.0, que é (entre outros casos de uso) usada para reproduzir CDs de música. Mas: A unidade parece ignorar os comandos CDROMPLAYMSF.

O host é um Raspberry Pi 3B com a versão atual do Raspbian. Estou usando libcdaudiopara reprodução de CD de áudio, que por sua vez emite os ioctlcomandos necessários, incluindo CDROMPLAYMSF.

ATUALIZAÇÃO: Mediante solicitação, posso fornecer as especificações da minha unidade, conforme cuspido pelo cd-driveutilitário de cdio:

CD-ROM drive supports MMC 3

                       Drive: /dev/cdrom
Vendor                      : MATSHITA
Model                       : CD-RW  CW-8124  
Revision                    : DA0D

Hardware                                  : CD-ROM or DVD
Can eject                                 : Yes
Can close tray                            : Yes
Can disable manual eject                  : Yes
Can select juke-box disc                  : No

Can set drive speed                       : No
Can read multiple sessions (e.g. PhotoCD) : Yes
Can hard reset device                     : Yes

Reading....
  Can read Mode 2 Form 1                  : Yes
  Can read Mode 2 Form 2                  : Yes
  Can read (S)VCD (i.e. Mode 2 Form 1/2)  : Yes
  Can read C2 Errors                      : Yes
  Can read IRSC                           : Yes
  Can read Media Channel Number (or UPC)  : Yes
  Can play audio                          : Yes
  Can read CD-DA                          : Yes
  Can read CD-R                           : Yes
  Can read CD-RW                          : Yes
  Can read DVD-ROM                        : Yes

Writing....
  Can write CD-RW                         : Yes
  Can write DVD-R                         : No
  Can write DVD-RAM                       : No
  Can write DVD-RW                        : No
  Can write DVD+RW                        : No
audio-cd ioctl
  • 2 2 respostas
  • 364 Views

2 respostas

  • Voted
  1. Best Answer
    dirkt
    2019-06-12T11:50:36+08:002019-06-12T11:50:36+08:00

    Originalmente, as unidades de CD-ROM (na era IDE) tinham uma conexão de áudio analógica com a placa-mãe. Os comandos SCSI PLAY, STOP, SCANe suas variantes reproduziriam CDs de áudio nessa saída analógica exatamente como um CD player autônomo.

    O CDROMPLAYMSFioctl emite um desses comandos SCSI, ou seja, PLAY AUDIO MSF. MSF define uma posição no CD (em Minutos, Segundos, Quadros).

    Os CD-ROMs internos perderam esse recurso há muito tempo, assim como os CD-ROMs USB externos (não há conexão de áudio analógico com a placa-mãe). Portanto, seu CD player ignora esse comando com razão.

    IIRC a libcdaudiobiblioteca também possui funções para ler os dados digitais do CD. Você precisa usá-los e, em seguida, passar os dados para o Pulseaudio etc. para reproduzir o CD.

    Você também pode usar ferramentas de linha de comando prontas mplayer cdda://para isso.

    • 3
  2. MiniMax
    2019-06-09T15:23:32+08:002019-06-09T15:23:32+08:00

    Da fonte do kernel Linux :

    CDROMPLAYMSF            Play Audio MSF (struct cdrom_msf)
    
        usage:
    
          struct cdrom_msf msf;
          ioctl(fd, CDROMPLAYMSF, &msf);
    
        inputs:
          cdrom_msf structure, describing a segment of music to play
    
        outputs:    none
    
        error return:
          ENOSYS    cd drive not audio-capable.
    
        notes:
          MSF stands for minutes-seconds-frames
          LBA stands for logical block address
    
          Segment is described as start and end times, where each time
          is described as minutes:seconds:frames.  A frame is 1/75 of
          a second.
    

    Além disso, esta minha resposta pode ser útil para você: Obtenha todas as definições ioctl da fonte do kernel.

    Eu encontrei a resposta para sua pergunta da mesma maneira, apenas mudei grepum pouco o comando:

    grep -r 'CDROMPLAYMSF' * | vim -
    

    EDITAR

    de Compact_Disc_Digital_Audio#Data_structure:

    O fluxo de dados de áudio em um CD de áudio é contínuo, mas tem três partes. A parte principal, que é dividida em faixas de áudio reproduzíveis, é a área do programa. Esta seção é precedida por uma faixa de entrada e seguida por uma faixa de saída. As faixas de entrada e saída codificam apenas áudio silencioso, mas todas as três seções contêm fluxos de dados de subcódigo.

    O subcódigo do lead-in contém cópias repetidas do índice do disco (TOC), que fornece um índice das posições iniciais das faixas na área do programa e no lead-out. As posições das trilhas são referenciadas por timecode absoluto, relativo ao início da área do programa, no formato MSF: minutos, segundos e segundos fracionários chamados quadros. Cada quadro de código de tempo é um septuagésimo quinto de segundo e corresponde a um bloco de 98 quadros de dados de canal - em última análise, um bloco de 588 pares de amostras de áudio esquerda e direita. O código de tempo contido nos dados do subcanal permite que o dispositivo de leitura localize a região do disco que corresponde ao código de tempo no TOC. O índice em discos é análogo à tabela de partição em discos rígidos.

    Além disso, de Compact_Disc_Digital_Audio#Frames_and_timecode_frames:

    Em um CD de áudio Red Book, os dados são endereçados usando o esquema MSF , com timecodes expressos em minutos, segundos e outro tipo de quadros (mm:ss:ff), onde um quadro corresponde a 1/75 de segundo de áudio: 588 pares de amostras da esquerda e da direita. Este quadro de código de tempo é distinto do quadro de dados de canal de 33 bytes descrito acima e é usado para exibição de tempo e posicionamento do laser de leitura. Ao editar e extrair áudio de CD, esse quadro de código de tempo é o menor intervalo de tempo endereçável para um CD de áudio; assim, os limites de trilha ocorrem apenas nesses limites de quadro.Cada uma dessas estruturas contém 98 quadros de dados de canal, totalizando 98 × 24 = 2.352 bytes de música. O CD é reproduzido a uma velocidade de 75 quadros (ou setores) por segundo, ou seja, 44.100 amostras ou 176.400 bytes por segundo.

    Na década de 1990, o CD-ROM e a tecnologia de extração de áudio digital (DAE) relacionada introduziram o termo setor para se referir a cada quadro de código de tempo, com cada setor sendo identificado por um número inteiro sequencial começando em zero e com faixas alinhadas nos limites do setor. Um setor de CD de áudio corresponde a 2.352 bytes de dados decodificados. O Livro Vermelho não se refere a setores, nem distingue as seções correspondentes do fluxo de dados do disco, exceto como "quadros" no esquema de endereçamento MSF.

    • 0

relate perguntas

  • Como evitar que o DTR seja aberto para cdc_acm?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve