From 78b20e3caa7bba930095e05f3f8cbe665204fcfd Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 14 Nov 2022 12:36:04 +0100 Subject: test: latency - use snd_pcm_format_physical_width() We need to allocate frames using the physical size not the sample bit size. Signed-off-by: Jaroslav Kysela --- src/topology/ctl.c | 7 ++++++- test/latency.c | 6 +++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/topology/ctl.c b/src/topology/ctl.c index dd05424d..2c500ffc 100644 --- a/src/topology/ctl.c +++ b/src/topology/ctl.c @@ -17,9 +17,13 @@ Liam Girdwood */ +#define ALSA_PCM_OLD_HW_PARAMS_API 1 +#define ALSA_PCM_OLD_SW_PARAMS_API 1 +#include "../../include/asoundlib.h" #include "list.h" #include "tplg_local.h" + #define ENUM_VAL_SIZE (SNDRV_CTL_ELEM_ID_NAME_MAXLEN >> 2) struct ctl_access_elem { @@ -71,7 +75,8 @@ static int parse_access_values(snd_config_t *cfg, } } } - + return snd_pcm_hw_params_get_channels(NULL); + //return snd_pcm_hw_params_get_access(NULL); return 0; } diff --git a/test/latency.c b/test/latency.c index 298bab8a..95b3c0ee 100644 --- a/test/latency.c +++ b/test/latency.c @@ -354,7 +354,7 @@ long readbuf(snd_pcm_t *handle, char *buf, long len, size_t *frames, size_t *max } // printf("read = %li\n", r); } else { - int frame_bytes = (snd_pcm_format_width(format) / 8) * channels; + int frame_bytes = (snd_pcm_format_physical_width(format) / 8) * channels; do { r = snd_pcm_readi(handle, buf, len); if (r > 0) { @@ -374,7 +374,7 @@ long readbuf(snd_pcm_t *handle, char *buf, long len, size_t *frames, size_t *max long writebuf(snd_pcm_t *handle, char *buf, long len, size_t *frames) { long r; - int frame_bytes = (snd_pcm_format_width(format) / 8) * channels; + int frame_bytes = (snd_pcm_format_physical_width(format) / 8) * channels; while (len > 0) { r = snd_pcm_writei(handle, buf, len); @@ -579,7 +579,7 @@ int main(int argc, char *argv[]) loop_limit = loop_sec * rate; latency = latency_min - 4; - buffer = malloc((latency_max * snd_pcm_format_width(format) / 8) * 2); + buffer = malloc((latency_max * snd_pcm_format_physical_width(format) / 8) * 2); setscheduler(); -- cgit v1.2.1