内容课件教程_第1页
内容课件教程_第2页
内容课件教程_第3页
内容课件教程_第4页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

前 编写目 适用范 相关人 Androidaudiohal层介 Androidaudiohal层功能介 Androidaudiohal层功 源码结构介 Androidaudio框架图如图2所示 audio相关术语介 模块接口描 音频设备定 驱 函数接口说 Android 声音切 3G开发环境搭 蓝牙通 本文档目的是为了让开发者了解A31系统框架的Androidaudio适配层,能够在A31平台上开发新的方案。硬件平台A31软件平台exdroid4.1.1_r1-a31-v1.0及以上版本A31Android开发人员AndroidAndroidaudiohalAndroidaudiohal层是上层应用和linux驱动之间的纽带,功能是:负责响应上层命令,linuxalsa-liblinuxalsa-driver架构实现控制和数据传输。实现。应用程序只要调用Androidaudiohalalsa-lib提供API,即可以完成对底层音频硬Androidaudiohal请参见《A31平台音频模块开发说明文档》AndroidaudiohalAndroidaudiohal设置多种采样率格式(8khz,11.025KHz,12KHz,16KHz,22.05KHz,24KHz,32KHz,44.1KHz,48KHz,96KHz,192KHz);playback和record(全双工模式)数据传送支持resample(重采样)功3g通话功支持功 层代码存放在 目录,如图 所示1androidaudiohal1androidaudioAudioDriver:AdvancedLinuxSoundAdvancedAudioDistributionProfile(蓝牙音频传输高保真模式打的听筒耳 上加了一个话筒,即带话样本是记频数据最基本的单位,常见的有8位和16 该参数为1表示单声道,2则是立体声帧记录了一个声音单元,其长度为样本长度与通道数采样率每秒钟采样次数,该次数是针对帧而言音频设备一次处理所需要的帧数,对于音频设备的数据以及音频数据的储,都是以此enumaudio_devices//outputdevicesDEVICE_OUT_EARPIECE=0x1,//听筒DEVICE_OUT_SPEAKER0x2,//DEVICE_OUT_WIRED_HEADSET0x4,//DEVICE_OUT_WIRED_HEADPHONE0x8,//耳机(另一种耳机,双耳听筒)DEVICE_OUT_BLUETOOTH_SCO=0x10,//蓝牙SCO,用于语音通话DEVICE_OUT_BLUETOOTH_SCO_HEADSET=0x20,//蓝牙SCO耳机DEVICE_OUT_BLUETOOTH_SCO_CARKIT=0x40,//蓝牙SCO车载DEVICE_OUT_BLUETOOTH_A2DP=0x80,//蓝牙高保真设备,用于听音乐DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES0x100,蓝牙高保真耳机DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER=0x200,//蓝牙高保真扬声器DEVICE_OUT_AUX_DIGITAL=0x400,//辅助数字输出,DEVICE_OUT_ANLG_DOCK_HEADSET=0x800,//模拟底座DEVICE_OUT_DGTL_DOCK_HEADSET0x1000,//数字底座spdifDEVICE_OUT_DEFAULT=0x8000,}音频设备的切换是有AudioPolicyService管理的staticintstart_call(structtuna_audio_device ;成功返回0,失败返回-ENOMEM;-打开通话通路,如果上行和下行都可以打开返回 成功,否则返回失败staticvoidend_call(structtuna_audio_device ;无返回关闭start_call打开通话通路 ;无返回设置通intheadset_mic_on,int ;main_mic_on主麦headset_mic_on耳麦 副麦无返根据mic驱动的类型设置输入的音调staticvoidforce_all_standby(structtuna_audio_device ;无返回do_output_standydo_input_standyaudioinput等staticvoidselect_mode(structtuna_audio_device ;无返回如果输入/输出设置改变,先关闭输入/输出设备,然后打开要输入/输出的设staticvoidselect_output_device(structtuna_audio_device ;无返回根据策略设置输出设备的寄存器,设 eq,音量大小,策略设置 ;无返回根据策略设置输入设备的寄存器,音量大小,策略设置staticintstart_output_stream(structtuna_stream_out 输出驱动总指针,在adev结构体内成功返回0,失败返回-ENOMEM;-驱动,开androidlinux之前重采样的buffer:out->buffer 采样 bitsofsample 通道成功返回0,错误返回-EINVAL;-检验三个输入参数是否正 采样 bitsofsample 通道错误返回长0,否则返回inputcheck_input_parametersperiod_sizesAudioRecordbuffer大小,单位staticintdo_output_standby(structtuna_stream_out 输出驱动总指针,在adev结构体内关闭所output通路echo等staticintout_standby(structaudio_stream 输出驱动总指针,在adev结构体内返回状态调用do_output_standby,关闭所有output通路staticintout_set_parameters(structaudio_stream*stream,constchar 强制指针,其实是输出驱动总指针,在audioadrv结构体 设置参数字ret,是否有这个参数,本函数设置参数,本函数赋值audio驱动指针,可以供上层调staticuint32_tout_get_sample_rate(conststructaudio_stream 强制指针,其实是输出驱动总指针,在audioadrv结构体返回采样返回采样率,本函数赋值audio驱动指针,可以供上层调用staticchar*out_get_parameters(conststructaudio_stream*stream,constchar 强制指针,其实是输出驱动总指针,在audioadrv结构体 字符串指返回字符返回字符串,本函数赋值audio驱动指针,可以供上层调用staticssize_tout_write(structaudio_stream_out*stream,constvoid*buffer,size_tbytes) 强制指针,其实是输出驱动总指针,在audioadrv结构体 写指针的首 buffer返回写的长如果没有打开audio驱动,先打开audio驱动,如果需要重采样,进行重采样,如果需要进行staticssize_tin_read(structaudio_stream_in*stream,void*buffer,size_t 强制指针,其实是输出驱动总指针,在audioadrv结构

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论