android
文章平均质量分 72
Damon_X
这个作者很懒,什么都没留下…
展开
-
android debugging tools introduction
This article is a summary fromhttps://source.android.com/devices/tech/debug, summarized the key points of the debugging motheds in android.1. core dump:for crash dump, please remember:It's possible for the crash dumper to attach only if nothing els..原创 2021-05-25 14:50:36 · 624 阅读 · 0 评论 -
The Biggest Changes in C++11 (and Why You Should Care)
It’s been 13 years since the first iteration of the C++ language. Danny Kalev, a former member of the C++ standards committee, explains how the programming language has been improved and how it can he转载 2016-06-01 14:45:38 · 596 阅读 · 0 评论 -
android/DisplayHotplug
This feature is implemented as part of android version 4.2.1 and onward. The implementation is given as part of android's Surfaceflinger and HWComposer.The call flow chart of Surfaceflinger is giv转载 2016-06-02 18:25:06 · 642 阅读 · 0 评论 -
SurfaceFlinger and HWComposer
IntroductionIn the beginning, people believes that GPU composition is fast and power effiecent compared with CPU composition. Then, people find that in most usage scenarios, GPU can be kept sleep转载 2016-06-02 18:27:07 · 1495 阅读 · 0 评论 -
C++初始化列表中无默认构造函数的成员的初始化
在初始化列表中,如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数。Android代码中的例子: 249 InputReader::InputReader(const sp& eventHub, 250 const sp& policy, 2原创 2016-06-07 17:48:21 · 2247 阅读 · 0 评论 -
MemoryHeapBase与MemoryBase
MemoryHeapBaseMemroyHeapBase也是Android搞的一套基于Binder机制的对内存操作的类。既然是Binder机制,那么肯定有一个服务端(Bnxxx),一个代理端Bpxxx。看看MemoryHeapBase定义:class MemoryHeapBase : public virtual BnMemoryHeap{ 果然,从BnMemor转载 2016-06-27 16:57:39 · 794 阅读 · 0 评论 -
framework之Audio系统
Frame 帧数,1单位的Frame等于一个采样点的字数*声道数(r如PCM16,双声道的1个Frame为2*2=4字节),一般音频系统都是用它为单位来分配和管理的AudioTrack:AudioManager.STREAM_MUSIC 音频流的类型8000采样频率,每秒8000个点AudioFormat.CHANNEL_CONFIGUATION_STEREO 双声转载 2016-06-27 17:12:00 · 585 阅读 · 0 评论 -
AudioPolicyManager::getDeviceForStrategy
getStrategy根据StreamType得到Strategy,AudioPolicyManager再从mOutputRoutes里查出Strategy和前面得到的Strategy相等的Route里面的Device从以上可以看出, Strategy可以定义为:Group of stream types with the similar behavior。当然从getStrategyForS原创 2016-06-14 09:48:16 · 3339 阅读 · 0 评论 -
H.264 Profile、Level、Encoder三张简图
H.264有四种画质级别,分别是BP、EP、MP、HP: 1、BP-Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC; 2、EP-Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC; 3、MP-Main profile:主流画质。提供I/P转载 2016-07-13 10:55:00 · 442 阅读 · 0 评论 -
android multimedia的代码边读边记
system/core/include/system/window.h中的ANativeWindow其实是一个底层的API接口定义,要求实现者去具体实现其中定义的接口,比如dequeueBuffer,queueBuffer,cancelBuffer,query,perform。而在目前的实现中,Surface就是这么一个具体去实现这些接口的类,定义在frameworks/native/libs/g原创 2016-07-13 09:31:26 · 1018 阅读 · 0 评论 -
a2dp场景分析
简述这次,我们来看下a2dp下面的播放场景吧。a2dp是蓝牙用来播放音乐的协议,正常情况下,播放音乐只从蓝牙耳机端输出,但是如果是来个通知类的声音,那策略的选择会同时从蓝牙耳机和speaker同时输出,由于speaker和蓝牙是采用的不同硬件设备输出,所以它在hal层应该是对应两个so的。所以,谷歌针对这种场景,继承PlaybackThread,实现了DuplicatingThread,这转载 2016-06-16 15:59:34 · 5784 阅读 · 0 评论 -
media的两张图,以前画的
原创 2016-07-06 10:12:28 · 419 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – GRAPHICS BASICS(II)
After the preceding post on ANativeWindow and ANativeWindowBuffer, we have the fodder to discuss GraphicBuffer and Surface.After the preceding posts on ANativeWindow and ANativeWindowBuffer, we ha转载 2016-06-01 11:52:32 · 460 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – GRAPHICS BASICS (I)
In this post, it is presumed that you know about frame buffer driver, display control, display overlay, frame buffer, frame rate, common color space schemes, graphics pipeline ,EGL, Direct Rendering I转载 2016-06-01 11:51:50 · 443 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – THE GRAPHIC SURFACE SERVICE INTERFACES
As pointed out in previous posts, Android does not allow UI applications to write to the frame buffer directly; SurfaceFlinger administrates the allocation of surfaces/graphic buffers to UI applicatio转载 2016-06-01 11:49:10 · 486 阅读 · 0 评论 -
AudioTrack到AudioFlinger再到AudioPolicyService
AudioTrack调用createTrack的时候,根据参数调用getOutputAttr得到一个Output的io handle,再把这个handle传给AudioFlinger,AudioFlinger会使用这个handle去查对应的PlaybackThread,然后thread最终在内部创建了Track。这些Thread全是APS起来的时候就创建了,除了direct的线程是需要的时原创 2016-04-13 10:40:28 · 1890 阅读 · 0 评论 -
Android 4.4 Graphic系统详解(1) SurfaceFlinger的启动过程
init启动SurfaceFlingerSurfaceFlinger目前的启动方式是做为init进程中的一个Service来启动。在init中添加如下配置代码:[cpp] view plaincopy# Set this property so surfaceflinger is not started by system_init setprop system_init.sta转载 2016-05-27 18:18:18 · 1501 阅读 · 0 评论 -
Android 4.4 Graphic系统详解(2) VSYNC的生成
VSYNC 的概念VSYNC(Vertical Synchronization)是一个相当古老的概念,对于游戏玩家,它有一个更加大名鼎鼎的中文名字—-垂直同步。“垂直同步(vsync)”指的是显卡的输出帧数和屏幕的垂直刷新率相同,这完全是一个CRT显示器上的概念。其实无论是VSYNC还是垂直同步这个名字,因为LCD根本就没有垂直扫描的这种东西,因此这个名字本身已经没有意义。但是基于历史转载 2016-05-27 18:19:54 · 1210 阅读 · 0 评论 -
SurfaceFlinger学习
https://source.android.com/devices/graphics/architecture.html这篇文章中有这么一段话:When an app comes to the foreground, the WindowManager service asks SurfaceFlinger for a drawing surface. SurfaceFlinger原创 2016-05-24 09:53:36 · 862 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS -SURFACEFLINGER(V)
from: https://charleszblog.wordpress.com/category/android-2/graphics-android/This SurfaceFlinger series turns lengthy. Let’s see if we can wrap it up in this post.FramebufferSurface and Disp转载 2016-06-01 11:40:48 · 534 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – SURFACEFLINGER (I)
from: https://charleszblog.wordpress.com/2014/02/22/understanding-android-internals-surfaceflinger-i/Let’s recapture what we have known of SurfaceFlinger from previous posts on Android Graphics.转载 2016-06-01 11:41:47 · 843 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – SURFACEFLINGER (II)
Prior to Jelly Bean, the threadLoop in SurfaceFlinger.cpp processes composition and rendering sequentially in a thread loop. Newly enqueued graphic buffer won’t be handled until the rendering of cur转载 2016-06-01 11:43:08 · 333 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHIC- SURFACEFLINGER (IV)
Having known that BufferQueue exposes the APIs for consuming surface frame while implementing BnGraphicBufferProducer, we continue our attempt to demystify surface compositions and rendering with an转载 2016-06-01 11:45:28 · 309 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – SURFACEFLINGER (III)
In this post, we discuss BufferQueue, BufferQueue::BufferSlotand BufferQueue::BufferState defined in frameworks/native/include/gui/BufferQueue.h.BufferQueueWe have learned the concepts of转载 2016-06-01 11:46:19 · 607 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – GRALLOC AND HWCOMPOSER
gralloc and hwcomposer are hardware abstraction modules compliant to hw_module_t (defined in hardware/libhardware/include/hardware/hardware.h). Vendors mostly overwrite the android release implementat转载 2016-06-01 11:47:43 · 547 阅读 · 0 评论 -
UNDERSTANDING ANDROID GRAPHICS INTERNALS – GRAPHIC BUFFER HANDLING INTERFACES
In this post, we touch IGraphicBufferProducer, IGraphicBufferAlloc.IGraphicBufferProducerDefined in include/gui/IGraphicBufferProducer.h, it was formerly known as ISurfaceTexture. It is the转载 2016-06-01 11:48:20 · 435 阅读 · 0 评论 -
Android .mk文件中需要注意的一些宏
一,LOCAL_PATH 这个变量用于给出当前文件的路径。你必须在Android.mk的开头定义,这个变量不会被$(CLEAR_VARS)清除,因此每个Android.mk只需要定义一次,即使你在一个文件中定义了几个模块。二, LOCAL_MODULE_TAGS LOCAL_MODULE_TAGS :=user eng tests optional user原创 2016-04-08 16:25:15 · 1301 阅读 · 0 评论