77范文网 - 专业文章范例文档资料分享平台

Android_Audio_深入分析(5)

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

[键入文字]

4.2.4 ADIE(ADIE codec config)

devmgr_adie_config(ENABLE)DISABLE/RECONFIGdevmgr_adie_enabledevmgr_adie_wakeup设置devmgr_adie_rx_tx_config_optionadie_codec = voc_data_get_adie_codec_config(codec_in_use)根据voc codec获取adie codecdevmgr_adie_mask_codec_config(adie_codec)从adie_codec->val中获取mask_adie_regadie_codec_config(size, mask_adie_config)adie配置写入clk_reg(devmgr_adie_set_final, 20L)注册时钟回调,到期写入最后一个adie configdevmgr_adie_set_finaladie_codec_config(size, mask_adie_config)adie配置写入Internal Codec ADIE: (ADIE codec config)

在DEVMGR的状态变为AFE_ACTIVE时,在devmgr_state_afe_active中调用devmgr_adie_config(DEVMGR_ADIE_CONFIG_ENABLE),接着调用devmgr_adie_enable,其中调用devmgr_adie_wakeup,通过voc_data_get_adie_codec_config获取到ADIE codec config。接着调用adie_codec_config将配置写入Internal Codec,至此ARM9侧通路切换完成。

由以上步骤可见,ARM9侧audio通路的设置主要包含两方面: 针对ADSP的audio codec config配置

针对Internal Codec的adie codec config配置。 具体如何配置在下一节中介绍。

[键入文字]

[键入文字]

5. ARM9侧audio通路添加

下面介绍一下ARM9侧新增audio通路具体修改代码的部分: 需要添加和修改的部分用红色字体标记:

在ARM9端主要是配置audio codec config和adie codec config。 下面说明一下如何在ARM9端新增一个snd device的具体步骤。 1. Snddev.h中,snd_device_type中添加新的成员SND_DEVICE_XXX。 typedef enum {

SND_DEVICE_DEFAULT = 0, SND_DEVICE_HANDSET = SND_DEVICE_DEFAULT + 1, SND_DEVICE_HFK = SND_DEVICE_DEFAULT + 2, SND_DEVICE_HEADSET = SND_DEVICE_DEFAULT + 3,

…………………… SND_DEVICE_XXX = SND_DEVICE_DEFAULT + 31, SND_DEVICE_MAX = SND_DEVICE_DEFAULT + 32, SND_DEVICE_CURRENT = SND_DEVICE_DEFAULT + 33, SND_DEVICE_32BIT_DUMMY = SNDDEV_DUMMY_DATA_UINT32_MAX } snd_device_type;

2. Sndcal.c中,定义新的snd_gen_level_voc_type snd_cal_xxx_voice_vol_umts[],其中的voice对应snd_method_type,根据不同的method type定义不同的snd_gen_level_voc_type。其中的umts对应voc_def_service_cfg_type,根部不同的service type定义不同的snd_gen_level_voc_type。在此,我们只已method->voice和service->umts为例。 snd_gen_level_voc_type snd_cal_xxx_voice_vol_umts[] = { /* rx tx pad */

{VOC_VOL_SILENCE, VOC_VOL_SILENCE, 0}, {-700, -3300, 0}, {-400, -3250, 0}, {-400, -3200, 0}, {-100, -3150, 0}, {200, -3100, 0}, {500, -3050, 0}, {800, -3000, 0} };

3. Sndcal.c中,定义snd_gen_voc_cal_type snd_cal_xxx_voice_gains_umts,其中的volume table使用我们上面定义的snd_cal_xxx_voice_vol_umts,也要区分method和service type。 snd_gen_voc_cal_type snd_cal_xxx_voice_gains_umts = { SND_GEN_VOC, 7, //与volume table中的非VOC_VOL_SILENCE的级数对应 1, VOC_CODEC_XXX, //与snd_device_type对应的pcm path

[键入文字]

[键入文字]

21, 0xff, snd_cal_xxx_voice_vol_umts };

4. Sndcal.c中,定义snd_cal_control_type snd_cal_xxx_voice_control_umts,其中的snd_gen_cal_types使用我们上面定义的snd_cal_xxx_voice_gains_umts。也要区分method和service type。

snd_cal_control_type snd_cal_xxx_voice_control_umts = { SND_DEVICE_XXX, SND_GEN_VOC, (snd_gen_cal_type *) &snd_cal_xxx_voice_gains_umts };

5. Sndcal.c中,在snd_cal_control_type *snd_cal_control_data[VOC_SERVICE_MAX][SND_DEVICE_MAX][SND_METHOD_MAX]中添加snd_cal_xxx_voice_control_umts,注意添加的位置要与service、device、method相匹配。 const snd_cal_control_type *snd_cal_control_data[][][] = { /* CDMA NB */

{

……………… }

/* CDMA WB */ { ……………… }

/* UMTS NB */ { &snd_cal_handset_voice_control_umts, &snd_cal_handset_key_beep_control_umts, &snd_cal_handset_message_control_umts, &snd_cal_handset_ring_control_umts, &snd_cal_handset_midi_control_umts, &snd_cal_aux_control,

………………

&snd_cal_xxx_voice_control_umts, &snd_cal_xxx_key_beep_control_umts, &snd_cal_xxx_message_control_umts, &snd_cal_xxx_ring_control_umts, &snd_cal_xxx_midi_control_umts,

[键入文字]

[键入文字]

&snd_cal_aux_control, ……………… }

/* UMTS WB */ { ……………… }

};

以上步骤是添加snd device,但是并没有配置硬件部分的config参数,下面我们还需要添加audio path codec才能把通路打开。添加snd device,其实最主要的是为了添加audio path codec做准备的。在添加snd device时,我们已经用到了需要增加的VOC_CODEC_XXX,下面我们就从添加VOC_CODEC_XXX开始,看下如何添加audio codec path。

6. Voccodec.h中,voc_codec_type中添加新的成员VOC_CODEC_XXX。 typedef enum { VOC_CODEC_DEFAULT, VOC_CODEC_ON_CHIP_0 = VOC_CODEC_DEFAULT + 1, VOC_CODEC_ON_CHIP_1 = VOC_CODEC_DEFAULT + 2, VOC_CODEC_STEREO_HEADSET = VOC_CODEC_DEFAULT + 3, ……………… VOC_CODEC_XXX = VOC_CODEC_DEFAULT + 34, VOC_CODEC_MAX = VOC_CODEC_DEFAULT + 35, VOC_CODEC_NONE = VOC_CODEC_DEFAULT + 36, VOC_CODED_32BIT_DUMMY = 0x7FFFFFFF }

7. Vocfunc.c中,在voc_codec_class_type voc_codec_class[VOC_CODEC_MAX]中新增与VOC_CODEC_XXX对应的voc_codec_class_type,这里的class type使用高通默认的class type,无需自己定义。

voc_codec_class type voc_codec_class[VOC_CODEC_MAX] = { /* VOC_CODEC_ON_CHIP_0 */ VOC_CODEC_CLASS_INTERNAL, /* VOC_CODEC_ON_CHIP_1 */ VOC_CODEC_CLASS_INTERNAL, /* VOC_CODEC_STEREO_HEADSET */ VOC_CODEC_CLASS_INTERNAL_STEREO ……………… /* VOC_CODEC_XXX */ VOC_CODEC_CLASS_INTERNAL }

8. Vocaudio.c中,定义voc_audio_codec_config_type voc_audio_codec_xxx 此项一般都使用高通给出的audio codec config,不需自己定义。

9. Msmaud.h中,定义MSMAUD_ADIE_CODEC_XXX_CONFIG_SEQ并定义SIZE.

[键入文字]

[键入文字]

#define MSMAUD_ADIE_CODEC_XXX_DELAY_CONFIG_SIZE 3 #define MSMAUD_ADIE_CODEC_XXX_CONFIG_SEQ

{ ADIE_CODEC_C14_R, MSMAUD_ADIE_CODEC_C14_INIT, ADIE_CODEC_EN1_R, MSMAUD_ADIE_CODEC_EN1_INIT_CORE,

10. Vocaudio.c中,定义adie_codec_reg_type voc_adie_xxx_config[]

const adie_codec_reg_type voc_adie_xxx_config[] = MSMAUD_ADIE_CODEC_XXX_CONFIG_SEQ;

定义voc_adie_codec_config_type voc_adie_codec_xxx_config const voc_adie_codec_config_type voc_adie_codec_xxx_config = { sizeof(voc_adie_xxx_config)/sizeof(adie_codec_reg_type), MSMAUD_ADIE_CODEC_XXX_DELAY_CONFIG_SIZE, voc_adie_xxx_config }; 11. Vocaudio.c中,在voc_audio_path_config_type voc_audio_path_config[VOC_SERVICE_MAX][VOC_CODEC_MAX]中添加新成员,注意CDMA/CDMAWB/UMTS/UMTSWB下均要添加,每个成员包含了voc_audio_codec_config_type和voc_adie_codec_config_type。

voc_audio_path_config_type voc_audio_path_config[VOC_SERVICE_MAX][VOC_CODEC_MAX] = { /* CDMA */ /* CDMA WB */ /* UMTS */ { /* VOC_CODEC_HANDSET */ {

AUDIO_PATH_CONFIG(&voc_audio_codec_int0_umts,

&voc_adie_codec_handset_config)

},

……………… {

AUDIO_PATH_CONFIG(&voc_audio_codec_internal_stereo,

&voc_adie_codec_xxx_config)

}, },

/* UMTS WB */ }

[键入文字]

}

………………

ADIE_CODEC_C14_R,

MSMAUD_ADIE_CODEC_C14_***

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Android_Audio_深入分析(5)在线全文阅读。

Android_Audio_深入分析(5).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/416430.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: