OMX只是一个框架,所以解码器是硬解还是软解都没关系,而且大多说厂家的硬解码都是使用OMX框架
2014-12-18 11:48
573 查看
转自 http://blog.sina.com.cn/foreverlovelost
OMX只是一个框架,所以与解码器是硬解还是软解都没关系,而且大多说厂家的硬解码都是使用OMX框架
数据格式及OMX输入缓冲细节
enum State{
DEAD,
LOADED,
LOADED_TO_IDLE,
IDLE_TO_EXECUTING,
EXECUTING,
EXECUTING_TO_IDLE,
IDLE_TO_LOADED,
RECONFIGURING,
ERROR
};
enum{
kPortIndexInput = 0,
kPortIndexOutput =1
};
enum PortStatus{
ENABLED,
DISABLING,
DISABLED,
ENABLING,
SHUTTING_DOWN,
};
enum Quirks{
kNeedsFlushBeforeDisable = 1,
kWantsNALFragments = 2,
kRequiresLoadedToIdleAfterAllocation =4,
kRequiresAllocateBufferOnInputPorts =8,
kRequiresFlushCompleteEmulation = 16,
kRequiresAllocateBufferOnOutputPorts =32,
kRequiresFlushBeforeShutdown = 64,
kDefersOutputBufferAllocation = 128,
kDecoderLiesAboutNumberOfChannels = 256,
kInputBufferSizesAreBogus =512,
kSupportsMultipleFramesPerInputBuffer = 1024,
kAvoidMemcopyInputRecordingFrames = 2048,
kRequiresLargerEncoderOutputBuffer = 4096,
kOutputBuffersAreUnreadable = 8192,
};
enumBufferStatus {
OWNED_BY_US,
OWNED_BY_COMPONENT,
OWNED_BY_NATIVE_WINDOW,
OWNED_BY_CLIENT,
};
structBufferInfo {
IOMX::buffer_idmBuffer;
BufferStatusmStatus;
sp<IMemory> mMem;
size_tmSize;
void *mData;
MediaBuffer*mMediaBuffer;
};
structCodecSpecificData {
size_tmSize;
uint8_tmData[1];
};
err =mOMX->sendCommand(mNode, OMX_CommandStateSet,OMX_StateIdle);
status_t err= mOMX->emptyBuffer(
mNode,info->mBuffer, 0, size,
OMX_BUFFERFLAG_ENDOFFRAME |OMX_BUFFERFLAG_CODECCONFIG,
0);
err = mOMX->emptyBuffer(
mNode,info->mBuffer, 0, offset,
flags,timestampUs);
OMX只是一个框架,所以与解码器是硬解还是软解都没关系,而且大多说厂家的硬解码都是使用OMX框架
数据格式及OMX输入缓冲细节
enum State{
DEAD,
LOADED,
LOADED_TO_IDLE,
IDLE_TO_EXECUTING,
EXECUTING,
EXECUTING_TO_IDLE,
IDLE_TO_LOADED,
RECONFIGURING,
ERROR
};
enum{
kPortIndexInput = 0,
kPortIndexOutput =1
};
enum PortStatus{
ENABLED,
DISABLING,
DISABLED,
ENABLING,
SHUTTING_DOWN,
};
enum Quirks{
kNeedsFlushBeforeDisable = 1,
kWantsNALFragments = 2,
kRequiresLoadedToIdleAfterAllocation =4,
kRequiresAllocateBufferOnInputPorts =8,
kRequiresFlushCompleteEmulation = 16,
kRequiresAllocateBufferOnOutputPorts =32,
kRequiresFlushBeforeShutdown = 64,
kDefersOutputBufferAllocation = 128,
kDecoderLiesAboutNumberOfChannels = 256,
kInputBufferSizesAreBogus =512,
kSupportsMultipleFramesPerInputBuffer = 1024,
kAvoidMemcopyInputRecordingFrames = 2048,
kRequiresLargerEncoderOutputBuffer = 4096,
kOutputBuffersAreUnreadable = 8192,
};
enumBufferStatus {
OWNED_BY_US,
OWNED_BY_COMPONENT,
OWNED_BY_NATIVE_WINDOW,
OWNED_BY_CLIENT,
};
structBufferInfo {
IOMX::buffer_idmBuffer;
BufferStatusmStatus;
sp<IMemory> mMem;
size_tmSize;
void *mData;
MediaBuffer*mMediaBuffer;
};
structCodecSpecificData {
size_tmSize;
uint8_tmData[1];
};
err =mOMX->sendCommand(mNode, OMX_CommandStateSet,OMX_StateIdle);
status_t err= mOMX->emptyBuffer(
mNode,info->mBuffer, 0, size,
OMX_BUFFERFLAG_ENDOFFRAME |OMX_BUFFERFLAG_CODECCONFIG,
0);
err = mOMX->emptyBuffer(
mNode,info->mBuffer, 0, offset,
flags,timestampUs);
相关文章推荐
- OMX只是一个框架
- 从0到1 ▏Netty编解码框架之多种常用解码器使用示例解析
- typedef使用大全(转) 一、数组 typedef到处都是,但是能够真正懂得typedef使用的不算太多。对于初学者而言,看别人的源码时对到处充斥的typedef往往不知所错,而参考书又很少,所以在此给出一个源码,供大家参考 #include #
- MyEclipse下如何安装和使用ibatis插件(网上的资料对于myeclipse8.5根本就是没有用的,所以我还是自己选择了装了一个eclipse,然后将插件装在了eclipse中)
- 二者都是将 byte[] 转换成字符串,一个区别在于 Convert.ToBase64String 使用 base 64 数字编码,所以它生成的全部是 ASCII 字符。
- 使用Anthem.NET框架的一个调试经历
- 一个小型js框架myJSFrame附API使用帮助
- 讨论:一个类的方法应该使用返回值来标识执行状态,还是抛出异常?
- 页面aspx里面有一个DataSet ds,且他下面的几个用户控件uc1,uc2,uc3都有用到这个ds相同的数据,所以我想要让这个ds在整个页面中使用
- 使用 Anthem.NET 框架的一个调试经历
- 发一个小型框架,适合研究者初学使用
- 使用 Anthem.NET 框架的一个调试经历
- 使用JSP连接ORACLE数据库做的一个简单登录框架
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- 自己调的一个fontconfig,以ms字体和华文字体为主,在我自己的LCD上还是很好看而且很清晰的。
- 一个小型js框架myJSFrame附API使用帮助
- 一个使用特殊符号分割的字符串解码方法(Delphi版)
- 一个使用监听器模式实现的J2ME网络编程框架,包括一个简单的登录功能实现(含源代码)
- AjaxPro框架使用整理(一) 一个简单的异步交互页面