12 bencharluo

尚未进行身份认证

Android

等级
TA的排名 19w+

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

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

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

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

Android消息处理

Alooper负责创建线程Ahandler负责创建Amessage消息并透过ALooperRoster传给Alooper放到messagequeueAlooper的run方法不停执行,从messagequeue里面获取第一个消息,通过ALooperRoster再返回给Ahandler处理。ALooperRoster负责将所有消息区分开然后再丢回给对应的Ahandler来处理

2017-05-09 20:17:57

Android MediaServer初始化流程

Android M版framework/av/media/mediaserver/1.Main_mediaserver.cpp main()->创建mediaserver进程2.创建各种service:MediaPlayerService/ResourceManagerService

2016-03-22 22:22:32

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

Android MediaCodec学习

MediaCodec:setCallback:APK通过这个函数设置回调信息,当MediaCodec中需要回调信息给APK时就通过这个callback回调。MediaCodec:onInputBufferAvaible:MediaCodec通过上面的回调告诉APK当前有可用的input bufferMediaCodec:queueInputBuffer:Medi

2016-02-29 20:24:27

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

Android Media相关标准接口

hwc/gralloc相关android根目录\hardware\libhardware\include\hardware\surfaceflingerandroid根目录\frameworks\native\services\surfaceflinger\guiandroid根目录\frameworks\native\libsopengland

2016-02-29 10:13:08

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

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

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

Android M Media学习

相较L版本,增加了FRAME_RENDERED的OMX Component notify message. For Tunneled Playback.

2016-01-25 14:34:28

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

Android thumbnail显示逻辑

Android显示thumbnail是通过调用getFrameAtTime(StagefrightMetadataRetriever.cpp)来实现的。通过OMXCodec::kPreferSoftwareCodecs来优先选用software.extractVideoFrame里面透过decoder->dequeueOutputBuffer来获取decoder解码好的frame,

2015-12-23 15:43:56

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

Android Media显示的层次

Main/Sub/GfxSurfaceTexture是由apk直接创建的

2015-10-30 17:36:17

Android ACodec消息机制一

ACodec有一个BaseState和派生出来的其他State. FlushingState,ExecutingState等。    当有消息来的时候,如果派生类有重写,则会调到重写的方法里,如果没有,则会调到BaseState.    ACodec收到的消息分两种,一种是MediaCodec传过来的,一种是OMX Component传过来的。分别对应onMessageReceived和o

2015-09-19 14:35:01

一些有用的linux命令

...

2015-09-14 10:53:07

查看更多

勋章 我的勋章
    暂无奖章