
音频控制
-
2023年3月20日发(作者:10的分解)⾳频⽂件播放之⾳量控制【海思平台】
概述
Hi3518A/Hi3518C/Hi3518E/Hi3516C提供⼀个内置的AudioCodec,并在芯⽚内部对接到SIO0接⼝,即SIO0接⼝只能通过内置的
AudioCodec完成声⾳的播放及录制。因为AudioCodec不能发送同步时钟,所以SIO0接⼝只能配置为I2S时序的主模式,⽤户仍需要
正确配置SIO0和AudioCodec对接时序才可接收或发送⾳频数据。
海思Hi3518_MPP_V1.0.A.0版本之前的SDK不⽀持⾳量动态控制,直到当前版本的发布,才可以正常使⽤ioctl函数的相关接⼝动态调节
动态调节API
ACODEC_SET_OUTPUT_VOL
ACODEC_GET_INPUT_VOL
定义处:
#defineACODEC_SET_OUTPUT_VOL
_IOWR(IOC_TYPE_ACODEC,IOC_NR_SET_OUTPUT_VOL,unsignedint)
#defineACODEC_GET_INPUT_VOL
_IOWR(IOC_TYPE_ACODEC,IOC_NR_GET_INPUT_VOL,unsignedint)
调节范围:0x0xffffff87~0xffffffff
程序⽰例
intopenAcodec()
{
intfdAcodec=open(ACODEC_FILE,O_RDWR);
if(fdAcodec<0)
{
printf("[%s::%d]can'topenacodec:%s",__func__,__LINE__,ACODEC_FILE);
return-1;
}
returnfdAcodec;
}
intgetOutputVol(intfdAcodec,int*pVol)
{
intvol;
if(ioctl(fdAcodec,ACODEC_GET_OUTPUT_VOL,&vol))
{
printf("[%s::%d]ACODEC_GET_OUTPUT_VOLfailn",__func__,__LINE__);
return-1;
}
printf("[%s::%d]ACODEC_GET_OUTPUT_VOL:%xn",__func__,__LINE__,vol);
*pVol=vol;
return0;
}
intsetOutputVol(intfdAcodec,intvol)
{
if(ioctl(fdAcodec,ACODEC_SET_OUTPUT_VOL,&vol))
{
printf("[%s::%d]ACODEC_SET_OUTPUT_VOLfail:%xn",__func__,__LINE__,vol);
return-1;
}
return0;
}
intcloseAcodec(intfdAcodec)
{
returnclose(fdAcodec);
}
备注
该接⼝的调⽤要在HI_MPI_AO_Enable的调⽤之后,即AO使能启动之后,再调⽤。