2017-01-17 22 views
9

Jestem trochę zdezorientowany, jak dodać obsługę wielu bitów/częstotliwości próbkowania w USB Audio Class 2.0. W porównaniu z USB Audio Class 1.0 (który daje możliwość dodawania wielu szybkości itp.), USB Audio Class 2.0 nie daje tej opcji. Jak mogę zmienić moje deskryptory? Czytałem gdzieś, że używasz więcej alternatywne ustawienia, ale nie wiem, jak to pomoże ...USB Audio Class 2.0 - Jak obsługiwać wiele bitów/częstotliwości próbkowania

Oto mój format audio Eurovoc:

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 

Dzięki!

Odpowiedz

5

Tak, więc wymyśliłem to, a zatem nagroda nie ma znaczenia.

Aby wykonać wiele bitów, należy: mieć alternatywne ustawienia z odpowiednimi deskryptorami formatu danych audio/itp. W celu obsługi różnych przepływności w kolejności; na przykład: Alternate Setting 0 (bez punktów końcowych), Alternate Setting 1 (ze wszystkimi deskryptorami strumienia/klasy, deskryptor formatu obsługuje 16 bitów), Alternate Setting 2 (ze wszystkimi deskryptorami strumienia/klasy, deskryptor formatu obsługuje 24 bity).

Aby wykonać wiele próbnych szybkości: Należy postępować zgodnie z dokumentacją USB Audio Class 2.0 z formatem CUR, MIN i MAX i przekazać sterowanie hostowi.

Na przykład

#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)} 

jako odniesieniem LE8 jest niższa Endian 8 bitów i wyznacza się konwersji 16, 32 bitową liczbę całkowitą w tablicy 8 bitowych liczb sformatowanych w dolnej endian.

1

Istnieje kilka elementów zegara w USB Audio 2.0 (UAC2). Ale USB Audio 1.0 (UAC1) go nie ma. UAC1 bezpośrednio dostarcza różne stawki próbek, o które możemy poprosić.

Jednak w UAC2 musimy używać jednostek zegara. Istnieje pewien określony deskryptor, który podaje informacje o jednostkach zegara.

+1

Dzięki Ganesh, w końcu przyjechałem, aby dowiedzieć się/zrozumieć tę część dotyczącą UAC2 miesięcy po tym, jak zadałem to pytanie. –

Powiązane problemy