您的位置:首页 > 其它

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐