Android 2.3 下面的音频调试技巧心得与大家分享

本文分享了在Android 2.3中调试音频驱动的经验,特别是如何通过上层调用内核函数来设置音频芯片的寄存器。介绍了两种方案:一种是通过proc接口,另一种是直接调用kernel函数。详细阐述了在打开音频通道时,如何在AudioHardware.cpp中操作,并在kernel层的Smdkv2xx_wm8976.c中设置相应的控制函数,以实现不同模式下的通道切换。
摘要由CSDN通过智能技术生成

记得开始调试3G的时候,要打通wm8976和RT5621的通道,以供3G的通话来用,记得我在这个项目里面有两种方案:

第一种方案就是上层通过写proc来实现。有关这个思路的实现我已经在另一篇博客里面有详细的描述(proc的使用),感兴趣的朋友,可以去看看,在Android 栏目里面

第二种方案就是看了samsung的代码,了解了他有一种机制可以通过上层来调用kernel的函数,来设置该音频芯片的寄存器,呵呵,samsung对有的音频芯片的支持并不是都是采用这样的机制,samsung开始对芯片初始化函数里面就已经把所用到的通道全部打开。嘿嘿,偷懒啊! 关键是我们有3G的功能就是要在打电话的时候打开芯片的一些通道,而不是在初始启动的时候,就得有一种机制,上层可以随时调用kernel里面的函数,修改音频芯片的寄存器。

  下面就让我来详细的描述这种方法,希望对调试音频驱动的朋友有帮助:

  首先来看看音频的上层代码: 

  下面函数的路劲是:Devive/Samsung/proprietary/libaudio/AudioHardware.cpp  里面

#define GSM_PATCH   

#if 1//wang 
#define LOGX LOGE
#else
#define LOGX LOGV
#endif

 status_t AudioHardware::AudioStreamOutALSA::open_l()    //在打开音频的时候回调用这个函数
{
    LOGX("wang ::AudioStreamOutALSA:: open_l ");
    mPcm = mHardware->openPcmOut_l();
    if (mPcm == NULL) {
        return

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值