Skip to content

Commit 5c0ba4b

Browse files
committed
Add rate mapping
1 parent c4083a5 commit 5c0ba4b

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

virtio-snd.c

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,24 @@ enum {
8181
VIRTIO_SND_PCM_RATE_384000, /* 384000 Hz */
8282
};
8383

84+
/* supported PCM frames rates mapping */
85+
int pcm_rate_tbl[] = {
86+
[VIRTIO_SND_PCM_RATE_5512] = 5512,
87+
[VIRTIO_SND_PCM_RATE_8000] = 8000,
88+
[VIRTIO_SND_PCM_RATE_11025] = 11025,
89+
[VIRTIO_SND_PCM_RATE_16000] = 16000,
90+
[VIRTIO_SND_PCM_RATE_22050] = 22050,
91+
[VIRTIO_SND_PCM_RATE_32000] = 32000,
92+
[VIRTIO_SND_PCM_RATE_44100] = 44100,
93+
[VIRTIO_SND_PCM_RATE_48000] = 48000,
94+
[VIRTIO_SND_PCM_RATE_64000] = 64000,
95+
[VIRTIO_SND_PCM_RATE_88200] = 88200,
96+
[VIRTIO_SND_PCM_RATE_96000] = 96000,
97+
[VIRTIO_SND_PCM_RATE_176400] = 176400,
98+
[VIRTIO_SND_PCM_RATE_192000] = 192000,
99+
[VIRTIO_SND_PCM_RATE_384000] = 384000,
100+
};
101+
84102
/* supported PCM stream features */
85103
enum {
86104
VIRTIO_SND_PCM_F_SHMEM_HOST = 0,
@@ -449,10 +467,10 @@ static void virtio_snd_read_pcm_prepare(const virtio_snd_pcm_hdr_t *query,
449467
// pthread_mutex_unlock(&virtio_snd_mutex);
450468
vsnd_props[stream_id].pp.hdr.hdr.code = VIRTIO_SND_R_PCM_PREPARE;
451469
uint32_t buffer_bytes = vsnd_props[stream_id].pp.buffer_bytes;
452-
vsnd_props[stream_id].audio_host =
453-
CNFAInit(NULL, "semu-virtio-snd", virtio_snd_cb, 44100, 0, 1, 0,
454-
buffer_bytes, NULL, NULL, &v);
455-
vsnd_props[stream_id].buffer = (void *)malloc(sizeof(void) * buffer_bytes);
470+
vsnd_props[stream_id].audio_host = CNFAInit(
471+
NULL, "semu-virtio-snd", virtio_snd_cb, vsnd_props[stream_id].pp.rate,
472+
0, 1, 0, buffer_bytes, NULL, NULL, &v);
473+
vsnd_props[stream_id].buffer = (void *) malloc(sizeof(void) * buffer_bytes);
456474

457475
*plen = 0;
458476
fprintf(stderr, "virtio_snd_read_pcm_prepare\n");

0 commit comments

Comments
 (0)