✅ 操作成功!

音频控制

发布时间:2023-06-16 作者:admin 来源:文学

音频控制

音频控制

-

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使能启动之后,再调⽤。

👁️ 阅读量:0