audio
文章平均质量分 81
ekenlinbing
这个作者很懒,什么都没留下…
展开
-
Android多媒体支撑库OpenCore视频硬件加速(转)
=============================================================今天在看opencore的代码时,在函数PlayerDriver::handleSetVideoSurface中有以下内容:// attempt to load device-specific video MIO if (mLibHandle != NULL转载 2013-03-02 16:14:11 · 418 阅读 · 0 评论 -
Android Audio AudioEffect
在看AudioSessionId相关代码的时候了解到,共用一个AudioSessionId的AudioTrack和MediaPlayer会共用一个AudioEffect。今天就来看看AudioEffect是个什么东东。看这个类的目的,主要是为了搞清楚AudioEffect是个什么东东。打算重点看看类的介绍及其构造函数上。*******************************原创 2012-05-25 14:41:36 · 1093 阅读 · 0 评论 -
Android Audio AudioTrack::write函数
在最初的代码testWriteByte中,创建完AudioTrack对象后,调用了AudioTrack对象的write函数实现播放。今天就来看看write函数的实现。*****************************************源码************************************************* public int原创 2012-05-25 14:39:33 · 1272 阅读 · 0 评论 -
Android Audio AudioStreamOutALSA::write函数
在看音频数据是怎么写的时候,在MixerThread的threadloop函数中,有以下代码完成了往硬件写数据:int bytesWritten = (int)mOutput->write(mMixBuffer, mixBufferSize);mOutput来历:函数AudioFlinger::openOutput中创建了一个MixerThread对象,并将前面调用mAudio原创 2012-05-25 14:37:56 · 1008 阅读 · 0 评论 -
AudioFlinger分析
一 目的本文承接Audio第一部分的AudioTrack,通过AudioTrack作为AF(AudioFlinger)的客户端,来看看AF是如何完成工作的。在AT(AudioTrack)中,我们涉及到的都是流程方面的事务,而不是系统Audio策略上的内容。WHY?因为AT是AF的客户端,而AF是Android系统中Audio管理的中枢。AT我们分析的是按流程方法,那么以AT为切入点的话,A原创 2012-05-25 14:34:55 · 1047 阅读 · 0 评论 -
Audio Policy 分析
一 目的上回我们说了AudioFlinger(AF),总感觉代码里边有好多东西没说清楚,心里发毛。就看了看AF的流程,我们敢说自己深入了解了Android系统吗?AudioPolicyService(APS)是个什么东西?为什么要有它的存在?下层的Audio HAL层又是怎么结合到Android中来的?更有甚者,问个实在问题:插入耳机后,声音又怎么从最开始的外放变成从耳机输出了?调节音量的时候原创 2012-05-25 14:33:54 · 1995 阅读 · 0 评论 -
Android AudioFlinger
AudioFlinger是Android音频系统的两大服务之一,另一个服务是AudioPolicyService,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。本文主要介绍AudioFlinger,AudioFlinger向下访问AudioHardware,实现输原创 2012-05-25 14:31:22 · 481 阅读 · 0 评论 -
Android Audio AudioHardwareALSA::openOutputStream函数
发现以前写的东西,对调用函数的展开放在了函数的前面,导致不方便找到原来代码及设置的函数参数。以后打算稍作改动,把对被调函数的展开放在原代码的后面,这样看起来应该方便些。闲言少叙,跳入代码。前两天看AudioTrack创建的时候,我们看到了AudioHardwareALSA::openOutputStream,并没有继续往下看。今天就看看函数AudioHardware原创 2012-05-25 14:28:45 · 780 阅读 · 0 评论 -
Android音量调节的实现(RingtoneManager和RingerVolumePreference)
Android音量调节的实现,分两种情况说明,一种是在settings的音量设置界面,按下侧键进行调节;另一种是在非settings界面,按下侧键进行音量调节。这两种调节方式的实现不一样,分别操作的是两个不同的音量SeekBar。下面,分别进行分析:一. 在settings的音量设置界面,按下侧键进行调节:在settings的音量设置界面,按下侧键回有音量的调节,同时,会翻译 2012-05-25 13:50:46 · 734 阅读 · 0 评论 -
AudioTrack分析
第一部分 AudioTrack分析一目的本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如Thread,MemoryBase等。分析的流程是:l 先从API层对应的某个类开始,用户层先要有一个简单的使用流程。l 根据这个流程,一步步进入到JNI,服务层。在此过程中原创 2012-05-25 14:35:38 · 430 阅读 · 0 评论 -
Android Audio stream type
在看AudioTrack代码的时候,我们看到,要创建一个AudioTrack对象,需要指定一个StreamType。今天我们只把stream type相关的代码抽取出来,详细看看stream type相关的东东。java层的代码就不看了。从函数android_media_AudioTrack_native_setup开始说起。static intandroid_media_Au原创 2012-05-25 14:40:38 · 914 阅读 · 0 评论 -
Android Audio getAudioSessionId
在我们学习AudioTrack对象的创建过程时,了解到,创建一个AudioTrack对象,必须指定一个SessionId,并与其他使用该SessionId的AudioTrack和MediaPlayer共享AudioEffect。如果不指定SessionId,将会自动生成一个SessionId,AudioEffect会将该SessionId与新创建的AudioTrack对象关联起来。别人可以原创 2012-05-25 14:42:20 · 692 阅读 · 0 评论 -
Linux下ALSA声卡编程(1)
一.介绍 ALSA 标准是一个先进的linux声音体系。它包含内核驱动集合,API库和工具对Linux声音进行支持。ALSA包含一系列内核驱动对不同的声卡进行支持,还提供了libasound的API库。用这些进行写程序不需要打开设备等操作,所以编程人员在写程序的时候不会被底层的东西困扰。与此相反OSS/Free驱动在内核层次调用,需要指定设备名和调用ioctl。为提供向翻译 2012-07-04 11:05:12 · 562 阅读 · 0 评论 -
Android多媒体浅析
发现Android影音系统超复杂的,个人水平有限,关注以下几个问题:1. 系统如何选择多媒体引擎2. 引擎如何选择编解码器3. 分离器如何分离音视频4. 视频解码播放过程如何使用OMX IL5. 音频解码播放过程与ALSA的关系1. 系统如何选择多媒体引擎多媒体系统自上而下可分为三类,上层应用软件,就是在Android市场里下载的到的多媒体播放软件如Mobo转载 2013-03-02 16:11:25 · 491 阅读 · 0 评论 -
Android多媒体学习日记(一)
知识归纳: 多媒体框架是由第三方PacketVideo提供的OpenCore实现的,它支持播放和录音许多的音频和视频格式,以及静态图像文件,包括MPEG4、MP3、H.264、AMR、AAC、AMR、JPG、PNG。 多媒体核心OpenCore,它的另外的一个称呼是PacketVideo,是按Android的多媒体核心,基于C++实现的,定义转载 2013-03-02 16:16:39 · 371 阅读 · 0 评论 -
Android视频资料整理
参考资料|-在Google Android官方的开发文档中有一文 Android Supported Media Formats详细的介绍了Android终端支持的音频视频格式|-连接 http://developer.android.com/guide/appendix/media-formats.html|-当然,农民伯伯博客中也有译文--http://www.cnblogs.转载 2013-03-02 16:07:41 · 546 阅读 · 0 评论 -
Android Stagefright NuPlayer for HTTP live streaming
Android 3.x中将HTTP Live streaming的处理单独出来一个NuPlayer,独立于Stagefright这个框架。应该是针对Http Live的特点做了相关优化。 Http Live streaming是未来流媒体发展的一个趋势,这个我会紧跟。 Android 2.x中Http Live视频的体验是远远比不了iPad的。不知3.x中是否将这块儿独转载 2013-03-06 18:41:41 · 1200 阅读 · 0 评论 -
Android多媒体框架图
【摘自WindRiver 1st Android Technical Conference】Android多媒体整体架构图 MediaPlayer框架图 Camera框架图 SoundRecorder框架图 VideoCamera框架图 OpenCore与Skia ALSA Audio框架图转载 2013-03-06 18:38:26 · 2931 阅读 · 0 评论 -
Android Audio System
http://blog.csdn.net/DroidPhone/archive/2010/10/14/5941344.aspxAndroid Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据引子Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到A转载 2013-03-06 18:37:20 · 980 阅读 · 0 评论 -
Android深入浅出之Audio 第一部分 AudioTrack分析
Android深入浅出之Audio第一部分 AudioTrack分析一 目的本文的目的是通过从Audio系统来分析Android的代码,包括Android自定义的那套机制和一些常见类的使用,比如Thread,MemoryBase等。分析的流程是:l 先从API层对应的某个类开始,用户层先要有一个简单的使用流程。l 根据这个流程,一步步进入到J原创 2012-08-03 12:35:23 · 552 阅读 · 0 评论 -
智能手机音频系统概述
声明:本文非本人原创,主要整理了网上搜集到的一些资料,并加上个人注解。音频系统概述专业术语:[plain] view plaincopyprint?ASLA - Advanced Sound Linux Architecture OSS - 以前的Linux音频体系结构,被ASLA取代并兼容 Codec翻译 2012-07-04 11:47:11 · 755 阅读 · 0 评论 -
android 耳机系统笔记2 --多媒体设备各种状态
frameworks\base\include\media\AudioSystem.h中定义===================================================================device:enum audio_devices { // output devices DEVICE_OUT_EARPIE翻译 2012-07-04 11:59:49 · 1122 阅读 · 0 评论 -
ANDROID音频系统散记之四:4.0音频系统HAL初探
昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代。简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述。一、代码模块位置1、AudioFlinger[plain] view plaincopyprint?frameworks/base/services/au翻译 2012-07-04 11:41:02 · 765 阅读 · 0 评论 -
Android Audio audio_track_cblk_t::framesReady函数
在看AudioTrack的write函数的时候,了解到,音频数据最终都写到了audio_track_cblk_t的结构体中。这个结构体是在AudioFlinger中创建的。AudioFlinger是如何来使用这些数据的呢?今天就来学习学习。我们写数据的时候,调用了audio_track_cblk_t::framesAvailable_l函数,来判断是否有可用的空间,以供写用原创 2012-05-25 14:38:55 · 1096 阅读 · 0 评论 -
AudioTrack如何与AudioFlinger交换音频数据
引子Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放,目前Android的Froyo版本设定了同时最多可以创建32个音频流,也就是说,Mixer最原创 2012-05-25 14:32:54 · 622 阅读 · 0 评论 -
AudioPolicyService 和 AudioPolicyManager
AudioPolicyService是Android音频系统的两大服务之一,另一个服务是AudioFlinger,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。AudioFlinger主要负责管理音频数据处理以及和硬件抽象层相关的工作。本文主要介绍AudioPolic原创 2012-05-25 14:32:12 · 425 阅读 · 0 评论 -
Android+Audio+相关类
AudioSystem类定义了一堆枚举,包括stream类型,音频格式,音频channel等。函数get_audio_flinger中,会获取AudioFlinger,然后创建一个AudioFlingerClient对象,并调用AudioFlinger的函数registerClient注册该AudioFlingerClient。接下来,函数的实现,基本上都是通过调用AudioFli翻译 2012-05-28 15:31:38 · 531 阅读 · 0 评论 -
Android Audio getMinBufferSize
AudioTrack的使用示例中,用到了函数getMinBufferSize,今天把它倒出来,再嚼嚼。*****************************************源码************************************************* static public int getMinBufferSize(int sampleRat翻译 2012-05-28 15:30:50 · 548 阅读 · 0 评论 -
Linux音频设备驱动-6
17.6.3 控制接口的实现代码清单17.33第21行调用的snd_chip_uda1341_mixer_new()可以认为是UDA1341 ALSA驱动mixer控制组件的“构造函数”,其中会创建的控制元素的定义如代码清单17.39,包括一些枚举和单值元素。代码清单17.39 UDA1341 ALSA驱动控制接口snd_kcontrol_new结构体1 #define UDA1341原创 2012-05-28 15:11:05 · 545 阅读 · 0 评论 -
Linux音频设备驱动-4
17.5实例1:S3C2410+UDA1341 OSS驱动17.5.1 S3C2410与UDA1341接口硬件描述如图17.7,S3C2410处理器内置了IIS总线接口,S3C2410的IIS总线时钟信号SCK与Philip公司的UDA1341的BCK连接,字段选择连接于WS引脚。UDA1341提供两个音频通道,分别用于输入和输出,对应的引脚连接:IIS总线的音频输出IISSDO对应于UD原创 2012-05-28 15:08:49 · 503 阅读 · 0 评论 -
Linux音频设备驱动-3
4、put()函数put()用于从用户空间写入值,如果值被改变,该函数返回1,否则返回0;如果发生错误,该函数返回1个错误码。代码清单17.22给出了1个put()函数的范例。代码清单17.22 snd_ctl_elem_info结构体中put()函数范例1 static int snd_xxxctl_put(struct snd_kcontrol *kcontrol, struct原创 2012-05-28 14:45:32 · 646 阅读 · 0 评论 -
Linux音频设备驱动-1
本章导读在Linux中,先后出现了音频设备的两种框架OSS和ALSA,本节将在介绍数字音频设备及音频设备硬件接口的基础上,展现OSS和ALSA驱动的结构。17.1~17.2节讲解了音频设备及PCM、IIS和AC97硬件接口。【WM9712】17.3节阐述了Linux OSS音频设备驱动的组成、mixer接口、dsp接口及用户空间编程方法。17.4节阐述了Linux ALSA音频设备原创 2012-05-28 14:43:12 · 906 阅读 · 0 评论 -
AudioTrack与AudioFlinger交换音频数据
Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到 AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放,目前Android的Froyo版本设定了同时最多可以创建32个音频流,也就是说,Mixer最多会同翻译 2012-05-28 15:24:03 · 511 阅读 · 0 评论 -
Android 进程内存、CPU使用查看
一、利用Android API函数查看1.1 ActivityManager查看可用内存。ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo(); am.getMemoryInfo(outInfo); outInfo.availMem即为可用空闲内存。1.2、android.os.Debug查询翻译 2012-05-28 15:20:35 · 1061 阅读 · 0 评论 -
Android Audio 创建AudioTrack对象
今天来看看类AudioTrack的构造函数。出发点是Java中的AudioTrack类。从前面的使用实例中可知,应用程序中要实现播放,首先要创建一个AudioTrack对象,然后调用其函数来实现播放。*****************************************源码*************************************************翻译 2012-05-28 15:18:44 · 2624 阅读 · 0 评论 -
AudioTrack实例代码 C++代码
char path[] = "/sdcard/testmusic.pcm";AudioTrack *lpTrack = NULL;static void audioCallback(int event, void* user, void *info){ FILE *fp = (FILE*)user; if (event == AudioTrack::EVE翻译 2012-05-28 15:22:39 · 706 阅读 · 0 评论 -
Linux音频设备驱动-2
17.4.2 PCM设备每个声卡最多可以有4个PCM实例,1个PCM实例对应1个设备文件。PCM实例由PCM放音和录音流组成,而每个PCM流又由1个或多个PCM子流组成。有的声卡支持多重放音功能,例如,emu10k1包含1个32个立体声子流的PCM放音设备。1、PCM实例构造int snd_pcm_new(struct snd_card *card, char *id, int dev原创 2012-05-28 14:44:25 · 698 阅读 · 0 评论 -
ALSA-amixer
上层使用amixer命令设置声卡,首先可以使用amixer contents 命令查看可供设置的选项,包括当前设置的值,通过amixer cset 命令修改设置。使用amixer命令设置声卡,用户可以直观的看到当前设置的功能,而不需要了解底层修改了哪些寄存器。一、上层使用的 amixer 命令 。 amixer命令示例如下:amixer cset iface='MIXER',name=翻译 2012-05-31 20:25:39 · 981 阅读 · 0 评论 -
alsa 结构
1,alsa的基本软件结构 alsa app -------------------- alsa lib -------------------- alsa driver -------------------- alsa device driver linux下软件模块架构的一些重要特点: 1),对翻译 2012-05-31 20:29:56 · 682 阅读 · 0 评论 -
关于控制android音频流的音量
当开发多媒体应用或者游戏应用的时候,需要使用音量控制键来设置程序的音量大小。在Android系统中有多种音频流,通过Activity中的函数 setVolumeControlStream(int streamType)可以设置该Activity中音量控制键控制的音频流,一般在onCreate函数中设置。 Android中有如下几种音频流:AudioManager.STR翻译 2012-05-25 13:55:12 · 1023 阅读 · 0 评论