- 博客(21)
- 资源 (12)
- 收藏
- 关注
原创 Android CSD信息传递flow
对于某些格式,会要求实际数据以特性的开头为前缀(CSD data)[Codec-special data]。这些数据最终会通过MediaCodec configure来传递。使用MediaCodec,会使用Android自带extractor/Vendor厂商扩展extractor或者apk自带extractor.前两种extractor,会调用Utils.cpp里面的convertMet
2017-05-12 11:33:48
878
原创 Android OMXNodeinstance/OMX Component交互
OMXNodeInstance.cpp:OMX_CALLBACKTYPE OMXNodeInstance::kCallbacks = { &OnEvent, &OnEmptyBufferDone, &OnFillBufferDone};OMX.cppstatus_t OMX:allocateNode...OMX_ERRORTYPE err = mMaste
2017-05-12 10:51:09
2698
原创 Android systrace使用
在Android debug过程中,有一些特殊情况(比如某个操作后,画面不平滑,已经查看过frame drop的原因,但没有头绪),需要使用systrace来查看CPU/进程/线程的运行情况.1.安装python2.7或以上可执行版本,并将可执行档路径加入环境变量。2.在Dos环境下输入python验证环境变量是否生效3.安装Android Sdk tools4.在Sdk tool
2017-05-11 16:07:01
775
原创 Android media播放卡顿问题分析流程
首先是看Audio是否卡顿,若Audio卡顿,则优先分析Audio.待Audio问题处理结束后,再看Video是否正常。对于non-tunnelplayback, 首先考虑apk是否有frame drop.若有,则主要考虑送数据是否慢以及driver解图是否慢。1.检查当前播放码流fps值,然后检查ACodec FBD是否有达到预期fps值。2.若FBD没有达到,则分析omx co
2017-05-09 20:55:16
6059
1
原创 Android消息处理
Alooper负责创建线程Ahandler负责创建Amessage消息并透过ALooperRoster传给Alooper放到messagequeueAlooper的run方法不停执行,从messagequeue里面获取第一个消息,通过ALooperRoster再返回给Ahandler处理。ALooperRoster负责将所有消息区分开然后再丢回给对应的Ahandler来处理
2017-05-09 20:17:57
411
原创 Android MediaServer初始化流程
Android M版framework/av/media/mediaserver/1.Main_mediaserver.cpp main()->创建mediaserver进程2.创建各种service:MediaPlayerService/ResourceManagerService
2016-03-22 22:22:32
1846
1
原创 Android ACodec学习
enum PortMode { KEEP_BUFFERS, RESUBMIT_BUFFERS, FREE_BUFFERS,}Android ACodec会根据当前处于哪个state来决定buffer如何处理。KEEP_BUFFERS:当ACodec处于BaseState或者收到OnInputBufferFilled消息但是buffer里面没有填有效数据的时
2016-03-03 10:20:51
4542
原创 Android MediaCodec学习
MediaCodec:setCallback:APK通过这个函数设置回调信息,当MediaCodec中需要回调信息给APK时就通过这个callback回调。MediaCodec:onInputBufferAvaible:MediaCodec通过上面的回调告诉APK当前有可用的input bufferMediaCodec:queueInputBuffer:Medi
2016-02-29 20:24:27
1315
原创 Android Surface相关常见问题
1.当Surface发生变化时需要重新设置宽高SurfaceHolder.Callback mSHCallback = new SurfaceHolder.Callback() { public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { ... holder.set
2016-02-29 11:07:00
781
原创 Android Media相关标准接口
hwc/gralloc相关android根目录\hardware\libhardware\include\hardware\surfaceflingerandroid根目录\frameworks\native\services\surfaceflinger\guiandroid根目录\frameworks\native\libsopengland
2016-02-29 10:13:08
554
原创 Exoplayer学习
DQ input->Q input->DQ input time out->DQ output->...->DQ output time-out->render/frame-drop->DQ input
2016-02-25 23:10:12
1515
原创 Anrdoid media中input buffer读取与控制
APK 通过extractor获取文件中的max-input-size并通过configCodec设给MediaCodec/ACodec.ACodec用max-input-size同allocated input buffer size做比较,如果前者大于后者则返回失败。extractor按照自己的逻辑去抓取每一帧数据,extractor中最大的数据size设为max-input-
2016-02-25 23:06:06
782
原创 Android apk退出时与OMX Component之间的交互
当Android apk退出时,会将apk手上的buffer全部drop掉,另外发flush给OMX Component. OMX Component发stop command给codec driver[使codec driver不在理会被上层占住的buffer]. 得到反馈后OMX Component将手上握有的buffer全部归还给media framework.
2016-01-25 14:37:01
647
原创 Android M Media学习
相较L版本,增加了FRAME_RENDERED的OMX Component notify message. For Tunneled Playback.
2016-01-25 14:34:28
627
原创 Android ANR问题分析
当APK因为ANR退出时,在/data/anr目录下会生成traces.txt,通过这个log通常可以看出卡住的callstack.一般开始的第一个callstack就是:"main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x737a0fa0 self=0xb88f8350 | sysTid
2016-01-21 20:37:26
1365
原创 Android thumbnail显示逻辑
Android显示thumbnail是通过调用getFrameAtTime(StagefrightMetadataRetriever.cpp)来实现的。通过OMXCodec::kPreferSoftwareCodecs来优先选用software.extractVideoFrame里面透过decoder->dequeueOutputBuffer来获取decoder解码好的frame,
2015-12-23 15:43:56
927
转载 android中if判断引起的crash
在Android debug过程中有如下的crash.11-05 03:11:24.271 1262 1262 F DEBUG : #00 pc 00022234 /system/lib/libstagefright_omx.so (android::OMXNodeInstance::onEvent(OMX_EVENTTYPE, unsigned int, unsigne
2015-11-05 19:15:43
798
原创 Android ACodec消息机制一
ACodec有一个BaseState和派生出来的其他State. FlushingState,ExecutingState等。 当有消息来的时候,如果派生类有重写,则会调到重写的方法里,如果没有,则会调到BaseState. ACodec收到的消息分两种,一种是MediaCodec传过来的,一种是OMX Component传过来的。分别对应onMessageReceived和o
2015-09-19 14:35:01
3378
世界因你不同 李开复
2010-01-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人