ioctl CDROMPLAYMSFコマンドの特定の機能は何ですか?

ioctl CDROMPLAYMSFコマンドの特定の機能は何ですか?

私は(他のユースケースの中で)音楽CDを再生するために使用されるUSB 2.0 CD / DVDドライブを持っています。ただし、ドライブが CDROMPLAYMSF コマンドを無視しているように見えます。

ホストマシンはRaspberry Pi 3Bで、現在のバージョンはRaspbianです。私はこれをlibcdaudioオーディオCDの再生に使用しましたが、CDROMPLAYMSFを含む必要なioctlコマンドが実行されました。

修正する:cd-drive要求に応じて、次のユーティリティに示すようにマイドライブの仕様を提供できます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

答え1

もともとCD ROMドライブ(IDE時代)にはマザーボードへのアナログオーディオ接続がありました。その後、SCSIコマンドPLAYSTOPそのSCAN変形は、スタンドアロンCDプレーヤーのように、このアナログ出力からオーディオCDを再生します。

ioctl はCDROMPLAYMSFこれらの SCSI コマンドのいずれかを実行します。つまり、PLAY AUDIO MSFMSFはCDの位置(分、秒、フレーム単位)を定義します。

内蔵CD ROMは、外部USB CD ROMと同様に、この機能を失ってから古くなっています(マザーボードにはアナログオーディオ接続はありません)。もちろん、CDプレーヤーはこのコマンドを無視します。

IIRClibcdaudioライブラリには、CDからデジタルデータを読み取る機能もあります。 CDを再生するには、それを使用してPulseaudioなどにデータを渡す必要があります。

同様の既製のコマンドラインツールを使用することもできますmplayer cdda://

答え2

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.

また、私の答えが役に立つかもしれません。カーネルソースコードからすべてのioctl定義を取得します。

あなたの質問に対する答えを同じ方法で見つけました。grepコマンドを少し変更するだけです。

grep -r 'CDROMPLAYMSF' * | vim -

編集する

~からCompact_Disc_Digital_Audio#データ構造:

オーディオCDのオーディオデータストリームは連続的ですが、3つの部分で構成されています。メインセクションは、再生可能なオーディオトラックに細分化されたプログラム領域です。このセクションの前にはインポートトラックが続き、その後にはエクスポートトラックが続きます。インポートおよびエクスポートトラックは無音オーディオのみをエンコードしますが、3つの部分すべてがサブコードストリームを含みます。

リードインサブコードには、プログラム領域とリードイン領域のトラックの開始位置のインデックスを提供するディスク目次(TOC)のコピーが含まれています。トラック位置は、MSF形式(フレームと呼ばれる分、秒、分数秒)のプログラム領域の先頭に基づいて絶対タイムコードとして参照されます。各タイムコードフレームの長さは75秒で、これは98チャンネルのデータフレームブロック、最終的には588ペアの左右のオーディオサンプルブロックに対応します。サブチャネルデータに含まれるタイムコードを使用すると、読み取りデバイスはTOCのタイムコードに対応するディスク領域を見つけることができます。ディスクのディレクトリは、ハードドライブのパーティションテーブルに似ています。

さらに、Compact_Disc_Digital_Audio#Frames_and_timecode_frames:

RedbookオーディオCDでは、データは次のように生成されます。国境のない医師会スキーム、タイムコードは、分、秒、および他の種類のフレーム(mm:ss:ff)で表されます。ここで、1フレームはオーディオの1/75秒に対応します(左と右のサンプル588ペア)。このタイムコードフレームは、上記の33バイトチャンネルデータフレームとは異なり、読み出しレーザの時間表示と位置決めに使用されます。CDオーディオを編集して抽出するとき、このタイムコードフレームはオーディオCDからアドレス指定できる最小の時間間隔であるため、トラック境界はこれらのフレーム境界でのみ発生します。各構造には98のデータフレームチャンネルが含まれており、総音楽容量は98×24 = 2,352バイトです。 CDは毎秒75フレーム(またはセクタ)で再生されます。これは毎秒44,100サンプルまたは176,400バイトです。

1990年代のCD-ROMおよび関連デジタルオーディオ抽出(DAE)技術では、各タイムコードフレームを指すために「セクタ」という用語が導入されました。各セクタはゼロから始まる連続した整数として識別され、トラックはセクタ境界に整列される。オーディオCDセクタは2,352バイトのデコードされたデータに対応します。レッドブックでは、セクターについて言及しておらず、MSFアドレス指定方式の「フレーム」に加えて、ディスクデータストリームの対応する部分を区別することもありません。

関連情報