summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-04-13 16:23:59 +0800
committersakumisu <[email protected]>2022-04-13 16:24:09 +0800
commit81bc7dd63a70fa5ca061340d91aae662eb346b1e (patch)
tree020b328ce332242e6dd4e3703a3d4ee8c40d49b1
parente2c401cebf8976f9400d62b9e6241ce95592e2d1 (diff)
disable sampling rate which outweigh 48k
-rw-r--r--class/audio/usbd_audio.c24
-rw-r--r--demo/audio_v2_mic_dualchan_template.c6
-rw-r--r--demo/audio_v2_mic_speaker_multichan_template.c17
-rw-r--r--demo/audio_v2_speaker_dualchan_template.c6
4 files changed, 28 insertions, 25 deletions
diff --git a/class/audio/usbd_audio.c b/class/audio/usbd_audio.c
index df177220..1d1d0c8e 100644
--- a/class/audio/usbd_audio.c
+++ b/class/audio/usbd_audio.c
@@ -65,7 +65,7 @@ struct audio_entity_info {
static usb_slist_t usbd_audio_entity_info_head = USB_SLIST_OBJECT_INIT(usbd_audio_entity_info_head);
const uint8_t default_sampling_freq_table[] = {
- AUDIO_SAMPLE_FREQ_NUM(8),
+ AUDIO_SAMPLE_FREQ_NUM(5),
AUDIO_SAMPLE_FREQ_4B(8000),
AUDIO_SAMPLE_FREQ_4B(8000),
AUDIO_SAMPLE_FREQ_4B(0x00),
@@ -75,21 +75,21 @@ const uint8_t default_sampling_freq_table[] = {
AUDIO_SAMPLE_FREQ_4B(32000),
AUDIO_SAMPLE_FREQ_4B(32000),
AUDIO_SAMPLE_FREQ_4B(0x00),
- AUDIO_SAMPLE_FREQ_4B(48000),
- AUDIO_SAMPLE_FREQ_4B(48000),
- AUDIO_SAMPLE_FREQ_4B(0x00),
- AUDIO_SAMPLE_FREQ_4B(96000),
- AUDIO_SAMPLE_FREQ_4B(96000),
- AUDIO_SAMPLE_FREQ_4B(0x00),
AUDIO_SAMPLE_FREQ_4B(44100),
AUDIO_SAMPLE_FREQ_4B(44100),
AUDIO_SAMPLE_FREQ_4B(0x00),
- AUDIO_SAMPLE_FREQ_4B(88200),
- AUDIO_SAMPLE_FREQ_4B(88200),
- AUDIO_SAMPLE_FREQ_4B(0x00),
- AUDIO_SAMPLE_FREQ_4B(192000),
- AUDIO_SAMPLE_FREQ_4B(192000),
+ AUDIO_SAMPLE_FREQ_4B(48000),
+ AUDIO_SAMPLE_FREQ_4B(48000),
AUDIO_SAMPLE_FREQ_4B(0x00),
+ // AUDIO_SAMPLE_FREQ_4B(88200),
+ // AUDIO_SAMPLE_FREQ_4B(88200),
+ // AUDIO_SAMPLE_FREQ_4B(0x00),
+ // AUDIO_SAMPLE_FREQ_4B(96000),
+ // AUDIO_SAMPLE_FREQ_4B(96000),
+ // AUDIO_SAMPLE_FREQ_4B(0x00),
+ // AUDIO_SAMPLE_FREQ_4B(192000),
+ // AUDIO_SAMPLE_FREQ_4B(192000),
+ // AUDIO_SAMPLE_FREQ_4B(0x00),
};
#if CONFIG_USBDEV_AUDIO_VERSION < 0x0200
diff --git a/demo/audio_v2_mic_dualchan_template.c b/demo/audio_v2_mic_dualchan_template.c
index 4abe8c7b..e6f80804 100644
--- a/demo/audio_v2_mic_dualchan_template.c
+++ b/demo/audio_v2_mic_dualchan_template.c
@@ -14,14 +14,14 @@
#define AUDIO_IN_EP 0x01
-#define AUDIO_FREQ 96000
+#define AUDIO_FREQ 48000
#define HALF_WORD_BYTES 2 //2 half word (one channel)
#define SAMPLE_BITS 16 //16 bit per channel
-#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_FREQ * 2 * HALF_WORD_BYTES) / 1000))
-
#define CHANNEL_NUM 2
+#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_FREQ * HALF_WORD_BYTES * CHANNEL_NUM) / 1000))
+
#define BMCONTROL (AUDIO_V2_FU_CONTROL_MUTE | AUDIO_V2_FU_CONTROL_VOLUME)
#define USB_AUDIO_CONFIG_DESC_SIZ (9 + \
diff --git a/demo/audio_v2_mic_speaker_multichan_template.c b/demo/audio_v2_mic_speaker_multichan_template.c
index 382a2ba6..fd71452c 100644
--- a/demo/audio_v2_mic_speaker_multichan_template.c
+++ b/demo/audio_v2_mic_speaker_multichan_template.c
@@ -15,25 +15,26 @@
#define AUDIO_OUT_EP 0x02
#define AUDIO_IN_EP 0x81
-#define AUDIO_FREQ 96000
+#define AUDIO_FREQ 48000
#define HALF_WORD_BYTES 2 //2 half word (one channel)
#define SAMPLE_BITS 16 //16 bit per channel
-#define AUDIO_OUT_PACKET ((uint32_t)((AUDIO_FREQ * 2 * HALF_WORD_BYTES) / 1000))
-#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_FREQ * 2 * HALF_WORD_BYTES) / 1000))
-
#if 1
#define OUT_CHANNEL_NUM 2
#define IN_CHANNEL_NUM 2
-#define INPUT_CTRL DBVAL(BMCONTROL),DBVAL(BMCONTROL)
+#define INPUT_CTRL DBVAL(BMCONTROL), DBVAL(BMCONTROL)
#define INPUT_CH_ENABLE 0x00000003
#else
#define OUT_CHANNEL_NUM 2
#define IN_CHANNEL_NUM 6
-#define INPUT_CTRL DBVAL(BMCONTROL),DBVAL(BMCONTROL),DBVAL(BMCONTROL),DBVAL(BMCONTROL),DBVAL(BMCONTROL),DBVAL(BMCONTROL)
+#define INPUT_CTRL DBVAL(BMCONTROL), DBVAL(BMCONTROL), DBVAL(BMCONTROL), DBVAL(BMCONTROL), DBVAL(BMCONTROL), DBVAL(BMCONTROL)
#define INPUT_CH_ENABLE 0x0000001F
#endif
+/* AudioFreq * DataSize (2 bytes) * NumChannels */
+#define AUDIO_OUT_PACKET ((uint32_t)((AUDIO_FREQ * HALF_WORD_BYTES * OUT_CHANNEL_NUM) / 1000))
+#define AUDIO_IN_PACKET ((uint32_t)((AUDIO_FREQ * HALF_WORD_BYTES * IN_CHANNEL_NUM) / 1000))
+
#define BMCONTROL (AUDIO_V2_FU_CONTROL_MUTE | AUDIO_V2_FU_CONTROL_VOLUME)
#define USB_AUDIO_CONFIG_DESC_SIZ (9 + \
@@ -173,11 +174,13 @@ void usbd_audio_close(uint8_t intf)
void usbd_audio_set_sampling_freq(uint8_t entity_id, uint8_t ep_ch, uint32_t sampling_freq)
{
- uint16_t packet_size = ((sampling_freq * 2 * 2) / 1000);
+ uint16_t packet_size = 0;
if (entity_id == 1) {
+ packet_size = ((sampling_freq * 2 * OUT_CHANNEL_NUM) / 1000);
audio_descriptor[18 + USB_AUDIO_CONFIG_DESC_SIZ - AUDIO_V2_AS_DESCRIPTOR_INIT_LEN - 11] = packet_size;
audio_descriptor[18 + USB_AUDIO_CONFIG_DESC_SIZ - AUDIO_V2_AS_DESCRIPTOR_INIT_LEN - 10] = packet_size >> 8;
} else if (entity_id == 5) {
+ packet_size = ((sampling_freq * 2 * IN_CHANNEL_NUM) / 1000);
audio_descriptor[18 + USB_AUDIO_CONFIG_DESC_SIZ - 11] = packet_size;
audio_descriptor[18 + USB_AUDIO_CONFIG_DESC_SIZ - 10] = packet_size >> 8;
}
diff --git a/demo/audio_v2_speaker_dualchan_template.c b/demo/audio_v2_speaker_dualchan_template.c
index 1b35690f..3b4b8c35 100644
--- a/demo/audio_v2_speaker_dualchan_template.c
+++ b/demo/audio_v2_speaker_dualchan_template.c
@@ -14,14 +14,14 @@
#define AUDIO_OUT_EP 0x01
-#define AUDIO_FREQ 96000
+#define AUDIO_FREQ 48000
#define HALF_WORD_BYTES 2 //2 half word (one channel)
#define SAMPLE_BITS 16 //16 bit per channel
-#define AUDIO_OUT_PACKET ((uint32_t)((AUDIO_FREQ * 2 * HALF_WORD_BYTES) / 1000))
-
#define CHANNEL_NUM 2
+#define AUDIO_OUT_PACKET ((uint32_t)((AUDIO_FREQ * HALF_WORD_BYTES * CHANNEL_NUM) / 1000))
+
#define BMCONTROL (AUDIO_V2_FU_CONTROL_MUTE | AUDIO_V2_FU_CONTROL_VOLUME)
#define USB_AUDIO_CONFIG_DESC_SIZ (9 + \