diff options
| author | sakumisu <[email protected]> | 2026-08-25 21:32:46 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2026-08-25 21:32:46 +0800 |
| commit | 7743b4c41975ba2fffaa6ede87955b26ea2ec952 (patch) | |
| tree | 05860eb9688e23235bbc96fe66e0f25be26a5b62 | |
| parent | d5499949ef7c85b838c893a39590dd74cb12a1bb (diff) | |
update(class/audio/usbh_audio): expand audio samfreq num to 8 as default
Signed-off-by: sakumisu <[email protected]>
| -rw-r--r-- | class/audio/usb_audio.h | 6 | ||||
| -rw-r--r-- | class/audio/usbh_audio.c | 4 |
2 files changed, 7 insertions, 3 deletions
diff --git a/class/audio/usb_audio.h b/class/audio/usb_audio.h index 9c937e66..efb758ae 100644 --- a/class/audio/usb_audio.h +++ b/class/audio/usb_audio.h @@ -687,6 +687,10 @@ struct audio_cs_if_as_general_descriptor { #define AUDIO_SIZEOF_AS_GENERAL_DESC (7) +#ifndef CONFIG_USBHOST_AUDIO_MAX_SAMPLE_FREQ_NUM +#define CONFIG_USBHOST_AUDIO_MAX_SAMPLE_FREQ_NUM 8 +#endif + struct audio_cs_if_as_format_type_descriptor { uint8_t bLength; uint8_t bDescriptorType; @@ -696,7 +700,7 @@ struct audio_cs_if_as_format_type_descriptor { uint8_t bSubframeSize; uint8_t bBitResolution; uint8_t bSamFreqType; - uint8_t tSamFreq[3]; + uint8_t tSamFreq[3 * CONFIG_USBHOST_AUDIO_MAX_SAMPLE_FREQ_NUM]; } __PACKED; #define AUDIO_SIZEOF_FORMAT_TYPE_DESC(bSamFreqType) (8 + 3 * (bSamFreqType)) diff --git a/class/audio/usbh_audio.c b/class/audio/usbh_audio.c index ee0a3349..185e4f3e 100644 --- a/class/audio/usbh_audio.c +++ b/class/audio/usbh_audio.c @@ -694,12 +694,12 @@ static int usbh_audio_ctrl_connect(struct usbh_hubport *hport, uint8_t intf) case AUDIO_STREAMING_FORMAT_TYPE: { struct audio_cs_if_as_format_type_descriptor *desc = (struct audio_cs_if_as_format_type_descriptor *)p; - USB_ASSERT(desc->bSamFreqType == 1); + USB_ASSERT(desc->bSamFreqType <= CONFIG_USBHOST_AUDIO_MAX_SAMPLE_FREQ_NUM && desc->bSamFreqType > 0); USB_ASSERT(desc->bNrChannels <= CONFIG_USBHOST_AUDIO_MAX_CHANNELS); USB_ASSERT(cur_alt_setting < CONFIG_USBHOST_MAX_INTF_ALTSETTINGS); audio_class->as_msg_table[cur_iface - audio_class->ctrl_intf - 1].bNrChannels = desc->bNrChannels; - memcpy(&audio_class->as_msg_table[cur_iface - audio_class->ctrl_intf - 1].as_format[cur_alt_setting], desc, AUDIO_SIZEOF_FORMAT_TYPE_DESC(1)); + memcpy(&audio_class->as_msg_table[cur_iface - audio_class->ctrl_intf - 1].as_format[cur_alt_setting], desc, AUDIO_SIZEOF_FORMAT_TYPE_DESC(desc->bSamFreqType)); } break; default: break; |
