2020年1月5日日曜日

EZ-USB FX2LP を動かしてみる (35) windowsにaudio class 1.0デバイスとして認識させる(16/24/32bit)

EZUSBをaudio class 1.0 USBデバイスとしてwindowsに認識させたい.

しかし第34話のラストシーンでは、再生デバイス→プロパティを見ると、残念ながら16bitしか選択肢が表示されず、24bitや32bitが表示されませんでした.(windows7にて)
←前回の状況

そこで今回はdescriptorを見直しました.書き換えたdescriptorファイルをこちらにupしておきました.動作保証なんかせんぞ
↓16bit/24bitが表示されるようになりました.32bitが表示されないのはわたしのwin7が何かの病気に罹っているせいだと思いひとまずスルーします.他のDACやDCCでも32bitが表示されないんでね.32bitを見たことがない.
←今回の状況

-------
16/24bitが表示されるようになるために、descriptorの重要なところを説明します.

【VID/PID】
3つ記述して2つをコメントアウトしてあります.
1つ目はFX2LPのVID/PIDなのでDACじゃないので使えないのは当然.
2つ目はTI PCM2704のVID/PID.動作がどことなく変なのでやめとく.
3つ目はYAMAHAの何かのVID/PID.C:\Windows\inf\wdma_usb.inf内に登録されているので拝借しました.
;;Cypress FX2LP
;      dw   0B404H     ;; Vendor ID
;      dw   0410H      ;; Product ID (Sample Device)
;      dw   0000H      ;; Product version ID
;;TI 2704
;      dw   0BB08H     ;; Vendor ID -- "Texas Instruments Japan"
;      dw   0427H      ;; Product ID (0x2704 for PCM2704)
;      dw   0001H      ;; Product version ID / bcdDevice 0x0100
;;0499&PID_1001 yamaha?
      dw   9949H      ;; Vendor ID 0499
      dw   0130H      ;; Product ID 3001
      dw   0000H

【interface descriptor】
AlternateSetting1、2,3を設ける.それぞれが16bit、24bit、32bitに対応します.
;; Audio Stream I/F Alt. Setting 1
;; 16bit
      db   09H  ;; bLength
      db   04H  ;; bDescriptorType
      db   01H  ;; bInterfaceNumber (Interface #1)
      db   1    ;; bAlternateSetting

;; Audio Stream I/F Alt. Setting 2
;; 24bit
      db   09H  ;; bLength
      db   04H  ;; bDescriptorType
      db   01H  ;; bInterfaceNumber (Interface #1)
      db   2    ;; bAlternateSetting

;; Audio Stream I/F Alt. Setting 3
;; 32bit
      db   09H  ;; bLength
      db   04H  ;; bDescriptorType
      db   01H  ;; bInterfaceNumber (Interface #1)
      db   3    ;; bAlternateSetting

【Audio Streaming Format Type Descriptor】
AlternateSetting1、2,3の配下に、24bit/192kHzなどを記述する.
;; 16bit
      db   2  ;; bSubframeSize
      db   16   ;; bBitResolution   ;; 16bit
      db   05H  ;; bSamFreqType
      db   00,7DH,00    ;; tSamFreq[1]  0x007D00 (32000 Hz)
      db   44H,0ACh,00  ;; tSamFreq[2]  0x00AC44 (44100 Hz)
      db   80h,0BBh,00  ;; tSamFreq[3]  0x00BB80 (48000 Hz)
      db   00h,077h,01h ;; tSamFreq[4]  0x017700 (96000 Hz)
      db   00h,0EEh,02h ;; tSamFreq[5]  0x02EE00 (192000 Hz)
;; 24bit
      db   3  ;; bSubframeSize
      db   24   ;; bBitResolution   ;; 24bit
;; 32bit
      db   4  ;; bSubframeSize
      db   32   ;; bBitResolution   ;; 32bit
2-16bit、3-24bit、4-32bitという対応関係がある.これは2BYTE-16bit、3BYTE-24bit、4BYTE-32bitの関係である.4BYTE-24bitにするとwindowsデバドラに却下されるみたい.

ここは重要かなと思ったところは以上です.

次はEndPointが動くようにします.

かしこ

→INDEXページへ

0 件のコメント:

コメントを投稿