From de2920605dee71f52ab6bd61793dcfefa91e40e8 Mon Sep 17 00:00:00 2001 From: wurui3 Date: Thu, 23 Nov 2023 11:28:36 +0800 Subject: [PATCH] sim_offload: add MONO channel encode method and set samplerate before encode. According to different pcm data format, set real sample rate and encode separately. Signed-off-by: wurui3 --- arch/sim/src/sim/sim_offload.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/arch/sim/src/sim/sim_offload.c b/arch/sim/src/sim/sim_offload.c index 77577be724f..49b763f9f99 100644 --- a/arch/sim/src/sim/sim_offload.c +++ b/arch/sim/src/sim/sim_offload.c @@ -457,6 +457,7 @@ 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, (int)info->samplerate); } ret = lame_init_params(codec->gfp); @@ -510,8 +511,17 @@ static int sim_audio_lame_encode(void *handle, chs = lame_get_num_channels(codec->gfp); samples = insize / (sizeof(short int) * chs); - ret = lame_encode_buffer_interleaved(codec->gfp, (short int *)in, samples, - codec->out, codec->max); + if (chs > 1) + { + ret = lame_encode_buffer_interleaved(codec->gfp, (short int *)in, + samples, codec->out, codec->max); + } + else + { + ret = lame_encode_buffer(codec->gfp, (short int *)in, NULL, samples, + codec->out, codec->max); + } + if (ret < 0) { return ret;