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 575c9b12ab drivers/audio: fix samp rate conversion issue
575c9b12ab is described below

commit 575c9b12ab1c809d00600bb51ec9ddb79fba1b1c
Author: jinxiuxu <[email protected]>
AuthorDate: Thu Aug 22 21:20:52 2024 +0800

    drivers/audio: fix samp rate conversion issue
    
    use ac_controls.hw to get the correct sample rate intead of ac_controls.b
    
    Signed-off-by: jinxiuxu <[email protected]>
---
 arch/arm/src/cxd56xx/cxd56_nxaudio.c | 24 ++++++++----------------
 arch/sim/src/sim/posix/sim_alsa.c    | 20 +++++++++-----------
 drivers/audio/audio_null.c           | 17 +++++++----------
 drivers/audio/cs4344.c               |  5 +----
 drivers/audio/cs43l22.c              |  5 +----
 drivers/audio/es8311.c               |  8 ++------
 drivers/audio/es8388.c               |  8 ++------
 drivers/audio/vs1053.c               | 17 +++++++----------
 drivers/audio/wm8904.c               |  5 +----
 drivers/audio/wm8994.c               |  5 +----
 10 files changed, 39 insertions(+), 75 deletions(-)

diff --git a/arch/arm/src/cxd56xx/cxd56_nxaudio.c 
b/arch/arm/src/cxd56xx/cxd56_nxaudio.c
index 34d52b3c7e..02fe09623a 100644
--- a/arch/arm/src/cxd56xx/cxd56_nxaudio.c
+++ b/arch/arm/src/cxd56xx/cxd56_nxaudio.c
@@ -81,18 +81,14 @@
 /* Samplerates field is split into low and high byte */
 
 #ifdef CONFIG_AUDIO_CXD56_SRC
-#define CXD56_SUPP_RATES_L  (AUDIO_SAMP_RATE_8K  | AUDIO_SAMP_RATE_11K | \
-                             AUDIO_SAMP_RATE_16K | AUDIO_SAMP_RATE_22K | \
-                             AUDIO_SAMP_RATE_32K | AUDIO_SAMP_RATE_44K | \
-                             AUDIO_SAMP_RATE_48K)
-#define CXD56_SUPP_RATES_H  ((AUDIO_SAMP_RATE_96K  | AUDIO_SAMP_RATE_128K | \
-                              AUDIO_SAMP_RATE_192K) >> 8)
-#define CXD56_SUPP_RATES    (CXD56_SUPP_RATES_L | CXD56_SUPP_RATES_H)
+#define CXD56_SUPP_RATES  (AUDIO_SAMP_RATE_8K   | AUDIO_SAMP_RATE_11K | \
+                           AUDIO_SAMP_RATE_16K  | AUDIO_SAMP_RATE_22K | \
+                           AUDIO_SAMP_RATE_32K  | AUDIO_SAMP_RATE_44K | \
+                           AUDIO_SAMP_RATE_48K  | AUDIO_SAMP_RATE_96K | \
+                           AUDIO_SAMP_RATE_128K | AUDIO_SAMP_RATE_192K)
 #else
 /* No sample rate converter, only support system rate of 48kHz */
-#define CXD56_SUPP_RATES_L  AUDIO_SAMP_RATE_48K
-#define CXD56_SUPP_RATES_H  0x0
-#define CXD56_SUPP_RATES    (CXD56_SUPP_RATES_L | CXD56_SUPP_RATES_H)
+#define CXD56_SUPP_RATES  AUDIO_SAMP_RATE_48K
 #endif
 
 /* Mic setting definitions */
@@ -2587,8 +2583,6 @@ static int cxd56_getcaps(struct audio_lowerhalf_s *lower, 
int type,
 {
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -2633,8 +2627,7 @@ static int cxd56_getcaps(struct audio_lowerhalf_s *lower, 
int type,
 
               /* Report supported output sample rates */
 
-              ptr  = (uint16_t *)caps->ac_controls.b;
-              *ptr = CXD56_SUPP_RATES_L;
+              caps->ac_controls.hw[0] = CXD56_SUPP_RATES;
               break;
 
             default:
@@ -2654,8 +2647,7 @@ static int cxd56_getcaps(struct audio_lowerhalf_s *lower, 
int type,
 
               /* Report supported input sample rates */
 
-              ptr  = (uint16_t *)caps->ac_controls.b;
-              *ptr = CXD56_SUPP_RATES_L;
+              caps->ac_controls.hw[0] = CXD56_SUPP_RATES;
               break;
 
             default:
diff --git a/arch/sim/src/sim/posix/sim_alsa.c 
b/arch/sim/src/sim/posix/sim_alsa.c
index 06d6649db4..fbb8808917 100644
--- a/arch/sim/src/sim/posix/sim_alsa.c
+++ b/arch/sim/src/sim/posix/sim_alsa.c
@@ -309,7 +309,6 @@ static int sim_audio_getcaps(struct audio_lowerhalf_s *dev, 
int type,
                              struct audio_caps_s *caps)
 {
   struct sim_audio_s *priv = (struct sim_audio_s *)dev;
-  uint16_t *ptr;
   long val;
 
   caps->ac_format.hw  = 0;
@@ -370,16 +369,15 @@ static int sim_audio_getcaps(struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (uint16_t *)caps->ac_controls.b;
-              *ptr = AUDIO_SAMP_RATE_8K |
-                     AUDIO_SAMP_RATE_11K |
-                     AUDIO_SAMP_RATE_12K |
-                     AUDIO_SAMP_RATE_16K |
-                     AUDIO_SAMP_RATE_22K |
-                     AUDIO_SAMP_RATE_24K |
-                     AUDIO_SAMP_RATE_32K |
-                     AUDIO_SAMP_RATE_44K |
-                     AUDIO_SAMP_RATE_48K;
+             caps->ac_controls.hw[0] = AUDIO_SAMP_RATE_8K |
+                                       AUDIO_SAMP_RATE_11K |
+                                       AUDIO_SAMP_RATE_12K |
+                                       AUDIO_SAMP_RATE_16K |
+                                       AUDIO_SAMP_RATE_22K |
+                                       AUDIO_SAMP_RATE_24K |
+                                       AUDIO_SAMP_RATE_32K |
+                                       AUDIO_SAMP_RATE_44K |
+                                       AUDIO_SAMP_RATE_48K;
               break;
 
             default:
diff --git a/drivers/audio/audio_null.c b/drivers/audio/audio_null.c
index 0ec5317e24..1954f9c7a8 100644
--- a/drivers/audio/audio_null.c
+++ b/drivers/audio/audio_null.c
@@ -215,8 +215,6 @@ static int null_getcaps(FAR struct audio_lowerhalf_s *dev, 
int type,
 
   DEBUGASSERT(caps->ac_len >= sizeof(struct audio_caps_s));
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -275,14 +273,13 @@ static int null_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr = AUDIO_SAMP_RATE_8K |
-                     AUDIO_SAMP_RATE_11K |
-                     AUDIO_SAMP_RATE_16K |
-                     AUDIO_SAMP_RATE_22K |
-                     AUDIO_SAMP_RATE_32K |
-                     AUDIO_SAMP_RATE_44K |
-                     AUDIO_SAMP_RATE_48K;
+             caps->ac_controls.hw[0] = AUDIO_SAMP_RATE_8K |
+                                       AUDIO_SAMP_RATE_11K |
+                                       AUDIO_SAMP_RATE_16K |
+                                       AUDIO_SAMP_RATE_22K |
+                                       AUDIO_SAMP_RATE_32K |
+                                       AUDIO_SAMP_RATE_44K |
+                                       AUDIO_SAMP_RATE_48K;
               break;
 
             case AUDIO_FMT_MP3:
diff --git a/drivers/audio/cs4344.c b/drivers/audio/cs4344.c
index e99669e600..e71707d359 100644
--- a/drivers/audio/cs4344.c
+++ b/drivers/audio/cs4344.c
@@ -358,8 +358,6 @@ static int cs4344_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
   audinfo("type=%d ac_type=%d\n", type, caps->ac_type);
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -418,8 +416,7 @@ static int cs4344_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_16K | AUDIO_SAMP_RATE_22K |
                 AUDIO_SAMP_RATE_32K | AUDIO_SAMP_RATE_44K |
                 AUDIO_SAMP_RATE_48K;
diff --git a/drivers/audio/cs43l22.c b/drivers/audio/cs43l22.c
index ca8b3dc91c..3a5e684fdc 100644
--- a/drivers/audio/cs43l22.c
+++ b/drivers/audio/cs43l22.c
@@ -522,8 +522,6 @@ static int cs43l22_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
   audinfo("type=%d ac_type=%d\n", type, caps->ac_type);
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -582,8 +580,7 @@ static int cs43l22_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_8K | AUDIO_SAMP_RATE_11K |
                 AUDIO_SAMP_RATE_16K | AUDIO_SAMP_RATE_22K |
                 AUDIO_SAMP_RATE_32K | AUDIO_SAMP_RATE_44K |
diff --git a/drivers/audio/es8311.c b/drivers/audio/es8311.c
index 084520cf0a..fd653ec64e 100644
--- a/drivers/audio/es8311.c
+++ b/drivers/audio/es8311.c
@@ -802,8 +802,6 @@ static int es8311_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
   audinfo("getcaps: type=%d ac_type=%d\n", type, caps->ac_type);
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -847,8 +845,7 @@ static int es8311_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* 8kHz is hardware dependent */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_11K | AUDIO_SAMP_RATE_16K |
                 AUDIO_SAMP_RATE_22K | AUDIO_SAMP_RATE_32K |
                 AUDIO_SAMP_RATE_44K | AUDIO_SAMP_RATE_48K;
@@ -865,8 +862,7 @@ static int es8311_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
           {
               /* Report supported input sample rates */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_11K | AUDIO_SAMP_RATE_16K |
                 AUDIO_SAMP_RATE_22K | AUDIO_SAMP_RATE_32K |
                 AUDIO_SAMP_RATE_44K | AUDIO_SAMP_RATE_48K;
diff --git a/drivers/audio/es8388.c b/drivers/audio/es8388.c
index 47ad520d59..e27e6a847c 100644
--- a/drivers/audio/es8388.c
+++ b/drivers/audio/es8388.c
@@ -773,8 +773,6 @@ static int es8388_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
   audinfo("getcaps: type=%d ac_type=%d\n", type, caps->ac_type);
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -830,8 +828,7 @@ static int es8388_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* 8kHz is hardware dependent */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_11K | AUDIO_SAMP_RATE_16K |
                 AUDIO_SAMP_RATE_22K | AUDIO_SAMP_RATE_32K |
                 AUDIO_SAMP_RATE_44K | AUDIO_SAMP_RATE_48K;
@@ -853,8 +850,7 @@ static int es8388_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report supported input sample rates */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_11K | AUDIO_SAMP_RATE_16K |
                 AUDIO_SAMP_RATE_22K | AUDIO_SAMP_RATE_32K |
                 AUDIO_SAMP_RATE_44K | AUDIO_SAMP_RATE_48K;
diff --git a/drivers/audio/vs1053.c b/drivers/audio/vs1053.c
index fd8a5779e3..ab18c5ca1c 100644
--- a/drivers/audio/vs1053.c
+++ b/drivers/audio/vs1053.c
@@ -564,8 +564,6 @@ static int vs1053_getcaps(FAR struct audio_lowerhalf_s 
*lower, int type,
 
   DEBUGASSERT(caps->ac_len >= sizeof(struct audio_caps_s));
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -649,14 +647,13 @@ static int vs1053_getcaps(FAR struct audio_lowerhalf_s 
*lower, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr = AUDIO_SAMP_RATE_8K  |
-                     AUDIO_SAMP_RATE_11K |
-                     AUDIO_SAMP_RATE_16K |
-                     AUDIO_SAMP_RATE_22K |
-                     AUDIO_SAMP_RATE_32K |
-                     AUDIO_SAMP_RATE_44K |
-                     AUDIO_SAMP_RATE_48K;
+              caps->ac_controls.hw[0] = AUDIO_SAMP_RATE_8K  |
+                                        AUDIO_SAMP_RATE_11K |
+                                        AUDIO_SAMP_RATE_16K |
+                                        AUDIO_SAMP_RATE_22K |
+                                        AUDIO_SAMP_RATE_32K |
+                                        AUDIO_SAMP_RATE_44K |
+                                        AUDIO_SAMP_RATE_48K;
               break;
 
             case AUDIO_FMT_MP3:
diff --git a/drivers/audio/wm8904.c b/drivers/audio/wm8904.c
index b47446aeb7..bf342804e5 100644
--- a/drivers/audio/wm8904.c
+++ b/drivers/audio/wm8904.c
@@ -957,8 +957,6 @@ static int wm8904_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
   audinfo("type=%d ac_type=%d\n", type, caps->ac_type);
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -1018,8 +1016,7 @@ static int wm8904_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_8K | AUDIO_SAMP_RATE_11K |
                 AUDIO_SAMP_RATE_16K | AUDIO_SAMP_RATE_22K |
                 AUDIO_SAMP_RATE_32K | AUDIO_SAMP_RATE_44K |
diff --git a/drivers/audio/wm8994.c b/drivers/audio/wm8994.c
index a33604c23a..7e1e49ad65 100644
--- a/drivers/audio/wm8994.c
+++ b/drivers/audio/wm8994.c
@@ -655,8 +655,6 @@ static int wm8994_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
   DEBUGASSERT(caps && caps->ac_len >= sizeof(struct audio_caps_s));
   audinfo("type=%d ac_type=%d\n", type, caps->ac_type);
 
-  uint16_t *ptr;
-
   /* Fill in the caller's structure based on requested info */
 
   caps->ac_format.hw  = 0;
@@ -716,8 +714,7 @@ static int wm8994_getcaps(FAR struct audio_lowerhalf_s 
*dev, int type,
 
               /* Report the Sample rates we support */
 
-              ptr  = (FAR uint16_t *)caps->ac_controls.b;
-              *ptr =
+              caps->ac_controls.hw[0] =
                 AUDIO_SAMP_RATE_8K | AUDIO_SAMP_RATE_11K |
                 AUDIO_SAMP_RATE_16K | AUDIO_SAMP_RATE_22K |
                 AUDIO_SAMP_RATE_32K | AUDIO_SAMP_RATE_44K |

Reply via email to