yanbixing123
码龄10年
关注
提问 私信
  • 博客:465,050
    社区:1,617
    466,667
    总访问量
  • 107
    原创
  • 382,230
    排名
  • 695
    粉丝
  • 9
    铁粉

个人简介:曾师从于:世界芯片设计前10某公司,传说中的世界500强某米,被美丽国实体清单拉黑的某AI巨头,嵌入式黄埔军校某台企;毕业于某非985,211的双一流学校; Camera算法,HAL,Android MultiMedia Framework,StageFright,OpenMAX; 嵌入式uboot,linux驱动,Andorid底层,i.MX6 IPU专栏,GStreamer专栏^_^~ 小富靠勤,大富靠命。技术是通向小富的一条现实可行的路径。祝大家顺利~~~

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2014-11-08
博客简介:

吾皇的博客

博客描述:
小闫的心情日记本~~~ 开玩笑啦~~ 嵌入式uboot,linux驱动,Andorid底层。 i.MX6 IPU专栏,GStreamer专栏^_^~
查看详细资料
个人成就
  • 博客专家认证
  • 获得354次点赞
  • 内容获得128次评论
  • 获得917次收藏
  • 代码片获得537次分享
创作历程
  • 3篇
    2022年
  • 1篇
    2020年
  • 18篇
    2019年
  • 3篇
    2018年
  • 3篇
    2017年
  • 103篇
    2016年
成就勋章
TA的专栏
  • GStreamer专栏
    31篇
  • i.MX6-IPU子系统
    35篇
  • Android MultiMedia框架完全解析
    21篇
  • GStreamer
    31篇
  • 嵌入式
    33篇
  • LINUX
    2篇
  • 职场与生活
    5篇
  • FFMPEG
    3篇
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 移动开发
    android studio
创作活动更多

2024 博客之星年度评选报名已开启

博主的专属年度盛宴,一年仅有一次!MAC mini、大疆无人机、华为手表等精美奖品等你来拿!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

20. Android MultiMedia框架完全解析 - OMX组件解析与状态机简介

State类中会做一些常规的操作,而不同类中处理不同的状态类型转换,这句话是什么意思呢?参照上一篇文章中讲的OMX的使用例子,首先通过OMX_Init()函数来初始化OMX的环境,在这个函数中会去注册组件,注册content pipe,之后就会通过OMX_GetHandle()函数来构建组件,并获取这个组件的Handler,在这个函数中会通过上述的ConstructComponent()函数来构建组件,并通过SetCallbacks来设置组件的回调函数,此时就完成了组件的加载,状态为Loaded。
原创
发布博客 2022.10.10 ·
2892 阅读 ·
4 点赞 ·
1 评论 ·
4 收藏

19. Android MultiMedia框架完全解析 - 如何使用OpenMAX组件

Android MultiMedia框架完全解析 - 如何使用OpenMAX组件
原创
发布博客 2022.10.10 ·
1740 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏

18. Android MultiMedia框架完全解析 - OpenMAX介绍

OpenMAX IL API通过C语言致力于打造可移植媒体组件的阵列平台。这些组件可以是来源(source)、汇出(sink)、编解码器(codec)、过滤器(filter)、分离器(splitter)、混频器(mixers),或任何其他操作。OpenMAX IL API允许用户加载,控制,连接和卸载各个组件。Android主要的多媒体引擎StageFright是通过IBinder使用Open...
原创
发布博客 2022.10.10 ·
2880 阅读 ·
2 点赞 ·
4 评论 ·
7 收藏

2019年终总结

这篇总结一直拖到2/27号才写, 希望能在2/29号之前写完吧, 啊哈哈哈.按照国际惯例, 肯定是先记录一年的流水帐~美好的日子总是过的很匆忙的, 依稀记得过完年后就正式开始离职流程了, 这一个月内好像没有啥新的工作要做了. 然后就开始了上班打卡, 下班打游戏的小日子, 过的也美滋滋. 大约过了两周后, 就感觉有些许的空虚, 想着以后不深入的多媒体方向了, 不总结一下, 感觉对不起自...
原创
发布博客 2020.04.01 ·
1414 阅读 ·
7 点赞 ·
14 评论 ·
0 收藏

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

这里的代码分析流程就是《15. Android MultiMedia框架完全解析 - Render流程分析》中的代码流程,上次主要关注的是buffer的交互流程,这次主要分析的是音视频同步,即AVsync。(一)音视频同步概念与方法音视频同步是一个播放器要处理的基本问题,音视频同步的好坏直接影响到播放效果。解码后的音频片段和视频片段,都分别带有 pts 时间戳信息。回放时需要做的...
原创
发布博客 2019.04.01 ·
5363 阅读 ·
15 点赞 ·
1 评论 ·
31 收藏

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

之前的文章中,已经多次分析过ACodec,但是我仍然认为有必要单独拿出来一节分析其中的一些机制与流程,下面先来看看ACodec在整个NuPlayer架构中的位置:1、ACodec消息机制:ACodec有一个BaseState和派生出来的其他State,如 UninitializedState,LoadedToIdleState, ExecutingState等。当有消息过来时,如果派生...
原创
发布博客 2019.04.01 ·
6361 阅读 ·
11 点赞 ·
2 评论 ·
23 收藏

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

先来看Render在NuPlayer框架中所处的位置:Renderer的作用就是根据传过来数据帧的时间来判断这一帧是否需要渲染,并进行音视频的同步。但是真正硬件渲染的代码在MediaCodec和ACodec中。Renderer的位置是在NuPlayerDecoder后面,他俩之间的交互是从NuPlayer::Decoder::handleAnOutputBuffer()函数开始的...
原创
发布博客 2019.04.01 ·
3871 阅读 ·
7 点赞 ·
0 评论 ·
13 收藏

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

上一篇文章中详细分析了MediaCodec,以及由它向下的内容,但是在MediaCodec外面包裹的是一层NuPlayerDecoder,这里就看看它们两者之间是如何沟通的。从理论上来讲,既然NuPlayerDecoder包裹在MediaCodec外层,所以它相对于MediaCodec也可以理解为App,它调用MediaCodec的API来完成一些任务。下面就详细看看这个流程:1. ...
原创
发布博客 2019.04.01 ·
3429 阅读 ·
6 点赞 ·
0 评论 ·
14 收藏

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

MeidaCodec API: https://developer.android.com/reference/android/media/MediaCodecMediaCodec是一个Codec,通过硬件加速解码和编码。它为芯片厂商和应用开发者搭建了一个统一接口。MediaCodec几乎是所有安卓播放器硬解的标配,要深入分析一个播放器的源码,如NuPlayer, ijkplayer,有必要了...
原创
发布博客 2019.04.01 ·
9305 阅读 ·
4 点赞 ·
1 评论 ·
24 收藏

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

之前的文章中,讲了那么多细节的东西,已经对概况没有一个大致的了解,所以这里缕一下整体的流程,同时也分析MediaCodec,ACodec与OMX Plugin之间的状态切换关系。(一)初始化过程(从NuPlayer开始):1. NuPlayer::start()时产生一个kWhatStart,在消息处理函数中如果是暂停后的开始就调用NuPlayer::onResume()【只需m...
原创
发布博客 2019.04.01 ·
9758 阅读 ·
22 点赞 ·
10 评论 ·
65 收藏

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

还是从mediaplayer.cpp开始分析,看start函数的实现:status_t MediaPlayer::start(){mPlayer->setLooping(mLoop); mPlayer->setVolume(mLeftVolume, mRightVolume); mPlayer->setAuxEffectSendLevel(mSendLe...
原创
发布博客 2019.04.01 ·
3131 阅读 ·
6 点赞 ·
1 评论 ·
12 收藏

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

先来看看MediaExtractor所处的位置:(一)创建流程在GenericSource.cpp的NuPlayer::GenericSource::initFromDataSource()函数中调用了:extractor = MediaExtractor::Create(mDataSource, mimeType.isEmpty() ? N...
原创
发布博客 2019.04.01 ·
2692 阅读 ·
2 点赞 ·
2 评论 ·
6 收藏

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

MediaExtractor API: https://developer.android.com/reference/android/media/MediaExtractorAndroid中Native层抽象出来MediaMuxer类和MediaExtractor类,MediaMuxer类主要用于将音频和视频数据进行混合生成多媒体文件(如:mp4文件),而MediaExtractor则...
原创
发布博客 2019.03.31 ·
2879 阅读 ·
2 点赞 ·
0 评论 ·
6 收藏

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

还是从mediaplayer.cpp文件开始分析:status_t MediaPlayer::prepareAsync(){ ALOGV("prepareAsync"); Mutex::Autolock _l(mLock); return prepareAsync_l();}基本没做什么,设置了一个自动锁,然后就直接跳到MediaPlayer::prepare...
原创
发布博客 2019.03.31 ·
2471 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

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

先来看整个框架图:NuPlayer基于Stagefright的基础类构建,使用了更底层的ALooper-AHandler-AMessage机制来异步处理消息。AMessage作为一个消息载体,保存这与这个消息有关的信息;ALooper是一个循环,它运行着一个后台线程,来循环处理接收到的消息(将信息转给AHandler来处理,它相当于一个中转站);AHandler作为一个句柄,它...
原创
发布博客 2019.03.31 ·
3363 阅读 ·
4 点赞 ·
0 评论 ·
20 收藏

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

先解决NuPlayer与NuPlayerDriver的通信过程,在之前的文章中,都说了NuPlayerDriver是NuPlayer的一个Wrapper,上层的指令发送给NuPlayerDriver后,NuPlayer作为NuPlayerDriver的一个成员变量,NuPlayerDriver想调用NuPlayer的话,就相当简单。当NuPlayer完成一个指令后,如何通知NuPlayerDriv...
原创
发布博客 2019.03.31 ·
2839 阅读 ·
3 点赞 ·
2 评论 ·
6 收藏

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

经过前面的分析,我们大概知道了一些概念,但是这个StageFright在整个playback的位置是什么样的:Android Media这一块的知识杂乱,而且有深度,有广度。深度的话,从app->JNI->C++->底层的OMX驱动,广度的话,每个播放器在播放的时候,会执行seek操作,快进,快退,暂停等等操作,同时,需要涉及读取源文件(从网络读取,从文件读取),解码(软...
原创
发布博客 2019.03.31 ·
3497 阅读 ·
15 点赞 ·
1 评论 ·
11 收藏

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

这里的实现,可以参照C++设计模式中的工厂模式,:http://blog.csdn.net/wuzhekai1985/article/details/6660462这里插讲一下厂商定制Player的过程,可以参考NuPlayer的创建过程,通过这个过程,也能够对MediaPlayerFactory类有个比较深入的理解。(这里需要注意,代码是KK442版本的,FSL在那个版本使用OMX...
原创
发布博客 2019.03.31 ·
3307 阅读 ·
8 点赞 ·
0 评论 ·
8 收藏

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

在上一节中,我们分析到从服务端返回后,函数的执行流程(NO_ERROR != player->setDataSource(fd, offset, length)))这里继续执行,从服务端返回后,这个player就对应的是MediaPlayerService::Client,同时需要注意的是,在《Android中C/S架构以及C++层调用步骤分析》中介绍了创建了一个IMediaPlay...
原创
发布博客 2019.03.31 ·
3948 阅读 ·
10 点赞 ·
2 评论 ·
9 收藏

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

在Android中大量使用到了C/S架构来实现应用层和底层服务交互,而Binder机制无处不在。同样MediaPlayer也使用了这种机制,MediaPlayer在运行的时候,同样可以分为Client/Server两个部分,他们分别在不同的进程中运行,不同进程间的通信使用Binder机制,我们这里就以setDataSource()为例,讲解一下他们是如何建立关系的,架构图如下:1)...
原创
发布博客 2019.03.31 ·
4567 阅读 ·
15 点赞 ·
1 评论 ·
19 收藏
加载更多