Carga de parámetros de audio MTK

Carga de parámetros de audio MTK

Después de ingresar a la nueva empresa, el jefe se las arregla para familiarizarse con el proceso de desarrollo, hacer arreglos para aprender sobre la carga dinámica de los parámetros de audio de la plataforma MTK, de modo que los parámetros de audio se puedan separar como submódulos en el futuro, y La duplicación de actualización independiente se puede lograr en el futuro
Parte 1: Proceso de carga de parámetros de audio
AudioALSAVolumeController, Se utiliza principalmente para control de volumen y compensación de volumen del sistema de audio, los parámetros de audio también se aplican aquí

开机启动过程中,AudioALSAVolumeController::AudioALSAVolumeController()构造函数 

调用initCheck()

然后调用initVolumeController初始化

**AudioALSAVolumeController::initVolumeController()** 

GetVolumeVer1ParamFromNV(&mVolumeParam);
GetNBSpeechParamFromNVRam(&mSphParamNB);
GetWBSpeechParamFromNVRam(&mSphParamWB);

以上三个函数获取音频参数的结构体,是MTK 客制化音频参数的设置接口AudioCustParam.cpp得到参数后,并完成audio参数的设置
AudioCustParam.cpp会调用CFG_Audio_Default.h头文件中引入的音频参数h文件

Inserte la descripción de la imagen aquí

Simplemente observe la adquisición de un único parámetro de audio get en AudioCustParam.cpp,

// functions
int GetVolumeVer1ParamFromNV(AUDIO_VER1_CUSTOM_VOLUME_STRUCT *pPara)
{
    
    
ALOGD("GetVolumeVer1ParamFromNV ");
int result = 0;
if (!checkNvramReady())//检查MTK nvram动态分区是否ready,属性值service.nvram_init来控制,如果是非ready的状态,则返回加载默认参数
{
    
    
ALOGW("checkNvramReady fail");
return getDefaultVer1VolumeParam(pPara);
}

#if defined(USE_DEFAULT_CUST_TABLE)//定义了USE_DEFAULT_CUST_TABLE,也会返回加载默认参数
// a default value , should disable when NVRAM ready
result = getDefaultVer1VolumeParam(pPara);
// get from NV ram and replace the default value
#else
...

//通常正常情况下调用MTK封装库nvram.so获取实际audio参数,会打开/data/nvram/APCFG/APRDCL/下的音频二进制文件,完成读取

audio_nvram_fd = NVM_GetFileDesc(file_lid, &rec_size, &rec_num, ISREAD);
result = read(audio_nvram_fd.iFileDesc, pPara , rec_size * rec_num);
NVM_CloseFileDesc(audio_nvram_fd);
...


return result;

}

NVram lee el registro de parámetros de audio, por ejemplo:

D / NVRAM (213): trato con cfgcustfile = / data / NVRAM / APCFG / APRDCL / Audio_Buffer_DC_Calibration_Param, 65
D / NVRAM (224): Open / data / NVRAM / APCFG / APRDCL / Audio_Buffer_DC_Calibration_Param, LID: 65
D / NVRAM (224 ): Abierto / data / nvram / APCFG / APRDCL / Audio_Buffer_DC_Calibration_Param, LID: 65

Después de importar y compilar, eventualmente se incluirá en ------> / system / lib / libcustom_nvram.so, necesita compilar el módulo vendor \ mediatek \ proprietary \ external \ nvram \ libcustom_nvram para obtener el último libcustom_nvram .entonces.

Init.6580.rc importa init.nvdata.rc, por lo tanto, los archivos binarios de audio se crearán en la partición nvdata durante el proceso de arranque, y el syblink estará en la partición / data. El nombre del archivo y la matriz a continuación son consistentes.
Inserte la descripción de la imagen aquí
Siga el proceso anterior para actualizar los parámetros El método es reemplazar directamente todos los parámetros de audio en el directorio / data / nvram / APCFG / APRDCL y reiniciar la máquina para que la nueva configuración de audio tenga efecto.

Después de cada arranque, nvram abrirá el archivo de audio en / data / nvram / APCFG / APRDCL / para completar la recarga de los parámetros de audio. Es importante prestar atención a los permisos correspondientes del directorio correspondiente.

prj\device\mediatek\mt6580\init.nvdata.rc

on init
#Create nvdata mount point
mkdir /nvdata 0771 system system

on post-fs-data
#create basic filesystem structure
#mkdir /data/nvram 2770 root system
#We chown/chmod /nvdata again so because mount is run as root + defaults
chown root system /nvdata
chmod 2770 /nvdata
symlink /nvdata /data/nvram

#Set SELinux security contexts on upgrade or policy update.
restorecon_recursive /nvdata

Aquí, solo uso la aplicación para agregar botones para realizar inicialmente la copia de la actualización del parámetro. Si hay una actualización automática de todo el proceso, actualice y comparta. Además, la aplicación está configurada directamente en systemuid y
el shell El comando cp se llama directamente para realizar el reemplazo del parámetro.

Primero registre y comparta aquí, si hay algo mal, corríjame.

Supongo que te gusta

Origin blog.csdn.net/jeephao/article/details/103394282
Recomendado
Clasificación