自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吾皇的博客

小闫的心情日记本~~~ 开玩笑啦~~ 嵌入式uboot,linux驱动,Andorid底层。 i.MX6 IPU专栏,GStreamer专栏^_^~...

原创 17. Android MultiMedia框架完全解析 - MediaClock分析与音视频同步

这里的代码分析流程就是《15. Android MultiMedia框架完全解析 - Render流程分析》中的代码流程,上次主要关注的是buffer的交互流程,这次主要分析的是音视频同步,即AVsync。 (一)音视频同步概念与方法 音视频同步是一个播放器要处理的基本问题,音视频同步的好...

2019-04-01 21:28:45

阅读数 702

评论数 0

原创 16. Android MultiMedia框架完全解析 - ACodec详细解析

之前的文章中,已经多次分析过ACodec,但是我仍然认为有必要单独拿出来一节分析其中的一些机制与流程,下面先来看看ACodec在整个NuPlayer架构中的位置: 1、ACodec消息机制: ACodec有一个BaseState和派生出来的其他State,如 UninitializedSt...

2019-04-01 21:18:40

阅读数 485

评论数 0

原创 15. Android MultiMedia框架完全解析 - Render流程分析

先来看Render在NuPlayer框架中所处的位置: Renderer的作用就是根据传过来数据帧的时间来判断这一帧是否需要渲染,并进行音视频的同步。但是真正硬件渲染的代码在MediaCodec和ACodec中。 Renderer的位置是在NuPlayerDecoder后面,他俩之间的...

2019-04-01 21:11:58

阅读数 375

评论数 0

原创 14. Android MultiMedia框架完全解析 - NuPlayerDecoder与MediaCodec的交互

上一篇文章中详细分析了MediaCodec,以及由它向下的内容,但是在MediaCodec外面包裹的是一层NuPlayerDecoder,这里就看看它们两者之间是如何沟通的。 从理论上来讲,既然NuPlayerDecoder包裹在MediaCodec外层,所以它相对于MediaCodec也可以理...

2019-04-01 21:10:11

阅读数 390

评论数 0

原创 13. Android MultiMedia框架完全解析 - MediaCodec解析

MeidaCodec API: https://developer.android.com/reference/android/media/MediaCodec MediaCodec是一个Codec,通过硬件加速解码和编码。它为芯片厂商和应用开发者搭建了一个统一接口。MediaCodec几乎是所...

2019-04-01 21:08:23

阅读数 865

评论数 0

原创 12. Android MultiMedia框架完全解析 - 从NuPlayer到MediaCodec到ACodec到OMX的整体流程与状态转换

之前的文章中,讲了那么多细节的东西,已经对概况没有一个大致的了解,所以这里缕一下整体的流程,同时也分析MediaCodec,ACodec与OMX Plugin之间的状态切换关系。 (一)初始化过程(从NuPlayer开始): 1. NuPlayer::start()时产生一个kWhat...

2019-04-01 21:05:19

阅读数 1200

评论数 2

原创 11. Android MultiMedia框架完全解析 - start流程分析

还是从mediaplayer.cpp开始分析,看start函数的实现: status_t MediaPlayer::start() { mPlayer->setLooping(mLoop); mPlayer->setVolume(mLeftVolume, mRightVol...

2019-04-01 20:59:57

阅读数 389

评论数 0

原创 10. Android MultiMedia框架完全解析 - MediaExtractor::Create函数的解析和FslExtractor分析

先来看看MediaExtractor所处的位置: (一)创建流程 在GenericSource.cpp的NuPlayer::GenericSource::initFromDataSource()函数中调用了: extractor = MediaExtractor::Create(m...

2019-04-01 20:53:54

阅读数 385

评论数 2

原创 9. Android MultiMedia框架完全解析 - MediaExtractor和MediaMuxer介绍

MediaExtractor API: https://developer.android.com/reference/android/media/MediaExtractor Android中Native层抽象出来MediaMuxer类和MediaExtractor类,MediaMuxer...

2019-03-31 13:19:23

阅读数 363

评论数 0

原创 8. Android MultiMedia框架完全解析 - prepareAsync的过程分析

还是从mediaplayer.cpp文件开始分析: status_t MediaPlayer::prepareAsync() { ALOGV("prepareAsync"); Mutex::Autolock _l(mLock); return pre...

2019-03-31 13:14:33

阅读数 311

评论数 0

原创 7. Android MultiMedia框架完全解析 - ALooper-AHandler-AMessage机制分析

先来看整个框架图: NuPlayer基于Stagefright的基础类构建,使用了更底层的ALooper-AHandler-AMessage机制来异步处理消息。 AMessage作为一个消息载体,保存这与这个消息有关的信息; ALooper是一个循环,它运行着一个后台线程,来循环处理接收...

2019-03-31 13:04:35

阅读数 337

评论数 0

原创 6. Android MultiMedia框架完全解析 - NuPlayerDriver与NuPlayer的通信

先解决NuPlayer与NuPlayerDriver的通信过程,在之前的文章中,都说了NuPlayerDriver是NuPlayer的一个Wrapper,上层的指令发送给NuPlayerDriver后,NuPlayer作为NuPlayerDriver的一个成员变量,NuPlayerDriver想调...

2019-03-31 12:59:06

阅读数 295

评论数 2

原创 5. Android MultiMedia框架完全解析 - 再谈Playback框架及一些学习方法的讨论

经过前面的分析,我们大概知道了一些概念,但是这个StageFright在整个playback的位置是什么样的: Android Media这一块的知识杂乱,而且有深度,有广度。深度的话,从app->JNI->C++->底层的OMX驱动,广度的话,每个播放器在播放的时候,会执...

2019-03-31 12:53:53

阅读数 340

评论数 0

原创 4. Android MultiMedia框架完全解析 - MediaPlayerFactory中OMX_Player的实现

这里的实现,可以参照C++设计模式中的工厂模式,:http://blog.csdn.net/wuzhekai1985/article/details/6660462 这里插讲一下厂商定制Player的过程,可以参考NuPlayer的创建过程,通过这个过程,也能够对MediaPlayerFacto...

2019-03-31 12:42:17

阅读数 357

评论数 0

原创 3. Android MultiMedia框架完全解析 - setDataSource继续分析

在上一节中,我们分析到从服务端返回后,函数的执行流程 (NO_ERROR != player->setDataSource(fd, offset, length))) 这里继续执行,从服务端返回后,这个player就对应的是MediaPlayerService::Client,同时需要注...

2019-03-31 12:34:18

阅读数 398

评论数 0

原创 2. Android MultiMedia框架完全解析 - MediaPlayer的C/S架构与Binder机制实现

在Android中大量使用到了C/S架构来实现应用层和底层服务交互,而Binder机制无处不在。 同样MediaPlayer也使用了这种机制,MediaPlayer在运行的时候,同样可以分为Client/Server两个部分,他们分别在不同的进程中运行,不同进程间的通信使用Binder机制,我们...

2019-03-31 12:27:14

阅读数 394

评论数 0

原创 1. Android MultiMedia框架完全解析 - 从开机到MediaServer的注册过程

Android的App一般是用java写的,大致流程如下: MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { @Overri...

2019-03-31 12:10:05

阅读数 647

评论数 1

原创 Android MultiMedia框架完全解析 - 概览

之前的工作中,一直在看Android MultiMedia的一些东西,关注我博客的同学也许知道我换工作了,以后将要从事Camera相关的工作,于是乎,将之前整理存放在有道云笔记里面的一些东西发出来,整理成一个专栏。 工作的环境为Android N7.1,基于fsl公司的i.MX6q平台。 ...

2019-03-31 11:37:52

阅读数 737

评论数 3

原创 2018年终总结

又一年过去了,时间真快,其实写这篇2018的总结,我是拒绝的,打开了 两次,终究是没有写下去,这不,第三次打开这个网页,怀着一种瑟瑟发抖的心情,你说为啥腻?能为啥鸭,2017年定的计划,Emmm......应该几乎都没有实现吧。。。 先把17年时指定的计划粘贴在这里,逐条评论吧: 工作: 1...

2019-02-15 16:34:50

阅读数 301

评论数 2

原创 基于Android O8.1的ffmpeg NDK 开发 - 3 - CMakeList.txt解析

上两篇文章中,只是讲了APP如何创建,他们都使用到了同一个CMakeList.txt文件,但是没有仔细分析这个文件的作用,现在就仔细分析一下. 首先什么是CMakeList.txt,它是一个构建工具CMake所使用的文件,CMake与Make工具类似,Make工具使用Makefile来确定编译规...

2018-07-30 15:18:05

阅读数 215

评论数 0

原创 基于Android O8.1的ffmpeg NDK 开发 - 2 - APP显示ffmpeg所支持协议,编解码,过滤器,格式,配置等信息

我们今天的目标是仿照雷神的博客(https://blog.csdn.net/leixiaohua1020/article/details/47008825),把这个APP写出来,先上图: APP中有5个按钮,点击不同的按钮,会有不同的ffmpeg信息显示出来,分别是我们编译的ffmpeg所支...

2018-07-30 09:56:21

阅读数 126

评论数 0

原创 基于Android O8.1的ffmpeg NDK 开发 - 1 - Hello World!

  很多做NDK开发的人(像我这样从底层转过来的 >_<!)对于Android app的开发不是很理解,而ffmpeg的NDK开发现在又离不开Andorid app。网上虽然教程虽多,但是很多过时或者与NDK开发需求的不契合,或者ffmpeg与Android Stud...

2018-07-26 22:38:15

阅读数 294

评论数 0

原创 2017年终总结

开始上班的日子简直不能用飞速来形容了,还依稀记得去年在北京写16年终总结的情形,这不,2017年已然过去,就要迈入2018了。这两天朋友圈开始兴起晒18岁照片的日子,最后一批90后已经成为成年人,未来已经是00后的了~照片或帅气或有年代感,甚至杀马特,可惜的是,我甚至连一张杀马特的照片都没有~于是...

2017-12-31 16:23:25

阅读数 1203

评论数 2

原创 第一次作为面试官的感悟

这几天有幸跟着老员工经历了一场校园招聘。遥想去年还是一个小小求职者,现在就要坐在桌子的对面,角色的转变,还是感触良多,就简单记下来。最近半年绝少写博客了,第一个原因当然是工作太忙了~ 显然,明白人都知道,这只是一句多么空洞敷衍的话。真实的原因恐怕是我懒了。。。第二个原因呢,是最近确实写了很多笔记,...

2017-09-29 22:42:48

阅读数 5154

评论数 2

原创 给校园招聘中应聘嵌入式程序员的几点建议

又快到了一年的校园招聘季节,俗话说金九银十,如果想要在金色的九月,收获颇丰,那么,从3月份开始准备面试笔试相关的部分,不算过分。当然,我并不是指现在从头学,等到九月份就可以轻轻松松的收获一个不错的offer,找工作其实是几年的积累。当然,如果问有什么技巧没?当然是有的,下面针对应聘嵌入式的同学简单...

2017-02-15 23:20:25

阅读数 2787

评论数 0

原创 我的2016年终总结

眨眼之间,2016已经过去了。本来不想煽情,可是最近屡屡被虐,还是简单写写这一年的感触吧~~~ 2016年初,老师不让出去找实习,小论文没有发表,准确来说,有关小论文的研究根本就没有进行,可能连毕业都成问题的,自己还是毅然决然的准备去找实习。毕竟未来还是想找一个好工作的,自己也深知不是做学术的那块...

2017-01-12 23:17:53

阅读数 860

评论数 10

原创 7. GStreamer建议的学习步骤和网页链接汇总

学习步骤: 0. 可以看看我做的《GStreamer讲解》ppt入门,里面对于很多知识的入门讲解,不用积分,下载链接: 1. 学习《GStreamer中文开发手册.pdf》,这时候结合《GStreamer基础教程》和《GStreamer播放教程》来看; 2. 如果想要深入理解应用开发的话,可以写...

2016-10-30 10:16:18

阅读数 3826

评论数 3

原创 6. Gobject 学习总结

简单的来说,GObject是一个程序库,它可以帮助我们使用C语言编写面向对象的程序。   很多人被灌输了这样一种概念:要写面向对象程序,那么就需要学习一种面向对象编程语言,例如C++、Java、C# 等等,而 C 语言是用来编写结构化程序的。事实上,面向对象只是一种编程思想,不是一种编程语言。...

2016-10-30 10:13:43

阅读数 2728

评论数 0

原创 5. gstreamer插件所用函数整理

gstreamer插件所用函数整理 2016-10-06 08:30:46 (一)设置插件属性相关的函数: (1) g_param_spec_boolean () 函数链接如下: https://developer.gnome.org/gobject/stable/gobject-Sta...

2016-10-30 10:05:47

阅读数 1749

评论数 0

原创 4. gstimxv4l2src.c源码分析

由于这个文件中会调用到GStreamer 1.0 Core Reference Manual中的很多函数,但是如果将这些函数的分析放在代码分析中的话,就会严重影响可读性,于是将这些函数的讲解都放在《gstreamer插件所用函数整理》这个文件中,这两个文件中的标号都是相同的,如果遇到不理解的函...

2016-10-30 10:03:32

阅读数 2208

评论数 0

原创 3. init函数和class_init函数的讲解

如何去使用GObject去构建一个所谓的“对象”呢?GObject中每个类要定义两个结构体,假设你要定义的类型为People,那么你要定义两个结构分别名为People和PeopleClass,估计刚接触的人会有些晕,一般的C++啊,JAVA什么的都是直接一个class了事儿了。但记住C本身并没有面...

2016-10-30 09:34:24

阅读数 3231

评论数 2

原创 2. gobject中G_DEFINE_TYPE和g_object_new流程简介

C语言如何实现gobject面向对象支持呢?很简单,我们只需要建立自己的头文件,并在 .c 文件中添加一个宏定义G_DEFINE_TYPE即可。   G_DEFINE_TYPE的流程(G_DEFINE_TYPE在 GLIB 的gobject/gtype.h 中定义):#define G_DEF...

2016-10-30 09:27:29

阅读数 3874

评论数 0

原创 1. 插件编写的原则及文件目录分析

gstreamer的相关路径,有两个路径,如下所示:   fsl-release-bsp/build-x11/tmp/work/imx6qsabresd-poky-linux-gnueabi/gst1.0-fsl-plugin/4.0.8-r0/gst1.0-fsl-plugins-4.0.8...

2016-10-30 09:22:35

阅读数 1098

评论数 1

转载 GObject 学习笔记汇总---15

转自: http://garfileo.is-programmer.com/2011/3/28/a-simple-example-for-gobject-introspection.25662.html GObject Introspection 的简单示例 这段时间以来,一直在跟...

2016-10-18 19:43:10

阅读数 616

评论数 0

转载 GObject 学习笔记汇总---14

转自: http://garfileo.is-programmer.com/2011/4/4/gobject-signal-connection.25847.html GObject 信号机制——信号连接 文档 [1, 2] 讲述了 GObject 信号注册的相关细节,本文进...

2016-10-18 19:34:59

阅读数 572

评论数 0

转载 GObject 学习笔记汇总---13

转自: http://garfileo.is-programmer.com/2011/3/27/gobject-signal-extra-2.25621.html GObject 信号机制——信号 Accumulator 在文档 [1] 中,从外围对 GObject 信号注册的过程...

2016-10-18 19:33:49

阅读数 560

评论数 0

转载 GObject 学习笔记汇总---12

转自: http://garfileo.is-programmer.com/2011/3/25/gobject-signal-extra-1.25576.html GObject 信号机制——信号注册 上一篇文档“GObject 的信号机制”只是挖了一个坑便结束了,本篇尝试填坑,不过也不敢有...

2016-10-18 19:25:19

阅读数 555

评论数 0

转载 GObject 学习笔记汇总---11

转自: http://garfileo.is-programmer.com/2011/3/22/gobject-deconstruction.25485.html GObject 子类对象的析构过程 在“GObject 的信号机制”文中,谈到 GObject 子类对象的析构过程分为...

2016-10-18 15:51:41

阅读数 697

评论数 0

转载 GObject 学习笔记汇总---10

转自: http://garfileo.is-programmer.com/2011/3/21/gobject-signal.25477.html GObject 的信号机制——概览 手册所述,GObject 信号(Gignal)主要用于特定事件与响应者之间的连接,它与操作系统级中...

2016-10-18 15:48:41

阅读数 545

评论数 0

转载 GObject 学习笔记汇总---9

转自: http://garfileo.is-programmer.com/2011/3/20/function-pointer-and-callback-function-and-closure.25453.html 函数指针、回调函数与 GObject 闭包 本文首先复习一下基...

2016-10-18 15:44:36

阅读数 719

评论数 0

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