手机设计中耳机左右声道不分的问题分析!

最近在做一个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);

总结:遇到类似耳机问题,先明确产品定义,然后明确硬件实际(拆机)电路是否有问题。

时间: 2024-08-29 17:30:04

手机设计中耳机左右声道不分的问题分析!的相关文章

硬件设计中的30个错误想法与原因分析

一:成本节约 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧 点评:市场上不存在5K的阻值,最接近的是 4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍.20%精度的电阻阻值只有1.1.5.2.2.3.3.4.7.6.8几个类别(含10的整数倍):类似地,20%精度的电容也只有以上几种值,如果选了其它的值就必须使用更高的精度,成本就翻了几倍,却不能带来任何好处. 现象二:面板上的指示灯选什么颜色呢?我觉得蓝色比较特别,就选它吧

APP设计中最容易忽视的4个问题

作者分享了在App设计过程中容易忽视的几个问题,总结出来与大家分享.不知道在你在进行产品设计的时候,是否也入坑过? 低版本强制更新问题 这个问题是在产品不断迭代中容易忽视的问题,因为只有当开发人员不能做到低版本兼容的时候才会去想到"哦,应该提醒低版本的用户需要强制了". 为什么不能继续兼容低版本呢?总结了如下原因: · 一是老版本不支持现有的业务,出于公司业务上的强制推广: · 二是业务线的接口的更新不兼容老版本,导致老版本部分需求无法正常使用: · 三是从公司研发资源的考虑,老版过多

Web响应式设计中应避免的八大误区

开发一个带有响应式交互设计的网站变得非常有意义,因为其可以在不同的设备运行,因此,你可以节约针对不同平台开发不同网站的成本.但是,要做最大限度相应的网页设计,有些误区你应当避免. 不要优先为桌面版设计 开发者通常会犯的一个常见错误是,但他们设计网站时优先考虑桌面版,因为在这些人严重,将基于桌面版的网站转变为针对其他设备的响应式web设 计 是件很轻松愉快的事情.但是,这个发生在计划规划阶段的错误本身会变成一个非常巨大的问题.甚至会造成返工,当然,大量的错误也会蔓延出来. 然而,基于移动设备开发网

数字设计中的时钟与约束

最近做完了synopsys的DC workshop,涉及到时钟的建模/约束,这里就来聊聊数字中的时钟(与建模)吧.主要内容如下所示: ·同步电路与异步电路: ·时钟/时钟树的属性:偏移(skew)与时钟的抖动(jitter).延时(latency).转换(transition)时间: ·内部时钟: ·多路复用时钟: ·门控时钟: ·行波时钟: ·双沿时钟: ·Design Compiler中的时钟约束. 1.同步电路与异步电路 首先来谈谈同步电路与异步电路.那么首先就要知道什么是同步电路.什么是

产品设计中,场景很重要

今天笔者想简单的和你们聊聊产品设计中的场景问题.首先抛出一个问题,产品设计时是否需要考虑到用户的使用场景? 首先,假设我们需要考虑到用户的使用场景,那么我们再抛出另一个问题:为什么要考虑到用户的使用场景? 让我们换个角度想想这个问题,我们现在使用的最多的电子产品是什么?是手机.无论我们是在挤公交,还是走路,吃饭,甚至是上厕所,无时无刻,我们都在使用手机,那么问题又来了:我们在使用手机的什么?收发信息?接听电话?不,是聊天上网玩游戏,这些无非都要使用到APP.而APP的使用是有多场景化的,不像传统

游戏设计中的道德

最近一直在思考一些关于游戏设计方面的问题.入行已经两年了,以前跟所有刚入行的朋友一样,一直想着怎么从自己设计的游戏中赚钱.怎么让玩家为我的劳动成果买单.当然,我并不是说这样不好,因为只要形成一个良性的循环,优秀的游戏才会持续不断的出现,君不见,几年前国内还是有很多优秀的单机游戏的,但是由于破解的存在,以及中国人在几年前还有着"我都花钱买了电脑了,难道软件还要钱吗?更别提游戏了."这些众所周知的原因,现在中国的市场上已经很难看到新的优秀单机游戏的出现了,还好手游平台拓宽了国内的游戏市场,

产品设计中要考虑6大类优先级

设计中对优先级的把握就是要让我们能够将真正重要的功能/内容/元素放到突出的位置,以最多的界面资源去展示它们,而将次要的部分弱化,隐藏起来,在此的部分索性砍掉.这是产品在设计中最容易忽略的地方,也是初级产品在优化和设计用户界面时,容易犯的错误.至于和怎么排放按钮,整理功能的方法.我之前有篇文章已经写了. 删除.组织.隐藏.转移,四个方法做好产品的"简单化设计" .那我们在设计中要考虑哪些优先级呢?共分为以下6类. 1.用户优先级 我们都知道用户按照操作经验维度可以分为:主流用户群体/随意

iOS设计中不同屏幕适配的方法-登陆界面

在iOS的手机界面设计中,由于不同手机类型的手机的尺寸不同,那么在设计手机界面时就得对屏幕进行适配,这里就以登陆界面的设计为例简单说明下 实现屏幕适配的方法:(屏幕自动适配缩放) 效果: 下面就看下代码实现的过程: 1.在代理中实现的代码: AppDelegate.h // 登陆界面设计 #import <UIKit/UIKit.h> #define ScreenHeight [[UIScreen mainScreen]bounds].size.height//屏幕高度 #define Scr

高性能IO设计中的Reactor模式与Proactor模式

在高性能的IO设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作.在比较这两个模式之前,我们首先要搞明白几个概念.什么是阻塞和非阻塞?什么是同步和异步?同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知(异步的特点就是通知).而阻塞和非阻塞是针