自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(34)
  • 收藏
  • 关注

原创 排序系列之——快速排序

快速排序的基本思想是:首先从数列中取出一个数,一般选择第一个数;以这个数为基准,对数列进行分区,比它大的数放到它的右边,比它小的数放到它的左边;再对左右区间重复第二步,直到各区间只剩一个数。代码如下:

2016-05-11 15:13:48 156

转载 在一个字符串中找到第一个只出现一次的字符

题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路时间复杂度是O(n2)。我们试着去找一个更快的方法。

2012-05-31 14:55:25 482

转载 DDD调试 stagefright

Google为Android应用开发提供了eclipse加插件作为开发工具,基于eclipse可以方便调试apk,而对于底层开发人员(比如opencore开发)没有提供类似直观的开发工具及调试手段。本文旨在介绍一种基于ddd+gdbserver的调试方法,用于类似 opencor

2011-09-02 11:52:03 1100

转载 Android-StageFright之OpenMAX的实现

http://disanji.net/2011/03/07/stagefright-openmax0realization/OMXCodec是一个MediaSource,完成数据的parse和decode。而OMXCodec则主要通过IOMX跨越OpenBinde

2011-09-02 11:49:44 2616

转载 Android-StageFright之OpenMAX的实现

http://disanji.net/2011/03/07/stagefright-openmax0realization/ OMXCodec是一个MediaSource,完成数据的parse和decode。而OMXCodec则主要通过IOMX跨越OpenBinder机制

2011-09-02 11:45:08 146

转载 Android Stagefright MPEG4Extractor分析

http://www.cnblogs.com/shaobin0604/archive/2011/08/16/2141388.html 视频播放的基本流程                           video track    +-------------

2011-08-26 11:35:11 3740

转载 Android下的多媒体开源项目

1.  ffmpeg for x86    http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android    没有实现android media interface,标准流程是通过surface输出解码后的YUV视频数据,aud

2011-08-16 16:30:29 1124

转载 YUV格式详解

<br />YUV是指亮度参量和色度参量分开表示的像素格式,而这样分开的好处就是不但可以避免相互干扰,还可以降低色度的采样率而不会对图像质量影响太大。YUV是一个比较笼统地说法,针对它的具体排列方式,可以分为很多种具体的格式。转载一篇对yuv格式解释的比较清楚地文章,也可以直接参考微软的那篇文章。<br />对于YUV格式,比较原始的讲解是MPEG-2 VIDEO部分的解释,当然后来微软有一个比较经典的解释,中文的大多是翻译这篇文章的。文章来源:http://msdn.microsoft.com/en-us

2011-03-18 13:58:00 746

转载 surfaceflinger中的显示内存管理类--GraphicBuffer

<br />http://blog.csdn.net/DroidPhone/archive/2010/09/17/5891786.aspx<br />1.  Android中的应用层每申请一个Surface,最终会通过jni和binder调用到surfaceflinger中,最终会创建一个Layerxxx(Layer,LayerBuffer,LayerBlur,LayerDim)类,最通常的是Layer类,在Layer类中有一个成员变量:<br />            sp<GraphicBuffer>

2011-03-17 15:07:00 1041

转载 Android SurfaceFlinger中的Layer,LayerDim,LayerBlur,LayerBuffer

<br />http://blog.csdn.net/DroidPhone/archive/2010/11/11/6002237.aspx<br />应用程序中不同类型的Surface,在FrameWorks本地层的SurfaceFlinger中,分别对应着不同的Layer类,本文主要是讨论这几种Layer的实现和差异。<br />阅读本文之前,最好对SurfaceFlinger这个系统服务有所了解,可以参阅我的以下两篇文章:Android SurfaceFlinger中的SharedClient -- 客

2011-03-17 15:04:00 1452

转载 Android SurfaceFlinger中的工作线程:threadLoop()

<br />http://blog.csdn.net/DroidPhone/archive/2010/11/02/5982893.aspx<br />SurfaceFlinger继承了Thread类,自然也继承了Thread类的threadLoop方法,SurfaceFlinger工作线程的主代码都在threadLoop()方法中。工作线程启动后,基类Thread会循环地调用threadLoop方法,SurfaceFlinger的threadLoop()主要是要完成系统中各个Layer(Surface)进行

2011-03-17 15:02:00 1512

转载 Android SurfaceFlinger中的SharedClient -- 客户端(Surface)和服务端(Layer)之间的显示缓冲区管理

<br />http://blog.csdn.net/DroidPhone/archive/2010/10/28/5972568.aspx<br />SurfaceFlinger在系统启动阶段作为系统服务被加载。应用程序中的每个窗口,对应本地代码中的Surface,而Surface又对应于SurfaceFlinger中的各个Layer,SurfaceFlinger的主要作用是为这些Layer申请内存,根据应用程序的请求管理这些Layer显示、隐藏、重画等操作,最终由SurfaceFlinger把所有的Lay

2011-03-17 14:58:00 1308

转载 Android智能指针 (sp & wp)

<br />http://bbs.chinabyte.com/thread-452223-1-1.html<br />在Android的源代码中,经常会看到形如:sp<xxx>、wp<xxx>这样的类型定义,这其实是Android中的智能 指针。智能指针是C++中的一个概念,通过基于引用计数的方法,解决对象的自动释放的问题。在C++编程中,有两个很让人头痛的问题:一是忘记释放动态申 请的对象从而造成内存泄露;二是对象在一个地方释放后,又在别的地方被使用,从而引起内存访问错误。程序员往往需要花费很大精力进行精

2011-03-17 11:10:00 1172

转载 Android中的sp和wp指针

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

2011-03-17 11:09:00 2391

转载 OpenGL综合知识 --- Memory类型和数据传递

从应用程序到驱动程序再到Frame buffer,粗略的,可以将memory分成四类:1.         CPU可读可写的,称为system memory。我们一般写的程序使用的memory都是这种类型的,比如OpenGL应用程序,OpenGL驱动程序中的部分memory2.         CPU可写GPU可读的,属于video memory,这种memory在驱动程序中具有重要意义,是驱动程序软件和GPU硬件的桥梁,在驱动开发中,我们一般称之为command buffer。驱动程序往此memory中写

2011-03-11 14:44:00 936

转载 OpenGL综合知识---Frame Buffer

GPU的绘制结果并不一定直接写入on screen buffer中。On screen buffer中的数据是被用以显示输出的颜色信息,所以,on screen buffer属于color buffer。在OpenGL中定义了多个color buffer,比如front buffer、back buffer、left buffer等等,其中front buffer就是on screen buffer。如果将GPU的绘制结果直接写入front buffer中,可能会出现闪烁现象。可以将GPU的绘制结果先写入b

2011-03-11 14:43:00 1278

转载 介绍---Frame Buffer

<br />实际上,OGL的输出并不一定直接修改on screen buffer。有三种可能情况:<br />1. 下图中的bufer就是on screen buffer,或者是on screen buffer的一部分,此时,OGL的输出直接修改on screen buffer的内容。<br />【扩展】当应用程序以front buffer作为draw buffer,或者选择single buffer时,是这样的情况,但是屏幕很有可能会出现闪烁现象。<br />2. buffer是独立于on screen

2011-03-11 13:21:00 1110

转载 介绍---memory和client/server

<br />很粗略的,我们可以从三个主要角度来看待memory:<br />1. CPU可以读写的,称为system memory,我们一般写的程序都是使用system memory。<br />2. CPU可写GPU可读的,属于video memory,这种memory在驱动程序中具有重要意义,是驱动程序软件和GPU硬件的桥梁。驱动程序往此memory写入硬件指令,GPU读取指令然后执行。<br />3. CPU可读GPU可写的,也属于video memory,在驱动开发中也很重要。GPU将某些执行状态或

2011-03-11 13:20:00 760

转载 Android display system introduce(Qualcomm 8x60 platform)(二、SW架构--1)

一、Overview    上图的原型取自高通的文档,由于原图无法描述现有的架构,我在原图的基础了做了些修改,主要是增加了overlay部分,另外其他部分根据现有的软件也做了些许改动。下面先对上图做个大概的介绍,后面会针对重点部分做详细的分析。         最上面一层为应用程序,根据数据类型以及应用的不同可以分为几种。第一种是最普通的应用,如UI界面的显示,这部分通常数据类型为RGB格式,数据无须再经过特殊的处理。该应用可以说遍布各个应用程序,几乎是实时存在的。第二种是针对大块YUV数据的应用,如cam

2011-03-11 12:50:00 2916

转载 Android display架构分析

高通7系列硬件架构分析Android display SW架构分析下面简单介绍一下上图中的各个Layer:*蓝色部分-用户空间应用程序应用程序层,其中包括Android应用程序以及框架和系统运行库,和底层相关的是系统运行库,而其中和显示相关的就是Android的Surface Manager,它负责对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。*黑色部分-HAL层,在2.2.1部分会有介绍*红色部分-Linux kernel层Linux kernel,其中和显示部分相关的就是Lin

2011-03-11 11:49:00 1995

转载 Snapdragon 新成员有哪些特点?

<br />高通芯片(Soc)的命名规则一直比较混乱,在介绍新产品之前,我们先大概罗列一下它的几个产品族。<br />QSD:就是 Qualcomm SnapDragon 的简写,第一代产品就是最典型的 QSD 8250 ,这颗 1GHz 的芯片被广泛用在了 Android 高端手机里,也被微软选为 Windows Phone 7 的硬件标准之一。但是在新产品上, QSD 名称已经被停用,取而代之的是 MSM 。<br />MSM:就是 Mobile Station Modem 的简写,中低端和未来的高端芯

2011-03-10 15:16:00 651

转载 H.264 中很有用的一些概念(转)

<br />Q:PSNR<br />峰值信噪比<br />Q:是根据它来取qp是不是?<br />A:不是, 和QP没有直接关系, 但是QP的选择会影响到PSNR<br />Q: 如果不用率失真最优化, 为什么选择SATD+delta×r(mv,mode)作为模式选择的依据?为什么运动估计中,整象素搜索用SAD,而亚象素用SATD?为什么帧内模式选择要用SATD?<br />A: SAD即绝对误差和,仅反映残差时域差异,影响PSNR值,不能有效反映码流的大小。SATD即将残差经哈德曼变换的4×4块的预测残差

2011-03-10 09:28:00 786

转载 H.264解码器中参考图像的管理

由于H.264采用了多参考帧预测技术,所以其参考图象的管理比较复杂。GO50只是说明了怎么用,没有讲明为什么这么用,大家看过之后往往会有很多疑惑。本文比较细致的讲解了参考图象管理的问题,旨在进一步揭开其朦胧的面纱:)NOTE:为了便于从宏观角度讲解参考图象的管理,本文没有考虑B帧和场模式。PS:在H.264中,编解码器要维护参考图像列表的同步,所以在编码器和解码器中参考图像的管理是基本一致。在看此篇之前,大家可以先看看我以前写的《JM85中的多参考帧问题》: http://blog.csdn.net/sun

2011-03-10 09:27:00 674

转载 H.264中POC类型之探讨

由于POC对于参考序列的初始化,重排序及标记关系重大,所以做了如下的分析,以下讨论情况是针对帧编码。<br /><br />pic_order_cnt_type=0的时候:<br /><br />poc与frame_num没有直接的关系,是显式地出现在bit流中为pic_order_cnt_lsb,pic_order_cnt_lsb只是一个低位的poc,对应的高位PicOrderCntMsb不出现在bit流中,这个需要编码器或者解码器对pic_order_cnt_lsb的情况来进行PicOrderCntMs

2011-03-10 09:26:00 944

转载 Android的MediaPlayer架构介绍 补充

(muddogxp Android开发者论坛原创,转载请注明) <br />一.            类图扩充<br /><br /> <br />Binder代理,本地接口<br />类图中加入了Bp<Interface>的代理类:BpMediaPlayer, BpMediaPlayerService。这些类和相应的Bn<Interface>互相配对,Bp<Interface>客户端代理接口,而Bn<Interface>实现服务端本地接口。<br />拿BxMediaPlayer来举例:BpMediaP

2011-03-10 09:20:00 756

转载 Android的MediaPlayer架构介绍

本文主要介绍的是Android中很重要也最为复杂的媒体播放器(MediaPlayer)部分的架构。对于Android这样一个完整又相对复杂的系统,一个MediaPlayer功能的实现不在其具体的功能,而是具体功能如何适应Android系统Android MediaPlayer的主要具体实现在OpenCore的Player中,这部分不是本文的关注点。本文关注的是MediaPlayer系统的架构,其他的一些Android的应用程序也使用类似的架构。<br /><br />       对于开源事业在中国的发展,

2011-03-10 09:15:00 1100

转载 Android Display System --- Surface Flinger

<br />SurfaceFlinger是Android multimedia 的一个部分,在Android 的实现中它是一个service ,提供系统范围内的surface composer 功能,它能够将各种应用程序的2D 、3D surface 进行组合。在具体讲SurfaceFlinger 之前,我们先来看一下有关显示方面的一些基础知识。 <br /> <br />1、原理分析<br />让我们首先看一下下面的屏幕简略图:<br /><br /><br /> <br /> <br />每个应用程序可

2011-03-09 16:47:00 1112

转载 stagefright框架(七)-Audio和Video的同步

講完了audio和video的處理流程,接下來要看的是audio和video同步化(synchronization)的問題。OpenCORE的做法是設置一個主clock,而audio和video就分別以此作為輸出的依據。而在Stagefright中,audio的輸出是透過callback函式來驅動,video則根據audio的timestamp來做同步。以下是詳細的說明:<br /><br />(1) 當callback函式驅動AudioPlayer讀取解碼後的資料時,AudioPlayer會取得兩個時間戳

2011-03-09 16:45:00 1128

转载 stagefright框架(六)-Audio Playback的流程

到目前為止,我們都只著重在video處理的部分,對於audio卻隻字未提。這篇文章將會開始audio處理的流程。<br /><br />Stagefright中關於audio的部分是交由AudioPlayer來處理,它是在AwesomePlayer::play_l中被建立的。<br /><br /><br />(1) 當上層應用程式要求播放影音時,AudioPlayer同時被建立出來,並且被啟動<br /><br /><br />status_t AwesomePlayer::play_l()<br />{

2011-03-09 16:44:00 1009

转载 stagefright框架(五)-Video Rendering

AwesomePlayer::onVideoEvent除了透過OMXCodec::read取得解碼後的資料外,還必須將這些資料(mVideoBuffer)傳給video renderer,以便畫到螢幕上去。<br /><br />(1) 要將mVideoBuffer中的資料畫出來之前,必須先建立mVideoRenderer<br /><br /><br />void AwesomePlayer::onVideoEvent()<br />{<br />  ...<br /><br />  if(mVideoR

2011-03-09 16:43:00 1117

转载 stagefright框架(四)-Video Buffer傳輸流程

這篇文章將介紹Stagefright中是如何和OMX video decoder傳遞buffer。<br /><br />(1) OMXCodec會在一開始的時候透過read函式來傳送未解碼的data給decoder,並且要求decoder將解碼後的data傳回來<br /><br /><br /><br />status_t OMXCodec::read(...)<br />{<br />  if(mInitialBufferSubmit)<br />  {<br />    mInitialBuffer

2011-03-09 16:41:00 1464

转载 stagefright框架(三)-選擇Video Decoder

<br />在《Stagefright (1) – Video Playback的流程》中,我們並沒有詳述Stagefright是如何根據影片檔的類型來選擇適合的video decoder,現在,就讓我們來看一看。<br />(1) Video decoder是在onPrepareAsyncEvent中的initVideoDecoder被決定的<br /><br />OMXCodec::Create()會回傳video decoder給mVideoSource。<br /><br /><br />statu

2011-03-09 16:39:00 1326

转载 stagefright框架(二)- 和OpenMAX的運作

Stagefright的編解碼功能是利用OpenMAX框架,而且用的還是OpenCORE之OMX的實作,我們來看一下Stagefright和OMX是如何運作的。<br /><br />(1) OMX_Init<br /><br /><br /><br />OMXClient mClient;<br /><br />AwesomePlayer::AwesomePlayer()<br />{<br />  mClient.connect();<br />}<br /><br />status_t OMXClie

2011-03-09 16:38:00 1834

转载 stagefright框架(一)Video Playback的流程

在Android上,預設的多媒體框架(multimedia framework)是OpenCORE。OpenCORE的優點是兼顧了跨平台的移植性,而且已經過多方驗證,所以相對來說較為穩定;但是其缺點是過於龐大複雜,需要耗費相當多的時間去維護。從Android 2.0開始,Google引進了架構稍為簡潔的Stagefright,並且有逐漸取代OpenCORE的趨勢 (註1)。<br /><br />[圖1] Stagefright在Android多媒體架構中的位置。<br />[圖2] Stagefright

2011-03-09 16:35:00 3482 1

空空如也

空空如也

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

TA关注的人

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