【问题标题】:USB Audio Class 2.0 - How to support multiple bit rates/sample ratesUSB Audio Class 2.0 - 如何支持多种比特率/采样率
【发布时间】:2017-01-17 17:03:57
【问题描述】:

我有点困惑如何在 USB 音频类 2.0 中添加对多比特率/采样率的支持。与 USB 音频类 1.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

谢谢!

【问题讨论】:

    标签: audio usb usb-descriptor


    【解决方案1】:

    是的,所以我想通了,因此赏金并不重要。

    做多比特率:与其对应的音频数据格式描述符/等进行交替设置,以支持不同的比特率;例如:Alternate Setting 0(无端点),Alternate Setting 1(所有流/类描述符,格式描述符支持 16 位),Alternate Setting 2(所有流/类描述符,格式描述符支持 24 位)。

    要执行多个采样率:您必须遵循 USB Audio Class 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 位,定义是将 16 位或 32 位整数转换为以低端格式格式化的 8 位整数数组。

    【讨论】:

      【解决方案2】:

      USB 音频 2.0 (UAC2) 中有一些时钟实体。但是 USB 音频 1.0 (UAC1) 没有。 UAC1 直接提供我们可以要求的各种 Samples 率。

      但在 UAC2 中,我们必须使用时钟实体。有一些特定的描述符给出了有关时钟实体的信息。

      【讨论】:

      • 感谢 Ganesh,在我提出这个问题 2 个月后,我终于开始学习/理解这部分关于 UAC 的内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多