2017-01-17 3 views
9

USBオーディオクラス2.0で複数のビットレート/サンプルレートのサポートを追加する方法が少し混乱しています。 USB Audio Class 1.0(複数のレートを追加するオプションがあります)と比較して、USB Audio Class 2.0はそのオプションを提供していません。その記述子をどのように変更すればよいですか?ここに私のオーディオフォーマット記述子だ私は、あなたがより多くの代替設定を使用することをどこかで読んしかし、私はそれが役立つだろうかわからない...USBオーディオクラス2.0 - 複数のビットレート/サンプルレートをサポートする方法

audioformat.bLength     = sizeof(usb_audio_format_type_1_desc_t) 
audioformat.bDescriptorType   = 0x01 
audioformat.bDescriptorSubtype  = 0x02 
audioformat.bFormatType    = 0x01 
audioformat.bSubSlotSize   = 3 
audioformat.bBitResolution   = 24 

ありがとう!

答えて

5

それでわかりましたので、賞金は本当に問題ではありません。

複数のビットレートを行うには:対応するオーディオデータフォーマット記述子/ etcで代替設定を行い、異なるビットレートを順番にサポートします。交互設定0(エンドポイントなし)、代替設定1(すべてのストリーム/クラス記述子、フォーマット記述子が16ビットをサポート)、代替設定2(すべてのストリーム/クラス記述子、フォーマット記述子が24ビットをサポート)

複数のサンプルレートを実行するには:USBオーディオクラス2.0の文書に従って、CUR、MIN、MAXの形式でホストに制御を渡す必要があります。例えば

:参照として

#define USB_AUDIO_SAMP_RATE_RANGE   { CPU16_TO_LE8_ARRAY(2), \ 
               CPU32_TO_LE8_ARRAY(SAMPLE_RATE_44_1), \ 
               CPU32_TO_LE8_ARRAY(SAMPLE_RATE_44_1), \ 
               CPU32_TO_LE8_ARRAY(0), \ 
               CPU32_TO_LE8_ARRAY(SAMPLE_RATE_48_0), \ 
               CPU32_TO_LE8_ARRAY(SAMPLE_RATE_48_0), \ 
               CPU32_TO_LE8_ARRAY(0)} 

、LE8は下位エンディアン8ビットと定義し、下部エンディアンでフォーマット8ビット整数の配列に16または32ビットの整数に変換されます。

1

USBオーディオ2.0(UAC2)にはいくつかのクロックエンティティがあります。しかし、USB Audio 1.0(UAC1)はこれを持っていません。 UAC1は、さまざまなサンプルレートを直接提供しています。

しかしUAC2では、Clock Entitiesを使用する必要があります。クロックエンティティに関する情報を提供する特定の記述子がいくつかあります。

+1

ガネーシュありがとう、私はこの質問をした後、結局UAC2ヶ月についてこの部分を学び/理解するようになりました。 –

関連する問題