自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 收藏
  • 关注

转载 ALSA声卡驱动中的DAPM详解之一:kcontrol

DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c

2015-06-12 09:41:09 641

转载 Android中的sp和wp指针

经常会在android的framework代码中发现sp和wp这样的指针,平时看的时候都把他当成一个普通的指针封装过掉了,这几天终于忍不住了,想深入了解一下。 相关的代码:frameworks/base/include/utils/RefBase.hframeworks/base/libs/utils/RefBase.cpp sp和wp都是一个模板类,看一下sp类的定义

2015-01-04 11:48:35 551

转载 Android Audio System 之三: AudioPolicyService 和 AudioPolicyManager

引言    AudioPolicyService是Android音频系统的两大服务之一,另一个服务是AudioFlinger,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。AudioFlinger主要负责管理音频数据处理以及和硬件抽象层相关的工作。本文主要介绍Au

2015-01-04 11:47:35 566

转载 Android Audio System 之二:AudioFlinger

引言     AudioFlinger是Android音频系统的两大服务之一,另一个服务是AudioPolicyService,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。AudioPolicyService的相关内容请参考另一编文章:《Android Audi

2015-01-04 11:46:00 483

转载 Android Audio System 之一:AudioTrack如何与AudioFlinger交换音频数据

引子Android Framework的音频子系统中,每一个音频流对应着一个AudioTrack类的一个实例,每个AudioTrack会在创建时注册到AudioFlinger中,由AudioFlinger把所有的AudioTrack进行混合(Mixer),然后输送到AudioHardware中进行播放,目前Android的Froyo版本设定了同时最多可以创建32个音频流,也就是说,Mixe

2015-01-04 11:44:35 613

转载 Linux ALSA声卡驱动之八:ASoC架构中的Platform

1.  Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_pl

2015-01-04 11:41:02 546

转载 Linux ALSA声卡驱动之七:ASoC架构中的Codec

1.  Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理,例如音量控

2015-01-04 11:38:33 594

转载 Linux ALSA声卡驱动之六:ASoC架构中的Machine

前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结

2015-01-04 11:29:39 536

转载 Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

1.  ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:   Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时L

2015-01-04 11:27:08 459

转载 Linux ALSA声卡驱动之四:Control设备的创建

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control

2015-01-04 11:25:00 592

转载 Linux ALSA声卡驱动之三:PCM设备的创建

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的

2015-01-04 11:24:07 470

转载 Linux ALSA声卡驱动之三:PCM设备的创建

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的

2015-01-04 11:23:08 503

转载 Linux ALSA声卡驱动之二:声卡的创建

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd

2015-01-04 11:21:06 467

转载 Linux ALSA声卡驱动之一:ALSA架构简介

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!一.  概述    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。

2015-01-04 11:20:17 436

转载 Linux ALSA声卡驱动之一:ALSA架构简介

声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!一.  概述    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。

2015-01-04 11:18:56 395

转载 Android Audio System线性音量和对数音量的转换

Android的音频系统的代码中,应用程序对每个音频流的音量做出调整后,最终会转换为一个系数K,所有的音频数据在输出到硬件之前,都要乘以系数K,只要应用程序发出调整音量的调用,中间层的Audio System就会重新计算系数K的值。对应用程序来说,音量控制通常都是按照线性进行调整的,比如对于具有15级音量的音频流来说,我们预期每级的音量变化都是相当的,也就是说:从第5级调到第6级,和从第7级调到第

2015-01-04 11:14:44 461

转载 ALSA声卡驱动中的DAPM详解之三:如何定义各种widget

上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,但是对于系统中的widget和route,我们是需要自己进行定义的,另外,widget所包含的kcontrol与普通的k

2015-01-04 11:00:29 455

转载 ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/*******************

2015-01-04 10:59:51 476

转载 ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol

上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,kcontrol还是有以下几点不足:只能描述自身,无法描述各个kcontrol之间的连接关系;没有相应的电源

2015-01-04 10:58:14 531

转载 ALSA声卡驱动中的DAPM详解之一:kcontrol

DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c

2015-01-04 10:56:20 554

转载 ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系

前面我们主要着重于codec、platform、machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如何在alsa音频驱动的3大部分(codec、platform、machine)中,按照所使用的音频硬件结构,定义出相应的widget,kcontrol,以及必要的音频路径,而在本章中,我们将会深入da

2015-01-04 10:35:15 658

转载 ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身

设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用户空间的应用程序无需关心那个部件何时需要电源,它只要按需要设定好音频路径,播放音频数据,暂停或停止,dapm框架会根据音频路径,完美地对各种部件的电源进行控制,而且精确地按某种顺序进行,防止上下电过程

2015-01-04 10:33:58 958

转载 ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大

2015-01-04 10:31:05 474

转载 C++中vector的用法

参考连接:http://www.cplusplus.com/reference/vector/vector/

2014-06-06 18:08:54 663

转载 android语音识别方法

android语音识别方法一:使用intent调用语音识别程序

2014-05-15 13:50:21 824

转载 为Android安装BusyBox —— 完整的bash shell

http://www.cnblogs.com/xiaowenji/archive/2011/03/12/1982309.html 大家是否有过这样的经历,在命令行里输入adb shell,然后使用命令操作你的手机或模拟器,但是那些命令都是常见Linux命令的阉割缩水版,用起来很不爽。是否想过在Android上使用较完整的shell呢?用BusyBox吧。不论使用adb连接设备使用命令行还是

2014-05-15 13:40:50 511

转载 WAVE头分析代码

这篇文章是网络上流行的比较广泛的针对WAVE头分析的文章,整体写的简单明了非常好,但是18H2int采样率(每秒样本数),表示每个通道的播放速度,应该是不对的,如果按这个该文章的计算,WAVE头只有42byte,实际上wave头是44byte.参考MS的标准文档知道这个采样率是占4byte的.(见WAVE

2014-05-14 18:17:48 592

转载 各种多媒体格式以及codec简析

首先要明白几个概念:A、扫描线和分辨率     扫描线可以理解为将屏幕水平方向分成一条条直线,就像水平直线组成一个平面一样。屏幕的清晰度基本上取决于其扫描线的细腻程度,也可以通俗地来讲扫描线决定了屏幕的物理分辨率,物理分辨率是指屏幕最多能显示的像素点数。物理分辨率决定了屏幕能达到的最高分辨率,除了屏幕的最高分辨率以外还有一个兼容分辨率的概念,比如说一个640*480的屏幕也许也能播放108

2014-02-13 19:04:26 1493

原创 android的线程封装

封装的文件:/frameworks/base/include/utils/threads.h这里不讨论具体实现,具体实现是和系统相关联的~~首先Anroid提供了几个与直接创建线程的函数:inline bool createThread(thread_func_t f, void *a)  inline bool createThreadEtc(thread_func_t en

2014-02-13 19:03:26 511

转载 linux 技巧:使用 screen 管理你的远程会话

田 强 (tianq@cn.ibm.com), 软件工程师, IBM中国软件开发中心简介: 你是不是经常需要远程登录到Linux服务器?你是不是经常为一些长时间运行的任务头疼?还在用 nohup 吗?那么来看看 screen 吧,它会给你一个惊喜!发布日期: 2007 年 7 月 31 日 级别: 中级 访问情况 : 97370 次浏览 评论: 9 (查看 | 添加

2014-02-10 10:39:20 545

转载 Android Wi-Fi Display(Miracast)介绍

Android Wi-Fi Display(Miracast)介绍2012年11月中旬,Google发布了Android 4.2。虽然它和Android 4.1同属Jelly Bean系列,但却添加了很多新的功能。其中,在显示部分,Android 4.2在Project Butter基础上再接再厉,新增了对Wi-Fi Display功能的支持。由此也导致整个显示架构发生了较大的变化。

2013-10-14 18:53:19 964

转载 Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息

我想实现如下的场景,判断当前Android手机上是否正在播放音乐,如果是,通过某个特定的手势,或者点击某个按键,将当前我正在听的音乐共享出去。第一步,就是判断当前是否有音乐正在播放。最开始我想得有点复杂,以为要深入framework或更下层去做手脚才行,找了一下资料,发现AudioManager对外暴露了接口。[java] view plaincopyprint?

2013-10-14 10:19:46 1965

转载 Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果

目前Android的实现是:有来电时,音乐声音直接停止,铃声直接直接使用设置的铃声音量进行铃声播放。Android 4.3实现类似iOS在音乐播放过程中如果有来电则音乐声音渐小铃声渐大的效果。如果要实现这个效果,首先要搞清楚两大问题;1、来电时的代码主要实现流程。2、主流音乐播放器在播放过程中,如果有来电,到底在收到了什么事件后将音乐暂停了?一:来电时的代码

2013-10-14 10:15:36 1422

转载 fstab (简体中文)

文件/etc/fstab包含了静态文件系统信息,定义了存储设备和分区整合到整个系统的方式。mount 命令会读取这个文件,确定设备和分区的挂载选项。Contents1文件示例2字段定义3文件系统标识3.1内核名称3.2标签3.3UUID4提示和技巧4.1交换分区 UUID4.2路径名有空格4.3外部设备

2013-10-11 19:21:37 901

转载 开机挂载配置 fstab UUID

1. 需要设置启动自动挂载的文件系统,打开fstab,发现需要分区的UUID,通过: sudo blkid -o list 打印出比较能理解的格式:输出的是所有分区的信息,包含了分区的设备文件,文件系统类型,卷标(LABEL),挂载点,UUID。2. 不同文件系统的卷标需要不同的软件包来设置:a) NTFS 需要安装 ntfsprogs,用命令 sudo ntfslabel

2013-10-11 19:20:31 1147

转载 教你如何修改Android手机的按键音/照相音/字体等

本文只提供照相机等常规声音的修改,至于拨号钢琴音暂时不会,找大神也没问出结果。一.前期需要准备的文件和工具 1.root手机2.R.E管理器(本帖由附件,附件可以隐藏吗?)3.ogg音频文件 (自己提供) 二.音频文件存放目录system目录是系统目录,不懂别乱动。1.用R.E管理器打开找到 /system/media/audio/ui目录会列出(如果提示获取权限请

2013-08-18 18:22:58 2910

转载 ARM Linux 3.x的设备树(Device Tree)

宋宝华 Barry Song 1.    ARM Device Tree起源Linus Torvalds在2011年3月17日的ARM Linux邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发ARM Linux社区的地震,随后ARM社区进行了一系列的重大修正。在过去的ARM Linux中,arch/arm/pla

2013-06-08 17:34:26 948

转载 Android 中input event的分析

文章将分析Android 的Input Event 子系统的来龙去脉。 Android 系统里面有很多小工具,运行这些工具,我们对它们有一个感性的认识,进而阅读和分析这些小工具源代码,再顺藤摸瓜,就可以把整个子系统的来龙去脉弄清楚。 1.运行toolbox的getevent 工具。 # getevent -helpgetevent -helpUsage: getev

2013-01-06 19:32:23 509

转载 Android事件处理

Init-----------zygote---------system-server-------------------windosmanager  ------------------------------------------------------------ UEventObserver----------------------------------------------

2012-10-31 14:27:50 629

转载 Android输入事件流程中的EventHub分析及源码演示

Android2.3的输入事件流程与以前版本有了较大的不同,这里做一下详细的分析,最后我把自己分析时用的演示代码放在了这里:http://code.google.com/p/flying-on-android/下面的分析都是基于这些源码的,大家可以下载下来一边看源码一边看文档。源码里只要关注FlyingEvent这个类就可以了。如果只想看一下演示结果,可以直接把包里的flying放到机器的

2012-10-31 14:27:07 741

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除