Page 1 of 1

Opus decoder volume

Posted: Mon Aug 29, 2022 9:03 am
by sam131208
你好:
opus 可以设置volume,请问是否可以提供volume的接口函数 opus_decoder_ctl()?

Re: Opus decoder volume

Posted: Wed Sep 14, 2022 3:18 am
by tempo.tian
opus目前和其他decoder往上提供相同的接口,因为不是每个decoder都支持设置volume,所以不会单独开出来特殊的API来设置音量
从代码上看opus设置gain也只是做了一次乘法
if(st->decode_gain)
{
opus_val32 gain;
gain = celt_exp2(MULT16_16_P15(QCONST16(6.48814081e-4f, 25), st->decode_gain));
for (i=0;i<frame_size*st->channels;i++)
{
opus_val32 x;
x = MULT16_32_P16(pcm,gain);
pcm = SATURATE(x, 32767);
}
}
相同的功能可以用优化后的代码来实现
比如i2s stream里面集成的音量调节alc模块
alc_volume_setup_process 这个API已经具有调节音量的功能了