OMX只是一个框架,所以解码器是硬解还是软解都没关系,而且大多说厂家的硬解码都是使用OMX框架

转自 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,
       kInputBufferSizesAreBogu          =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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值