nuttx/audio: clear apb buffer when playback dequeue

memset apb buffer to zero when dequeue

Signed-off-by: yangyalei <yangyalei@xiaomi.com>
This commit is contained in:
yangyalei
2025-08-18 14:24:15 +08:00
committed by Alan C. Assis
parent b13defe9e4
commit 854cd0ca21
2 changed files with 13 additions and 10 deletions
+7
View File
@@ -477,6 +477,7 @@ static int audio_configure(FAR struct file *filep,
/* INPUT/OUTPUT configure success here */
audio_setstate(upper, AUDIO_STATE_PREPARED);
upper->info.type = caps->ac_type;
upper->info.format = caps->ac_subtype;
upper->info.channels = caps->ac_channels;
upper->info.subformat = caps->ac_format.b[0];
@@ -1424,6 +1425,12 @@ static inline void audio_dequeuebuffer(FAR struct audio_upperhalf_s *upper,
audinfo("Entry\n");
if (upper->info.type == AUDIO_TYPE_OUTPUT)
{
apb->nbytes = 0;
memset(apb->samp, 0, apb->nmaxbytes);
}
flags = spin_lock_irqsave_nopreempt(&upper->spinlock);
upper->status->tail++;
audio_try_enqueue(upper);
+6 -10
View File
@@ -732,16 +732,12 @@ struct audio_caps_desc_s
struct audio_info_s
{
uint32_t samplerate; /* Sample Rate of the audio data */
uint8_t channels; /* Number of channels (1, 2, 5, 7) */
uint8_t format; /* Audio data format */
uint8_t subformat; /* Audio subformat
* (maybe should be combined with format?)
*/
/* Codec extra params */
struct audio_codec_s codec;
uint32_t samplerate; /* Sample Rate of the audio data */
uint8_t channels; /* Number of channels (1, 2, 5, 7) */
uint8_t format; /* Audio data format */
uint8_t subformat; /* Audio subformat */
uint8_t type; /* device type */
struct audio_codec_s codec; /* Codec extra params */
};
/* This structure describes the preferred number and size of