This is an automated email from the ASF dual-hosted git repository.
xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/master by this push:
new f67e50e920 sim/sim_alsa: modify buffer_size in GET_BUFFERINFO when
offload capture.
f67e50e920 is described below
commit f67e50e920541e39115fb46310c3e1966354a1f9
Author: qiaohaijiao1 <[email protected]>
AuthorDate: Tue May 16 19:19:29 2023 +0800
sim/sim_alsa: modify buffer_size in GET_BUFFERINFO when offload capture.
1. when offload capture, apb buffer must big enough to fill
samples of encoder.
2. pass samplerate, channels to encoder.
---
arch/sim/src/sim/posix/sim_alsa.c | 23 +++++++++++++++++------
arch/sim/src/sim/posix/sim_offload.c | 3 ---
2 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/arch/sim/src/sim/posix/sim_alsa.c
b/arch/sim/src/sim/posix/sim_alsa.c
index 1826f221f4..5333c38a91 100644
--- a/arch/sim/src/sim/posix/sim_alsa.c
+++ b/arch/sim/src/sim/posix/sim_alsa.c
@@ -409,6 +409,7 @@ static int sim_audio_configure(struct audio_lowerhalf_s
*dev,
#endif
{
struct sim_audio_s *priv = (struct sim_audio_s *)dev;
+ struct audio_info_s info;
int ret = 0;
switch (caps->ac_type)
@@ -439,6 +440,15 @@ static int sim_audio_configure(struct audio_lowerhalf_s
*dev,
priv->frame_size = priv->bps / 8 * priv->channels;
sim_audio_config_ops(priv, caps->ac_subtype);
+
+ info.samplerate = priv->sample_rate;
+ info.channels = priv->channels;
+ priv->codec = priv->ops->init(&info);
+ if (priv->codec == NULL)
+ {
+ ret = -ENOSYS;
+ }
+
break;
default:
@@ -471,12 +481,6 @@ static int sim_audio_start(struct audio_lowerhalf_s *dev)
return -ENOMEM;
}
- priv->codec = priv->ops->init(NULL);
- if (priv->codec == NULL)
- {
- return -ENOSYS;
- }
-
return sim_audio_open(priv);
}
@@ -581,6 +585,13 @@ static int sim_audio_ioctl(struct audio_lowerhalf_s *dev,
int cmd,
info->nbuffers = priv->nbuffers;
info->buffer_size = priv->buffer_size;
+
+ if (priv->ops->get_samples)
+ {
+ info->buffer_size = MAX(info->buffer_size,
+ priv->ops->get_samples(priv->codec) *
+ priv->frame_size);
+ }
}
break;
diff --git a/arch/sim/src/sim/posix/sim_offload.c
b/arch/sim/src/sim/posix/sim_offload.c
index c307981b2a..9839bbddf3 100644
--- a/arch/sim/src/sim/posix/sim_offload.c
+++ b/arch/sim/src/sim/posix/sim_offload.c
@@ -454,9 +454,6 @@ void *sim_audio_lame_init(struct audio_info_s *info)
{
lame_set_num_channels(codec->gfp, info->channels);
lame_set_mode(codec->gfp, info->channels > 1 ? STEREO : MONO);
-
- lame_set_in_samplerate (codec->gfp, info->samplerate);
- lame_set_out_samplerate(codec->gfp, info->samplerate);
}
ret = lame_init_params(codec->gfp);