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);

Reply via email to