自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux DVB 驱动分析

linux平台的数字电视驱动被称作linux DVB 驱动其框架称为DVB core在此做简单介绍Demux 简介Demux  是一个硬件模块,的主要作用是处理从frontend过来的信号,从中分离出各种表,然后根据表中的信息分离出每个频道的音频信号和视频信号,最后将音频和视频信号送到decoder解码。数字电视节目音频视

2016-07-07 23:09:11 6437

原创 alsa 驱动介绍

Machine以装配有CS4270的一款android 智能电视的为例/sound/soc/samsung/exynos.cPlatform以Samsung cpu exynos4412为例/sound/soc/samsung/Codec以wolfson的Codec芯片cs4270为例/sound/soc/codecs/cs4270.cA

2016-06-26 22:27:22 5908

原创 结合芯片exynos 4412介绍V4L2用来视频编解码的驱动

这里结合芯片exynos 4412介绍一下V4L2用来视频编解码的驱动结构内核代码基于3.4.106 linux-3.4.106\drivers\media\video\s5p-mfc linux-3.4.106\drivers\media\video1,V4L2结构2,几个主要接口主要接口(ioctl下面的一层)vidioc_qbuf

2016-06-21 23:06:02 6185 1

原创 exynos 4412 mfc 介绍

exynos 系列处理器的多媒体编解码依靠的是mfc硬件模块目前对MFC的介绍较少。这里粗略的总结一下MFC  有个RISC的小核,有8K的Icache,4K的Dcache,这个RISC可以对ES流每一帧的头数据进行分析或者合成MFC由以下部分构成:RISC, MFC core(各种加速器),寄存器组,总线接口,内存接口RISC和HOST都可以访问寄存器

2016-06-21 22:29:57 2003

原创 exynos 4412 Framebuffer驱动详解

本文参考了http://blog.chinaunix.net/uid-28328633-id-3565345.html 文中牵扯到一些android fence的知识。这里不做赘述。 请参考相关文章: http://blog.csdn.net/ear5cm/article/details/45093807 http://blog.csdn.net/fuyajun01/article/d

2016-04-19 23:25:31 4650 1

原创 exynos4412 的FIMD 介绍

后续这几篇文章力争将exynos4412 的显示部分介绍清楚这一块我们分成以下部分介绍:显示控制器的硬件原理framebuffer驱动分析exynos 4412显示部分主要寄存器本文参考了http://wenku.baidu.com/link?url=g_g0RLh3Kzbm_fE7AAR5-YSkeEtGTxzE-a23h0OsaRH5QKeQ7uX8l0hwCz3w

2016-04-19 23:05:28 4848

原创 gstreamer AV sync

本文翻译自gstreamer源代码中的文档,原文的路径是gstreamer/docs/design/part-synchronisation.txt。其中有一些繁琐的时间值推算。对于我们分析av同步不实用,这里不做介绍。同时参考网上资料http://blog.csdn.net/shenbin1430/article/details/4291963有兴趣的可以自行阅读。经过对代码的实

2016-03-09 21:59:44 3641

原创 gstreamer插件调用ffmpeg 详解

Gstreamer调用FFMPEG解析----Gstreamer 是如何操作ffmpeg的,以及ffmpeg是如何demux的(AVI 容器格式为例)AVI容器格式较为简单,所以这里用AVI为例,分析gstreamer如何通过ffmpeg来对多媒体文件demux,获得原始数据流。1. Gstreamer,ffmpeg, OMX框架关系 图一,框架Gstr

2016-03-09 21:47:18 6343

原创 android 解码出来的视频frame数据,是如何一步步的传递到显示端的(使用hwc composer online 合成)

1,初始化的时候,-----> allocateOutputBuffersFromNativeWindow-----> status_t OMXNodeInstance::useGraphicBuffer-----> virtual status_t useGraphicBuffer-----> status_t OMXNodeInstance::useGraphicBuffer2

2016-02-22 21:19:10 2372 1

原创 audio的输出设备切换分析

本文主要介绍android上音频输出设备切换的代码流程(此文部分内容参考自邓凡达老师的博客。感谢邓老师讲解)上层程序要切换输出设备时,经过JNI调用,会调用AudioSystem::setForceUsestatus_t AudioSystem::setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cf

2016-02-20 20:02:49 6387 3

原创 audiotrack分析

首先总结一下AudioTrackAudioTrack字面意思是音轨,可以理解为一路音频的来源。JAVA层也有AudioTrack的概念,但只是简单的封装,这里不介绍了。只介绍Native JNI的ATAT 向下传送数据,有两种方式:1,主动push方式,(对AF来说是被动方式)AT调用write函数把音频数据“push”到AudioTrack中。2,被动pull方式,(对AF来说是主动方式)AF调

2016-02-20 20:02:14 3302

原创 audiopolicy分析

本章节,大体介绍一下AudioPolicyService手机的Audio输入源很多,例如放电影,放音乐,通话,铃声,提示音等输出也很多,例如蓝牙,耳机,喇叭,听筒等那么什么声音输出到什么地方呢?这就是AudioPolicyService干的事情了。首先明确几个概念:1,Audio interfaces安卓手机上目前支持三类音频播放设备,这个主要是根据声音播放端和

2016-02-20 20:01:36 2965

原创 audiomixer分析

我们在AF小节里面讲了,AF会创建playbackThread线程,进行mixer操作。并且写入硬件。我们这里以MixerThread为例进行分析。先看MixerThread构造函数AudioFlinger::MixerThread::MixerThread(){...    mAudioMixer = new AudioMixer(mNormalFrameCoun

2016-02-20 19:59:58 3792

原创 audioflinger 分析

在media_server启动的过程中,AF和AP服务都被启动int main(int argc, char** argv){        AudioFlinger::instantiate();        AudioPolicyService::instantiate();}这里可以触发AF的构造函数,以及onFirstRef函数,完成一些变

2016-02-20 19:59:06 2952

原创 android audio buffer 分析

我们知道,播放audio的时候,音频数据是从AT传送到AF的,然后AF中的audiomixer来读取PCM数据做mix下面对这个流程做大体分析。首先,分析一下AT和AF之间传递数据使用的内存是在哪里分配的。AT章节里面,我们分析AudioTrack::createTrack_l函数时,有这么一段代码:    sp track = audioFlinger->createTr

2016-02-20 19:58:16 5328

原创 android audio分析

从本小节开始,我们要分析android的audio部分。相对于surfaceflinger部分,audio简单许多,层次,模块明确许多。为了防止摊子铺的太大,我们把audio分成几个模块来讲解。尽量分清楚模块之间的耦合我们主要分成以下几部分:AudioTrack, AudioFlinger,AudioMixer, AudioHAL, Audio Buffer, AudioP

2016-02-20 19:57:22 1549

原创 android audio 音量设置分析

audiod 中经常遇到的场景是音量调整与输出设备的切换,下面两篇文章 针对这两个场景分别分析一下1,音量调整场景android 音量调整,可以使用两种方式: 软件mixer的时候修改PCM data  控制DAC硬件的增益第一种情况,如果是多路mix的情况,就是MixerThread进行软件mixer,然后在mixer计算的时候来缩放PCM data,

2016-02-20 19:56:25 7294

原创 exynos SOC 平台的openmax component 运行分析

研究了一下exynos平台上的openmax component组件,绕来绕去的很绕。这里总结一下。先上个总体图:曾经尝试把awesomeplayer,以及OMXCodec里的各种event流程,queue流程,内存使用释放路径,以及各种线程概念全画到图里,却发现东西太多太杂,导致图混乱不堪。索性,这里重点只贴Exynos平台自己的东西,把重点放在数据流向,以及

2016-01-20 23:17:16 1208

原创 awesomeplayer_event 分析

awesomeplayer里面,最重要的一个函数,就是AwesomePlayer::onVideoEvent这个函数囊括了AV同步,元数据读取,帧数据显示等很多工作。我们前面提到过这个函数。现在针对这个函数总结一下他的工作流程首先总结一下onVideoEvent是如何产生的前面讲过,status_t AwesomePlayer::prepareAsync_l() 调用的时候

2016-01-20 23:15:03 732

原创 awesomeplayer_openmax回调函数运行流程

前面介绍了一些初始化的东西。下面介绍一下OMX回调函数的注册。熟悉OMX的同学可能都知道,OMX运行的时候,最实质上的函数是依靠的fillBuffer, emptyBuffer,FillBufferDone,EmptyBufferDone等几个函数。那么这几个函数是如何注册,以及运行起来的呢?下面总结一下大体流程是这样的:OMXCodec使用emptyBuffer(

2016-01-20 23:11:31 1683

原创 awesomeplayer_openmax 初始化分析

我们知道stagefright进行编解码的流控是基于OMX的。首先我们总结一下OMX的初始化部分。此文借鉴了以下几篇文章。感谢作者http://blog.csdn.net/hellofeiya/article/details/8601168http://blog.csdn.net/tjy1985/article/details/7926133http://blog.cs

2016-01-20 23:08:22 1127

原创 android gralloc 小结

从字面就可以看出来Gralloc接口是为了显示内存分配与释放 – Graphics Allocation。它的主要目的有三个:Ø  为应用分配显示用内存;Ø  可以把显示内存在不同进程间进行映射;Ø  同步通过加载gralloc抽象层(gralloc.xxx.so),可以打开fb设备(/dev/fb0)和gpu设备(/dev/graphic/),fb设备用于操作fr

2016-01-13 23:02:33 5623 1

原创 android hwcomposer 在视频播放中的应用

之前写了一篇博客,分析了视频如何显示的,http://blog.csdn.net/wan8180192/article/details/50269405以及gralloc的内存管理这里结合hwcomposer模块,以及视频播放的场景,对其中有一些细节,在这里再做补充一下 。android中,多个surface layer要显示到屏幕上,就要合成到一起,合成方式有两种:

2016-01-13 22:59:48 3742 1

原创 c++使用dlsym

翻阅android源码时,发现以下代码:          CreateSoftOMXComponentFunc createSoftOMXComponent =            (CreateSoftOMXComponentFunc)dlsym(                    libHandle,                    "_Z22createSoft

2016-01-11 22:39:19 3577 1

原创 android 显示系统初步总结

最近研究了一下android的显示系统,参考了一些文档,做一点简单的总结1,废话不多说,先来一张 surfacefinger源码的source tree2,再上一张surfacefinger的组件图。(硬件平台是exynos CPU + MALI GPU)3,名词解释UMP : unified memory provider这是由ARM定义的

2016-01-11 22:30:18 2941

原创 arm soc 性能测试

最近有个需求,要把产品使用的某款ARM SOC的性能,和X86 桌面CPU性能做对比,从而确定某软件是否有价值移植到性能比较差的ARM SOC上。具体不细说了,总之,就是做一款类似于安兔兔的跑分工具现在把实现思路总结一下一,测试项:  1. CPU性能测试传统CPU性能测试主要有整点运算和浮点运算1.1 整点运算目前采用的算法包括了以下几项:整数排序、CRC

2016-01-11 22:21:46 3379

原创 android AV同步详解

本文主要介绍 android 多媒体中,音视频同步问题。以下是详细说明:先提及一个背景基础知识: Stagefright中,audio的数据输出是通过AudioTrack中的callback来不断驱动AudioPlayer::fillBuffer获取数据video的数据输出,则是由OMX端在解码完毕后,给awesomeplayer发送消息event,在awe

2015-12-20 13:35:37 4478

原创 android 解码出来的视频frame数据,是如何一步步的传递到显示端的(使用 GPU offline 合成)

经过一段时间的研究,对android视频解码,直到显示端的整体流程,有了浅薄的理解这里总结一下,解码出来的视频帧,是怎么一步步走到显示的。平台: Exynos 4412  android 4.41,  Exynos 4412 视频编解码依赖于硬件MFC。  解码出来的数据,不会进行原始数据的搬运。实际传递的是这些解码完数据的物理地址。2,显示端硬件获得这

2015-12-11 21:52:13 3636

原创 stagefright使用surfaceflinger buffer 的分析

之前学习了surfaceflinger和stagefright 两大模块,这两大模块之间联系最大的地方,就是surfaceflinger 管理显示buffer,然后stagefright 如何用这个buffer这里总结一下这一块自己学习的知识点平台samsung exynos ,android 4.4实际上本文想研究的就是三个问题:(1)如何获取显示buffer,并且怎

2015-12-11 21:34:28 3787 2

原创 以下链接可以下载到4412 和 210的很多底层代码

https://github.com/CyanogenMod?utf8=%E2%9C%93&query=CyanogenMod http://www.cyanogenmod.com/一直苦苦寻找4412和210在HAL层的实现代码。终于找到了

2015-08-26 14:10:44 652

转载 [RFC] drm/exynos: add FIMC driver

http://lists.freedesktop.org/archives/dri-devel/2012-April/022168.html[RFC] drm/exynos: add FIMC driverInki Dae inki.dae at samsung.com Fri Apr 27 02:43:04 PDT 2012 Previous message: [

2015-08-19 23:34:22 1503

转载 android 多媒体几个不错的博客

http://blog.csdn.net/gzzaigcnforever/article/details/26849549http://blog.csdn.net/crazyman2010/article/details/41750623

2015-08-06 16:41:17 1736

空空如也

空空如也

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

TA关注的人

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