标签:
最近在做一个MT6572的项目,遇到了一个问题,就是有一个项目的左右耳机声道不分,在这个基线上有三个项目,然后另外2个是好的,没有这个问题。其中2个项目的差异就是频段不一样,而耳机都是美标的。
为此,我寻找了大量的资料。其中耳机
目前国际上通用的手机耳机接口标准有两个,一个是OMTP(美标)的标准,一个是CTIA(欧标)的标准。
美标 CTIA耳机四极接法:从最前头开始数1234,左/右声道/地线/麦系统。
欧标 OMTP耳机四极接法:从最前头开始数1234,左/右声道/麦系统/地线
然而通过对比2个手机的硬件走线图,发现是一样的。对比BOM图,也是一样的!
这样又回到软件这边来分析,然后我们通过软件修改flash,相互下载,发现有问题的手机,就是有问题,而没问题的手机,还是没问题。所以还是硬件问题!到底问题在哪里呢?
经过硬件高手拆机对比,发现耳机部分实际走线有问题!有问题的手机使用了欧标的走线方法,然后使用欧标的耳机之后,这个左右声道就分开了!
但是再仔细一看,左右耳机声道反掉了。又不想修改硬件,然后就通过下面的方法来软件,使用左右耳机声调对调!
[FAQ04682][Audio
Drv]耳机左右声道接反,软件如何修正
[DESCRIPTION]
硬件工程师不小心将耳机左右声道输出接反,软件该如何修改将其修正
[SOLUTION]
可以用如下方法:
修改AudioYusuStreamOut.cpp,添加方法:
void AudioYusuStreamOut::swS2M(const void* buffer, size_t bytes)
{
uint32 Idx_i;
int16 PCM_M;
short* pbuffer=(short*)buffer;
{
//enable software stereo to mono
for(Idx_i = 0; Idx_i<bytes>>1; Idx_i+=2)
{
PCM_M = pbuffer[Idx_i+1];
pbuffer[Idx_i+1]=pbuffer[Idx_i];
pbuffer[Idx_i]=PCM_M;
}
}
}
修改ssize_t AudioYusuStreamOut::write(const void* buffer, size_t bytes)
在 dumpPcmData(streamout_ori,outbuffer,bytes,streamout_ori_propty);
之前添加: swS2M(buffer,bytes);
总结:遇到类似耳机问题,先明确产品定义,然后明确硬件实际(拆机)电路是否有问题。
手机设计中耳机左右声道不分的问题分析!
标签:
原文地址:http://blog.csdn.net/wed110/article/details/46117055