MTK 音频播放器的实现
mtk,audioplayer

I89+ / I810 + 中音乐播放显示封皮目录1 ID3 版本介绍…………………………………………………………………..2 ID3V1 详细信息介绍………………………………………………………….3 ID3V2 详细信息介绍………………………………………………………….4 Fay文件介绍…………………………………………………………………..5 Bitmap 文件说明……………………………………………………………...6 解决Ram 受限问题的算法……………………………………………………1. ID3版本ID3 V1是由Eric Kemp在1996年发明的。
ID3 V1是一组附加在音乐文件后面的数据,它的长度是固定的128字节。
其中流派一共定义了79种,流行的播放软件Winamp则把它扩展到了125种,从Blues到Noise到Dance Hall,非常丰富,在许多支持ID3编辑的软件中都可以看到这个列表,但是国内用户似乎不太在意这个标记,大多数人甚至不知道自己的歌曲到底属于哪一个分类。
这些内容一共只有128个字节,并不算累赘。
由于附加在文件尾部,所以播放器不必考虑它的影响,即使不支持ID3标记也不会影响音乐的还原——某些很老的播放器确实可能会在播放到这里的时候发出噪音或者报错。
但是标记在文件尾部也会造成一个问题,那就是如果还没有读到文件末尾,我们什么信息也看不到。
对硬盘和闪存里面的歌曲这当然不是问题,但是如果你通过流媒体方式直接在网络上收听,就会发现它的缺陷了。
细心的人会注意到ID3V1.0没有包括曲目序号的定义,所以Michael Mutschler在1997年进行了改进,引入了版本1.1。
通过占用备注字段的最后两个字节,用一个00字节作标记,另一个字节改为序号,可以让ID3支持曲目编号了。
一个字节的空间让ID3 V1.1支持最高到255的曲目序号,考虑到一张唱片超过256个曲目的可能性极小,这个改进还是相当合理的。
MTK平台射频电路原理

射频收发信机(U602)
低通滤波器滤掉鉴相器输出的高频成分,以防止高频谐波对 VCO 电路的影响。在鉴相器中,参考信号与VCO 分频后的 信号进行比较。 VCO 是一个电压一频率转换装置,它将电压的变化(鉴相器 输出电压的变化)转化为频率的变化。VCO 输出的信号通常 是一路到其他功能电路;另一路回到分频器作取样信号 4)、压控振荡器(VCX0):同上描述。 5)、稳压器(Regulators):作为芯片内部的稳压器,将 输入电池电压转换成内部电路所需的工作电压。
表3:引脚排列及名称
图4:内部结构声表面滤Fra bibliotek器频率传输特性
声表面滤波器
射频收发信机(U602)
射频收发信机是射频电路的核心部件,主要完成射频信号 的调整与解调。内部结构主要包括5个方面: 1)、接收机(Receiver):提供射频信号的下行链路,将 射频信号通过放大、解调转变成IQ信号供基带芯片进行处 理。 接收机主要包括四频段(GSM850、GSM900、DCS1800、 PCS1900)差分输入低噪声放大器(LNA)(输入阻抗200欧 姆,通过LC网络与SAW FILTER匹配,增益控制动态范围 35dB)、2个RF正交混频器、1个集成信道滤波器(滤除 干扰、阻塞和镜像)、2个可编程增益放大器(PGA)、正 交第2混频器和末级低通滤波器。
天线、匹配网络、射频连接器
射频头顶 针插入时 将簧片断 开,信号 有综测仪 连接至主 板
无顶针插入时, 簧片处于接触状 态,信号由天线 接收至主板
图2:射频连接器内部结构及开关方式
双工滤波器(U601)
2、双工滤波器(U601): 双工滤波器是一种无源器件,内部包括发射滤波器和 接收滤波器,它们都是带通滤波器。作用是将接收射频 信号与发射射频信号分离,以防止强的发射信号对接收 机造成影响。由于发射信号总是比接收信号强,而强信 号对弱信号有抑制作用,会使接收电路被强信号阻塞, 使接收的弱信号被淹没,引起接收灵敏度下降。所以接 收滤波器就是阻止发射信号串人接收电平,当然,也有 一并拒收天线接收到的接收频段以外的信号;而发射滤 波器则拒绝接收频率段的噪声功率及发射调制信号。
MTK FM Radio

MTK FM Radio 模块
报告人:姚利 报告人: 2012.03.20
创建国际化的企业集团
目 录
一:FM 一:FM 简介 二: FM芯片及电路原理图讲解 FM芯片及电路原理图讲解 三:用GPIO口模拟I2C接口 三:用GPIO口模拟I2C接口 四:软件代码中的调试修改
创建国际化的企业集团
FM及收音机基本原理简介 及收音机基本原理简介: 一 FM及收音机基本原理简介:
创建国际化的企业集团
刚刚介绍了一些I2C总线的标准和条件,那么从软件上模拟I2C总线接口,需要参 考具体器件的时序图,根据器件的时序要求,用软件代码来模拟硬件时序。
创建国际化的企序要求
创建国际化的企业集团
在\mcu\custom\audio\ahong52_12864_11b_bb\RDA5800.c文件中 mcu\custom\audio\ahong52_12864_11b_bb\RDA5800.c文件中
创建国际化的企业集团
在\mcu\custom\audio\ahong52_12864_11b_bb\RDA5800.c文件中 mcu\custom\audio\ahong52_12864_11b_bb\RDA5800.c文件中
创建国际化的企业集团
MTK音频介绍_工信部南方分院

MTK音频介绍 MTK 音频介绍2010/05/20Copyright © MediaTek Inc.All rights reserved.目录1MTK音频调试方法和技巧2 MTK Speech精品介绍 3 MTK Audio外放精品介绍2MTK音频调试方法和技巧 MTK 音频调试方法和技巧Copyright © MediaTek Inc.All rights reserved.目录调试工具Meta介绍 音频调试顺序 频响调试方法 响度调试方法 语音增强参数调试方法4调试工具M 调试工具 Meta eta介绍 介绍Audio bufferVoice buffer SPK0Voice buffer SPK1External amplifierMicrophone PGACopyright © MediaTek Inc. All rights reserved. 5调试工具M 调试工具 Meta eta介绍 介绍6调试工具M 调试工具 Meta eta介绍 介绍7调试工具M 调试工具 Meta eta介绍 介绍8调试工具M 调试工具 Meta eta介绍 介绍AEC: Acoustic Echo Cancellation NLP Nonlinear NLP: N li Processing ES: Echo Suppression9调试工具M 调试工具 Meta eta介绍 介绍10调试工具M 调试工具 Meta eta介绍 介绍11CTA 音频调试顺序SFR/RFR SLR/RLR Side ToneDistortion Echo LossPass CTA TestIdle channel noise12频响调试方法▪ 按下图1-3步执行调试13频响调试方法14频响调试方法15频响调试方法然后再到仪器上去 测试,看看是否满 足要求,如果不满 足,再回到Meta调 整,反复这个过程, 直到满足为止16响度调试方法建议Mic增益不要超 过192,Speech最大 增益不要超过208, 如果音量不够可以通 过数字增益补偿17语音增强参数调试▪ 失真和回音主要调试NLP和ES– NLP调整的范围是0-256,越大对回音抑制越强,但是调的太大后 ,会引起小信号失真,不容易通过CTA的发送失真测试。
悠米 MTK6235音乐播放器 说明书

悠米悠米音乐音乐音乐播放器播放器 UM MusicFor MTK6235产品说明书深讯和科技有限公司深讯和科技有限公司2010年12月03日目录1简介31.1 概述 3 1.2 版本说明 32技术规格42.1 支持平台 4 2.2 支持格式 4 2.2 ROM占用 4界面5播放界面3播放3.1 运行 5 3.2 主界面 5 3.3 添加歌曲 6 3.4 封面切歌特效7 3.5 DJ打碟特效8 3.6 动态频谱特效9 3.7 主题换肤10 3.8 歌曲操作10 3.8 主菜单11 3.8 操作按键13 4列表界面14 3.9 歌曲列表14 3.10 列表操作15 3.9 自定义列表16 3.10 KTV选歌175 歌词界面186 搜索下载19 3.9 搜索歌曲19 3.10 下载管理207 均衡器界面218 桌面插件229 常见问题231简介1.1 概述UM Music悠米音乐,是由深讯和科技独立自主研发的手机音乐播放器。
独有酷炫界面、3D特效,奉献更优听觉享受之余,带来更佳视觉体验,打造更潮更时尚的音乐手机。
独有换肤功能,可根据手机本身的UI风格,快捷定制相应UI。
支持播放常见格式的音乐文件,更有网络乐库提供海量音乐下载。
专业运营团队支撑,即时歌词同步,尽享一站式音乐服务。
1.2 版本说明版本号:01.00.002技术规格:支持平台:2.1支持平台MTK6235 MTK6236:2.2支持格式支持格式:MP3、AMR、AAC 2.3 ROM占用338K3播放界面播放界面3.1 运行1.在手机主界面的应用列表中,选中“悠米音乐”的图标。
2.点击确定运行,将进入悠米音乐主界面。
3.2 主界面3.2.1 功能1.首次使用悠米音乐,主界面显示为默认的黑色主题,且默认显示封面切歌模式。
2.主界面上方为功能页切换区,可在5个功能项之间切换。
3.主界面下方为播放操作区,可对歌曲的播放状态进行切换。
展示界面展示3.2.2 界面1.功能界面Tab切换,从左到右依次为主界面、歌曲列表、歌词界面、搜索下载、均衡器界面,详情见后。
MTK音频参数调试方法

音频参数调试方法:
输入*#3646633#进入工程模式,进入第三项“音频”.
菜单中“正常”是普通使用不插耳机、不开免提地情况下地参数,
“LoudSp Mode”是通话时开免提地情况下地参数,
“Headset Mode”是插入耳机时地参数;
每个模式中又有6个具体参数:
“speech”是通话音量,在“正常”模式下调speech
调
应.
量3
不要超过208,凡调整speaker时参数不要超过148,调整mic 时参数不要超过232.
另外,如果mic、receiver音量还是达不到要求,可以在“音频”菜单地“语音增强”选项地“正常”下,调整参数7,参数7是由两位16进制数转换地10进制数,两位16进制数地前一位是receiver参数,后一位是mic参数.如:想给receiver增大6、mic增大11,则对应16进制数为6B,转
换为10进制数是107,那参数7中就输入107;再如想给receiver增大4、mic增大3,则对应16进制数为43,转换为10进制数是67,那参数7中就输入67.。
MTK新版音频调试工具使用指引

新版Audio tuning音频工具使用指引
1.MT6739,MT6750,MT6755,MT6763,MT6765平台都需要使用新版的音频调试工具才可以调试音频。
2.手机的软件版本需要是工程版本的。
3.手机开机后,插上USB,然后打开Audio tuning tool,点击连接。
4.连接后的界面如下:
5.界面介绍
6.例:调试3G通话下听筒音量;
7.例:调试2G通话的免提音量
8.例:更改录音的音量
9.例:更改播放器播放音乐的声音大小
10.音频参数导出
11.查看参数
参数导出的文件是打不开的,发给软件就可以了。
自己想查看的话,可以在文件后面加个TAR的后缀,然后解压成XML文件用notepad打开。
Writer: Patrick Hsueh SHEN ZHEN 2018-8-15。
MTK 音频和BMT简介

MTK 音频和BMT简介1 音频的通路有两种:i. T卡-->内存-->DSP解码-->PCM信号--> 模拟基带(ABB)--> [外部功放]-->输出ii. FM/TV chip-->模拟基带(ABB)--> [外部功放]-->输出注:由于耳机功率相对较小所以在驱动耳机时只需要ABB内部的一级放大即可,二在驱动speaker的时候需要较高的功率所以需要经过一级外部功放。
另外耳机的立体声是BB的两路信号(MP3_OUTR&MP3_OUTL)直接差分输出的而speaker只使用了其中的一路,另一路信号被舍弃。
由于音频信号经过数字和模拟两个阶段,所以对信号的放大可以分为数字增益和模拟增益。
其中模拟增益依靠硬件电路完成,范围内线性度好不容易失真;而数字增益则是通过软件完成,该方式线性度差容易出现失真等问题。
在Afe2.c文件中有函数void AFE_SetLevelVolume(kal_uint8 aud_func, kal_uint8 MaxAnalogGain, kal_uint8 step, kal_uint8 level)是通过改变模拟增益改变输出音量大小的函数。
其原理是更改ABB中可编程放大器的放大倍数来改变声音的大小。
而函数void AFE_SetOutputV olume( kal_uint8 aud_func, kal_uint8 volume1, kal_int8 digital_gain_index )则是通过调整数字增益来改变音量的。
Pcm编解码电路的任务是数字信号与模拟信号的转换Pcm缓冲区的数据处理:在event_callback里收到MEDIA_DATA_REQUEST后按如下流程处理。
a.PCM_Strm_Open;b. 调用setBuffer;c. 填数据; GetWriteBufferd. 调用WriteDataDone;e. 调用FinishWriteData;f. 播放play(mdi_audio_play_string_with_vol_path)2.音频对应的驱动主要有以下文件:Afe2.c------AFE_GetOutputVolume(),AFE_SetLevelVolume(),Afe_turnonextamplifier(),afe_turnonextamplfier();Afe.c------afe_switchextamplifier(char sw_on)等audcoeff.c:此文件要注意outputchanal的配置,配置错误将没有声音出现const unsigned char L1SP_MICROPHONE1 = L1SP_LNA_0;const unsigned char L1SP_MICROPHONE2 = L1SP_LNA_1;const unsigned char L1SP_SPEAKER1 = L1SP_BUFFER_0;const unsigned char L1SP_SPEAKER2 = L1SP_BUFFER_ST;const unsigned char L1SP_LOUD_SPEAKER = L1SP_BUFFER_ST_M|L1SP_BUFFER_EXT;;audcoeff_default.h: 定义语音增强参数;gpio_drv.c: 设置模式以及方向nvram_default_audio.c:配置各音阶的音量,每个参数里有“音量0~音量6”7个音量等级和16 Level Setting模拟增益调节GAIN_NOR_CTN_VOL //call wait toneGAIN_NOR_KEY_VOL //keypad volume;GAIN_NOR_MIC_VOL //microphone inputGAIN_NOR_GMI_VOL // fm radio soundGAIN_NOR_SPH_VOL // speech soundGAIN_NOR_SID_VOL //side toneGAIN_NOR_MED_VOL //music在l1audio.h中有如下定义。
MTK音频整改方案

MTK平台音频改善方案一、针对MT6225平台通话音量普遍偏小问题的实验和验证周期我司MT6225平台各机型在实际使用中通话音量普遍偏小和音质不好,频响曲线没有优化和结构密封性不好是我认为导致此问题的主要原因。
1、为进一步优化频响曲线,验证频响曲线优化前后音量改善的效果,以M988为例,我们要去MTK深圳公司去做一次音频测试实验,5月31号之前完成.测试方法:1):测试原始SFR,RFR频响曲线下各增益值的大小,记录其频响曲线和mic,speech等项的增益值;2):调整SFR,RFR频响曲线在模板范围以内,记录其频响曲线和在原ADC值下的mic,speech等项的增益值;增益值包括正常、免提,耳机三种状态下的参数:Speech:调整各状态下听筒音量(范围为0-255)Key Tone:调整各状态下按键音量(范围为0-255)Melody:调整各状态下铃声音量(范围为0-255)FM radio:调整耳机模式下FM音量(范围为0-255)Microphone:调整各状态下麦克风的音量(范围为0-255)Side Tone:调整侧音的音量(范围为0-255)测试目的:验证调整SFR,RFR前后mic,speech等增益值是否有改善。
测试结果分析:如果增益值有改善,我们会把此音频参数导入多几台机器,让质量部验证改善结果。
但是增益值的变化只是表明音量的大小变化,并不能说明音质的改善,具体的音质目前业界没有可量化的标准,我们主要以质量部同事的主观感官来衡量,所以在测试的过程中我们可能还要对各增益值做出适当调整。
2、结构的密封性不好会直接导致通话回音大,喇叭破音,声音过尖等问题,有时用软件很难将音频优化到可以接受的地步。
所以在结构设计时一定要注意mic,rec,spk音腔的密封性,同时要满足各尺寸电声器件对声腔容积和出声孔的要求。
3、因音频的改善效果需质量保障部配合测试,又音频效果的验证需要在多场合、多状态下的不断验证,所以整个试验于7月15号之前完成.二、针对MTK平台各机型通话电流声问题的实验和验证周期针对MTK平台各机型在研发初期均存在电流声问题,为了后续机型能有效地屏蔽电流声的干扰,节约研发周期,现对电流声产生的原因分析如下:1、目前状态电流声分为正常通话电流声,免提通话电流声,耳机通话电流声;MTK平台各机型现存主要问题为正常通话主、被叫方均有电流声,免提通话手机方有电流声;2、原因分析及解决措施:GSM为TDMA模式,每隔8个时隙发射一个Burst,即RF PA打开一次,周期为4.6ms,因为RF PA打开时需要很大的电流,极容易引起整个系统电压(VBAT,mic 偏置电压等)不稳定,频率为217Hz,PA打开发射的高频信号也极易耦合进音频电路被误放大解调,217Hz正好在人耳可接受范围,所以会听到很明显的固定频率干扰音,也就是我们所说的电流声.现对正常通话和免提通话电流声分析如下(具体位号如下图):1):正常通话干扰mic偏置电压(5.20—5.31)原因查找方法:用示波器测量micbiasp,micbiasn处波形是否受到217Hz信号干扰解决方法: micbiasp,micbiasn走线包地,线宽满足6mile.加大C204位电容的容值.高频信号耦合进mic电路被放大(6.1—6.10)原因查找方法:用CMU200来确定,或者实际通话过程中对方听到明显电流声解决方法:1.先用综测仪确定产生电流声的频段为GSM还是DCS,如果是GSM段,则在24pF到33pF之间调整C11和C12的值,DCS段受干扰, 则在6pF到12pF间调整C11和C12的值,同时可以调试L13,L14位的磁珠,选择在受干扰频段频响较好的磁珠2.把mic做双绞线方式,或者更换其他厂家mic测试3.前期结构评审时麦克风位置一定要尽量远离天线,布板mic线一定走差分(等长等间距),尽量做到左右上下包地处理,组装时mic线作双绞线能有效抑制电流声的干扰2):免提通话CPU到audio PA之间的电路被干扰;(6.11—6.30)原因查找方法:用示波器测量audio PA输入端波形是否叠加有217Hz信号;去掉audio PA,耦合综测仪,在免提状态下如电流声消失,则确定为PA输入端受干扰;解决办法:1、设计初期在audio PA输入端串磁珠,并电容,滤除高频信号的干扰;2、增大从MT6225输出音频信号的增益,即增大输入端的信噪比,同时降低audio PA的放大增益;3、PA输入端的走线一定做差分,尽量上下左右均包地audio PA电源受干扰(7.1—7.15)原因查找方法:用示波器测量PA供电波形是否受217Hz干扰;或者把PA单独用外接电源供电,如果电流声消失,确定为电源受干扰。
移动叔叔-MTK工程模式调大外放铃声音量

打开拨号界面,输入*#*#3646633#*#*,即可进入工程模式,如下图。
1.点击audio项目进入,即可调节音量值
2.Normal Mode(正常模式),Headset Mode(耳机模式),Loudspeaker Mode(扬声器/外放声音模式)
进入LoudSpeaker Mode(这个是外放的声音即铃声的选项)
3、点第三行“level0”右边的黄色小三角,选择为“level6”(即最大一级音量,0为静音,1-6为可调音量级)
4、将Value Is0-255位置,右边的数值填写最大,即255,然后按一下Set确认(提示,如有破音请减少数值)
5、Max Vol.0-160位置右边的数值填写最大,即160,然后按一下Set确认(提示,如有破音请减少数值)
备注:Value Is的最大值是255,Max Vol的最大值为160,千万不能超过他们,并不是无限大的!
确认后均弹出提示框set audio volume succeeded,完成后返回。
6、调整耳机音量选择Headset Mode调整方法同上,不需要调的跳过。
7、调整好请以后重启手机!
本教程初稿由屠龙刀再现2011-12-19制作
忘记月亮2012-8-16更新修改
移动叔叔论坛。
ATmega16控制蜂鸣器播放音乐

N6,32,/**/H3,24,N6,8,/**/H2,24,H3,4,H2,4,/**/H1,16,H1,4,N6,4,H1,4,H2,4,/**/
{
unsigned i;
for(i=1;i<1714;i++);
}
void delay_ms(unsigned int n)
{
unsigned int i;
for(i=0;i<n;i++)
{
delay_1ms();
}
}
音乐数据
这段是《孤星独吟》,自己对着简谱翻的
*************************************/
unsigned int song[]=
{
N6,12,N7,4,H1,8,H2,4,H3,4,/**/H2,32,/**/N7,12,N6,4,N5,8,N3,4,N5,4,/**/
#define H5 61709 //1568
#define H6 62127 //1760
#define H7 62500 //1976
#define HH1 62669 //2093
#define O 0 //休止符
/************************************
#include <iom16v.h>
#include <macros.h>
//计时值=65536-系统时钟/分频系数/音调频率/2
MT1389超级单芯片DVD播放机电路分析(图)

联发科技公司(Mediatek简称MTK)第三代整合型多解码超级单芯片(MT1389),被万利达(DVP-811/815/816/827/856/881/869型等)、新科(DVP-768型与DVP-8911型等)、步步高(DV991/993/995/997型等)、夏新(DVD-828型等)、先科及众多其他品牌DVD机广泛采用,市场拥有量极大。
一、MT1389超级单芯片DVD播放机电路组成该系列DVD播放机以MT1389为核心,其前端采用超薄型/双吸入式DVD机芯,后端配用一只6通道音频DAC芯片(CE2746/CS4362/PCM1606等)。
并采用嵌入式CPU控制系统的电路程式构成,其组成电路框图如图1所示。
二、MT1389超级单芯片DVD播放机数字伺服处理电路该系列机的数字伺服处理电路,主要由内置有误差检测电路和数字伺服(DSP)控制电路的MT1389、伺服驱动电路BA5954及机芯中各执行部件等构成一个闭环的自动控制系统,如图2所示。
在播放期间对聚焦、循迹、进给、主轴旋转进行自动控制。
1.聚焦伺服控制过程在播放过程中,激光头检测的电信号(A、B、c、D),从⑧~11脚送入MT1389内的聚焦误差检测电路,将其失焦量(FE)检测出来,再经补偿后送入MT1389内置的伺服DSP,先进行数字化处理,再进行运算,并处理成聚焦伺服控制信号(FCO)从42脚输出,经低通滤波器后,送入BA5954的①脚内驱动电路处理成与聚焦驱动电流,分别从13、14脚输出送入聚焦线圈,以调整物镜聚焦深度校正激光识读光点,确保准确读取光盘信息。
2.循迹与进给伺服控制电路激光器同时还将反映物镜跟踪信息纹轨状况的电信号,从②~⑤脚送入MT1389内的DVD相位检测器或CD循迹误差检测器,将偏离量(TF)检测出来,再经补偿处理成模拟量的循迹误差信号,送入MT1389内置的伺服DSP,先进行数字化处理,再进行运算并处理成循迹伺服控制信号和进给伺服控制信号(TRO/FMO),分别从41、38脚输出,经低通滤波器后送入BA5954 26、23脚内驱动电路,经电平变换与驱动放大后,其循迹伺服驱动电压分别从15、16脚输出,其进给电机驱动电压分别从17、18脚输出,通过物镜与进给机构去校正激光识读光点始终投射在光盘的纹轨上。
基于MTK平台的音响系统设计

基于MTK平台的音响系统设计沈 庆,芮守婷宁波麦博韦尔移动电话有限公司,浙江 奉化 315500摘要:音响系统在家庭日常、市场消费以及会议室中的应用越来越广泛,与我们的生活有着密切的联系。
音响系统由硬件系统、软件系统、音箱组成。
其中,硬件系统主要包括DAC转换器和音频放大器;软件系统主要包括喇叭通路的搭建和GPIO的使能;音箱是音响系统的“喉舌”,平台端输出的声音最终还是要通过音箱来表现,音响的Audio playback的优劣要靠音箱来表达,所以音箱同样有着举足轻重的作用。
文章以MT6260作为控制芯片,介绍从器件选型、原理图设计、软件通路搭建、结构设计到音响性能测试的整个过程,旨在设计一款功能简单、实用、成本低廉、音质优响度大的便携式音响,供个体商户、超市等用户群体收付款时使用。
关键词:音响系统;MTK平台;差分输入;密封式音箱中图分类号:TN912.21 系统设计总述音响系统由控制模块MT6260、功率放大器、喇叭单元组成。
其中,控制模块MTK6260芯片负责音频信号编解码、DAC转换、模拟信号输出、GPIO口控制的工作。
芯片内部集成了用于音频和语音频段的高分辨率立体声D/A转换器。
同时支持AMR和HE-AAC编解码器,AMR编解码器用来自适应地优化语音和音频的质量,HE-AAC编解码器实现以低比特率提供CD品质的音频效果。
编解码器和D/A转换器协同工作,共同为音响系统提供优质的信号源[1]。
ft2820音频放大器负责功率放大功能,将MT6260输出小信号给到放大器,放大器通过双Flying电容的升压整流,将4 V电压提升到6 V。
通过提高输出电压的摆幅,使传统单个锂电池供电的设备也可以发出更大的声音。
6 V电压给后级的Class-D 功率放大器供电,将输入信号进行24倍的放大。
喇叭单元包括结构腔体和喇叭单体,其中结构腔体对于音质的优劣影响很大。
同一个喇叭播放同一个音源在不同声腔中播放效果的音色可能相差较大,有些比较干涩,有些却比较动听,合理的音腔设计可以使铃声更加悦耳。
MTK 音频播放器的实现

Mtk 6225上的audio player 的结构整体上可以分为三层, 最上面的应用程序界面层, 中间的audio 播放api层, 和底层的编解码库及音频驱动. 其结构图大致如下所示:由上图可以看出,整个调用层次较深. 我们分别来学习个层.1: MMI Task 层在该层 audio player 模块实现了播放器程序, 其中主要包括对界面视图的实现, 界面逻辑的处理以及调用MID模块的接口,实现音频操作. 在学习其具体的实现细节上, 可以按view 和 model+control的简化MVC模式来看, 包含与显示有关的screen操作显示部分, 处理消息的msghandler部分以及主的程序逻辑及按键处理部分. MTK平台对事件的处理是通过callback function方式, 所以程序的流程不是顺序的, 事件的发生将导致相应的callback被调用, 从而触发整个audio player的一次响应. 需要注意的是,在每个不同的界面对相同事件的处理callback函数可能有所不同, 这是在创建,进入该界面时设定的. 该模块的接口比较复杂,为了提供对BT的统一接口, 有两层的播放接口,如mmi_audply_play 和 mmi_audply_do_play_action(). 整个模块的接口不够清晰, 有些庞杂和混乱. 模块的显示部分使用控件实现,较为简单, 可进一步参考控件的实现细节以了解平台的显示子系统, 对播放文件列表的管理是通过文件操作实现的,具体可参见audioplayerplaylist部分.MDI层和Media接口层,这两个部分可看作一个整体, 是MMI层对媒体操作的封装. 它包括了多个部分的接口,在此我们只看audio接口部分,其他模块如video,fm的接口类似. Audio接口包括了播放,暂停,停止,获取播放时间,获取播放频谱等. 这些接口基本上都是按同步处理方式实现的. 比如播放接口:MDI层接口是mdi_result mdi_audio_play_file(void *file_name, U8 play_style,void *cache_p, mdi_callback handler);调用的Media接口为:kal_int32 media_aud_play_file(module_type src_mod_id, void*file_param){aud_result = MED_RES_OK;aud_send_play_file_req(src_mod_id, file_param);AUD_WAIT_EVENT(AUD_EVT_PLAY);return aud_result;}其中的aud_send_play_file_req(src_mod_id, file_param调用msg_send_ext_queue(ilm_ptr);向media task的external Message queue 发送播放请求消息.其中AUD_WAIT_EVENT(AUD_EVT_PLAY);定义如下:#define AUD_WAIT_EVENT(evt_) do{kal_uint32retrieved_events;kal_retrieve_eg_events(aud_context_p->aud_event,(evt_),KAL_OR_CONSUME, &retrieved_events, KAL_SUSPEND); }while(0)等待AUD_EVT_PLAY事件的到达. 通过事件实现了同步.2: Media Task层, media task启动后, med_task_main在获得外部消息后,调用med_main((void*)¤t_ilm);进行消息处理, med_main会根据消息类型再进行一次分发 ,audio消息会被分发给void aud_main(ilm_struct *ilm_ptr)来进行处理. 根据相应的请求消息,aud_main调用相应的handler函数进行处理. 如对播放请求消息MSG_ID_L4AUD_MEDIA_PLAY_REQ的处理函数如下:void aud_media_play_req_hdlr(ilm_struct *ilm_ptr){…. // 省略其他分支处理,及错误处理// step 1::释放冲突资源, 设置播放的参数等// step 2: 根据格式选择播放函数switch (aud_context_p->current_format){...case MED_TYPE_MMF:result = aud_melody_play_by_name(msg_p->file_name,msg_p->play_style, 0);break;…case MED_TYPE_M4A:aud_context_p->source_type = AUD_FILE;aud_context_p->play_style = msg_p->play_style;result = aud_media_play_file_stream(msg_p->file_name,msg_p->play_style,1,KAL_FALSE,msg_p->cache_p);break;case MED_TYPE_3GP:case MED_TYPE_MP4:aud_context_p->source_type = AUD_FILE;aud_context_p->play_style = msg_p->play_style;result = aud_media_play_audio_track_in_video(msg_p->file_name,msg_p->play_style,KAL_TRUE,KAL_FALSE);break;default:result = MED_RES_INVALID_FORMAT;break;}// step 3: 开始播放后处理aud_set_result((kal_int32) result); // 设置播放操作返回结果AUD_SET_EVENT(AUD_EVT_PLAY); // 设置AUD_EVT_PLAY事件if (aud_context_p->src_mod != MOD_MMI) //播放请求是否来自MMI task {aud_send_media_play_cnf(result); //发送播放反馈消息到请求模块}3:L1Audio module层, 该层包括了底层的解码库和对更底层的驱动程序,及音频硬件的调用和处理. 其中包括了对具体的音频格式的处理接口,如对AAC文件的接口有:MHdl *AAC_Open(void(*handler)( MHdl *handle, Media_Event event ), STFSAL *pstFSAL, void *param)Media_Status aacMFPlayFile( MHdl *hdl );Media_Status aacMFResumeFile( MHdl *hdl );Media_Status aacMFPause( MHdl *hdl );Media_Status aacMFStop( MHdl *hdl );....一整套的接口. 在上面的第二层的讲解中的play请求的处理函数中, 如果待处理的文件格式是AAC, 则实现上它会调用AAC_Open接口来获得与播放操作相关的所有函数接口. 为此后的其他操作提供处理函数.。
我在MTK平台下调试音频ALSA

我在MTK平台下调试⾳频ALSA#硬件原理图因为是我们公司的项⽬,我就不能把完整的原理图给出来。
因为两个MIC不涉及机密,跟MTK的公版是⼀样的。
可以给出来⼤家看看。
这个MIC是⼀个数字MIC,直接输出的就是数字信号,接在MTK8167S的⼀个数字通路上。
#MTK⾳频通路框图嵌⼊式设备和平台关系很⼤,所以做什么平台⼀定要弄清楚平台设备的框图。
MTK8167s⾳频的框图如下不同平台的差异也有不同,不要硬套,需要确认清楚。
图⽚上看到很多通路没?这些通路⾥⾯的东西都是需要根据tinymix来设置的,当然也有其他办法设置。
#通过tinymix配置通路我们正常的tinymix查看配置39 BOOL 1 O00 I05 Switch Off40 BOOL 1 O00 I07 Switch Off41 BOOL 1 O01 I06 Switch Off42 BOOL 1 O01 I08 Switch Off43 BOOL 1 O02 I05 Switch Off44 BOOL 1 O02 I06 Switch Off45 BOOL 1 O03 I05 Switch On46 BOOL 1 O03 I07 Switch On47 BOOL 1 O03 I10 Switch Off48 BOOL 1 O04 I06 Switch On49 BOOL 1 O04 I08 Switch On50 BOOL 1 O04 I11 Switch Off51 BOOL 1 O05 I00 Switch On52 BOOL 1 O05 I03 Switch Off53 BOOL 1 O05 I05 Switch Off54 BOOL 1 O05 I07 Switch Off55 BOOL 1 O05 I15 Switch Off56 BOOL 1 O06 I01 Switch On57 BOOL 1 O06 I04 Switch Off58 BOOL 1 O06 I06 Switch Off59 BOOL 1 O06 I08 Switch Off60 BOOL 1 O06 I16 Switch Off61 BOOL 1 O09 I00 Switch Off62 BOOL 1 O09 I03 Switch On63 BOOL 1 O10 I01 Switch Off64 BOOL 1 O10 I04 Switch On65 BOOL 1 O11 I02 Switch On66 BOOL 1 O11 I05 Switch Off67 BOOL 1 O13 I15 Switch Off68 BOOL 1 O14 I16 Switch Off69 ENUM 1 AIN Mux INT ADC70 ENUM 1 DAIBT Mux MRG71 BOOL 1 I2S O03_O04 Switch Off72 BOOL 1 INT ADDA O03_O04 Switch On73 BOOL 1 MRG BT O02 Switch On74 BOOL 1 PCM0 O02 Switch Off75 ENUM 1 Left PGA Mux OPEN76 ENUM 1 Right PGA Mux OPEN77 ENUM 1 AIF TX Mux Digital MIC78 ENUM 1 HPOUT Mux OPEN79 ENUM 1 LINEOUT Mux OPEN80 BOOL 1 DMIC Data Gen Switch Off81 BOOL 1 AMIC Data Gen Switch Off82 BOOL 1 SDM Tone Gen Switch Offaiv8167sm3_bsp:/ #⾥⾯已经有很多开关了,我们要做的时候通过tinymix把in 和 out对接起来。
MTK音频和BMT简介

MTK音频和BMT简介1 音频的通路有两种:i. T卡-->内存-->DSP解码-->PCM信号--> 模拟基带(ABB)--> [外部功放]-->输出ii. FM/TV chip-->模拟基带(ABB)--> [外部功放]-->输出注:由于耳机功率相对较小所以在驱动耳机时只需要ABB内部的一级放大即可,二在驱动speaker的时候需要较高的功率所以需要经过一级外部功放。
另外耳机的立体声是BB的两路信号(MP3_OUTR&MP3_OUTL)直接差分输出的而speaker只使用了其中的一路,另一路信号被舍弃。
由于音频信号经过数字和模拟两个阶段,所以对信号的放大可以分为数字增益和模拟增益。
其中模拟增益依靠硬件电路完成,范围内线性度好不容易失真;而数字增益则是通过软件完成,该方式线性度差容易出现失真等问题。
在Afe2.c文件中有函数void AFE_SetLevelVolume(kal_uint8 aud_func, kal_uint8 MaxAnalogGain, kal_uint8 step, kal_uint8 level)是通过改变模拟增益改变输出音量大小的函数。
其原理是更改ABB中可编程放大器的放大倍数来改变声音的大小。
而函数void AFE_SetOutputVolume( kal_uint8 aud_func, kal_uint8 volume1, kal_int8 digital_gain_index )则是通过调整数字增益来改变音量的。
Pcm编解码电路的任务是数字信号与模拟信号的转换Pcm缓冲区的数据处理:在event_callback里收到MEDIA_DATA_REQUEST后按如下流程处理。
a.PCM_Strm_Open;b. 调用setBuffer;c. 填数据; GetWriteBufferd. 调用WriteDataDone;e. 调用FinishWriteData;f. 播放play(mdi_audio_play_string_with_vol_path)2.音频对应的驱动主要有以下文件:Afe2.c------AFE_GetOutputVolume(),AFE_SetLevelVolume(),Afe_turnonextamplifier(),afe_turnonextamplfier();Afe.c------afe_switchextamplifier(char sw_on)等audcoeff.c:此文件要注意outputchanal的配置,配置错误将没有声音出现const unsigned char L1SP_MICROPHONE1 = L1SP_LNA_0;const unsigned char L1SP_MICROPHONE2 = L1SP_LNA_1;const unsigned char L1SP_SPEAKER1 = L1SP_BUFFER_0;const unsigned char L1SP_SPEAKER2 = L1SP_BUFFER_ST;const unsigned char L1SP_LOUD_SPEAKER = L1SP_BUFFER_ST_M|L1SP_BUFFER_EXT;;audcoeff_default.h: 定义语音增强参数;gpio_drv.c: 设置模式以及方向nvram_default_audio.c:配置各音阶的音量,每个参数里有“音量0~音量6”7个音量等级和16 Level Setting模拟增益调节GAIN_NOR_CTN_VOL //call wait toneGAIN_NOR_KEY_VOL //keypad volume;GAIN_NOR_MIC_VOL //microphone inputGAIN_NOR_GMI_VOL // fm radio soundGAIN_NOR_SPH_VOL // speech soundGAIN_NOR_SID_VOL //side toneGAIN_NOR_MED_VOL //music在l1audio.h中有如下定义。
MTK 音频应用指南

MTK Audio Application Note
Preliminary Information User Manual
Legal Disclaimer
BY OPENING OR USING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS (“MEDIATEK SOFTWARE”) RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON AN “AS-IS” BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER’S SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF LAWS PRINCIPLES.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Mtk 6225上的audio player 的结构整体上可以分为三层, 最上面的应用程序界面层, 中间的audio 播放api层, 和底层的编解码库及音频驱动. 其结构图大致如下所示:
由上图可以看出,整个调用层次较深. 我们分别来学习个层.
1: MMI Task 层
在该层 audio player 模块实现了播放器程序, 其中主要包括对界面视图的实现, 界面逻辑的处理以及调用MID模块的接口,实现音频操作. 在学习其具体的实现细节上, 可以按view 和 model+control的简化MVC模式来看, 包含与显示有关的screen操作显示部分, 处理消息的msghandler部分以及主的程序逻辑及按键处理部分. MTK平台对事件的处理是通过callback function方式, 所以程序的流程不是顺序的, 事件的发生将导致相应的callback被调用, 从而触发
整个audio player的一次响应. 需要注意的是,在每个不同的界面对相同事件的处理callback函数可能有所不同, 这是在创建,进入该界面时设定的. 该模块的接口比较复杂,为了提供对BT的统一接口, 有两层的播放接口,如
mmi_audply_play 和 mmi_audply_do_play_action(). 整个模块的接口不够清晰, 有些庞杂和混乱. 模块的显示部分使用控件实现,较为简单, 可进一步参考控件的实现细节以了解平台的显示子系统, 对播放文件列表的管理是通过文件
操作实现的,具体可参见audioplayerplaylist部分.
MDI层和Media接口层,这两个部分可看作一个整体, 是MMI层对媒体操作的
封装. 它包括了多个部分的接口,在此我们只看audio接口部分,其他模块如video,fm的接口类似. Audio接口包括了播放,暂停,停止,获取播放时间,获取播放频谱等. 这些接口基本上都是按同步处理方式实现的. 比如播放接口:
MDI层接口是
mdi_result mdi_audio_play_file(void *file_name, U8 play_style,
void *cache_p, mdi_callback handler);
调用的Media接口为:
kal_int32 media_aud_play_file(module_type src_mod_id, void
*file_param)
{
aud_result = MED_RES_OK;
aud_send_play_file_req(src_mod_id, file_param);
AUD_WAIT_EVENT(AUD_EVT_PLAY);
return aud_result;
}
其中的aud_send_play_file_req(src_mod_id, file_param调用
msg_send_ext_queue(ilm_ptr);
向media task的external Message queue 发送播放请求消息.
其中AUD_WAIT_EVENT(AUD_EVT_PLAY);定义如下:
#define AUD_WAIT_EVENT(evt_) do{
kal_uint32
retrieved_events;
kal_retrieve_eg_events(aud_context_p->aud_event,
(evt_),
KAL_OR_CONSUME, &retrieved_events, KAL_SUSPEND); }while(0)
等待AUD_EVT_PLAY事件的到达. 通过事件实现了同步.
2: Media Task层, media task启动后, med_task_main在获得外部消息后,调
用med_main((void*)¤t_ilm);进行消息处理, med_main会根据消息类型再进行一次分发 ,audio消息会被分发给void aud_main(ilm_struct *ilm_ptr)来进行处理. 根据相应的请求消息,aud_main调用相应的handler函数进行处理. 如对播放请求消息MSG_ID_L4AUD_MEDIA_PLAY_REQ的处理函数如下:
void aud_media_play_req_hdlr(ilm_struct *ilm_ptr)
{
…. // 省略其他分支处理,及错误处理
// step 1::释放冲突资源, 设置播放的参数等
// step 2: 根据格式选择播放函数
switch (aud_context_p->current_format)
{
...
case MED_TYPE_MMF:
result = aud_melody_play_by_name(msg_p->file_name,
msg_p->play_style, 0);
break;
…
case MED_TYPE_M4A:
aud_context_p->source_type = AUD_FILE;
aud_context_p->play_style = msg_p->play_style;
result = aud_media_play_file_stream(
msg_p->file_name,
msg_p->play_style,
1,
KAL_FALSE,
msg_p->cache_p);
break;
case MED_TYPE_3GP:
case MED_TYPE_MP4:
aud_context_p->source_type = AUD_FILE;
aud_context_p->play_style = msg_p->play_style;
result = aud_media_play_audio_track_in_video(
msg_p->file_name,
msg_p->play_style,
KAL_TRUE,
KAL_FALSE);
break;
default:
result = MED_RES_INVALID_FORMAT;
break;
}
// step 3: 开始播放后处理
aud_set_result((kal_int32) result); // 设置播放操作返回结果AUD_SET_EVENT(AUD_EVT_PLAY); // 设置AUD_EVT_PLAY事件
if (aud_context_p->src_mod != MOD_MMI) //播放请求是否来自MMI task {
aud_send_media_play_cnf(result); //发送播放反馈消息到请求
模块
}
3:L1Audio module层, 该层包括了底层的解码库和对更底层的驱动程序,及音频硬件的调用和处理. 其中包括了对具体的音频格式的处理接口,如对AAC文件的接口有:
MHdl *AAC_Open(void(*handler)( MHdl *handle, Media_Event event ), STFSAL *pstFSAL, void *param)
Media_Status aacMFPlayFile( MHdl *hdl );
Media_Status aacMFResumeFile( MHdl *hdl );
Media_Status aacMFPause( MHdl *hdl );
Media_Status aacMFStop( MHdl *hdl );
....
一整套的接口. 在上面的第二层的讲解中的play请求的处理函数中, 如果待处理的文件格式是AAC, 则实现上它会调用AAC_Open接口来获得与播放操作相关的所有函数接口. 为此后的其他操作提供处理函数.。