diff options
| -rw-r--r-- | videocodec/OMXVideoEncoderAVC.cpp | 5 | ||||
| -rw-r--r-- | videocodec/OMXVideoEncoderBase.cpp | 29 | ||||
| -rw-r--r-- | videocodec/OMXVideoEncoderBase.h | 3 |
3 files changed, 33 insertions, 4 deletions
diff --git a/videocodec/OMXVideoEncoderAVC.cpp b/videocodec/OMXVideoEncoderAVC.cpp index 5f8db8e..dddbb44 100644 --- a/videocodec/OMXVideoEncoderAVC.cpp +++ b/videocodec/OMXVideoEncoderAVC.cpp @@ -51,8 +51,8 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::InitOutputPortFormatSpecific(OMX_PARAM_PORTDEF SetTypeHeader(&mNalStreamFormat, sizeof(mNalStreamFormat)); mNalStreamFormat.nPortIndex = OUTPORT_INDEX; // TODO: check if this is desired Nalu Format - // mNalStreamFormat.eNaluFormat = OMX_NaluFormatStartCodesSeparateFirstHeader; - mNalStreamFormat.eNaluFormat = OMX_NaluFormatLengthPrefixedSeparateFirstHeader; + mNalStreamFormat.eNaluFormat = OMX_NaluFormatStartCodesSeparateFirstHeader; + //mNalStreamFormat.eNaluFormat = OMX_NaluFormatLengthPrefixedSeparateFirstHeader; // OMX_VIDEO_CONFIG_AVCINTRAPERIOD memset(&mConfigAvcIntraPeriod, 0, sizeof(mConfigAvcIntraPeriod)); SetTypeHeader(&mConfigAvcIntraPeriod, sizeof(mConfigAvcIntraPeriod)); @@ -280,6 +280,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::ProcessorProcess( outBuf.format = OUTPUT_CODEC_DATA; ret = mVideoEncoder->getOutput(&outBuf); CHECK_ENCODE_STATUS("getOutput"); + // Return code could not be ENCODE_BUFFER_TOO_SMALL // If we don't return error, we will have dead lock issue if (ret == ENCODE_BUFFER_TOO_SMALL) { diff --git a/videocodec/OMXVideoEncoderBase.cpp b/videocodec/OMXVideoEncoderBase.cpp index b3234ac..ba6338e 100644 --- a/videocodec/OMXVideoEncoderBase.cpp +++ b/videocodec/OMXVideoEncoderBase.cpp @@ -29,7 +29,8 @@ OMXVideoEncoderBase::OMXVideoEncoderBase() ,mFrameOutputCount(0) ,mPFrames(0) ,mFrameRetrieved(OMX_TRUE) - ,mFirstFrame(OMX_TRUE) { + ,mFirstFrame(OMX_TRUE) + ,mForceBufferSharing(OMX_FALSE) { mEncoderParams = new VideoParamsCommon(); if (!mEncoderParams) LOGE("OMX_ErrorInsufficientResources"); @@ -626,6 +627,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::BuildHandlerList(void) { AddHandler(OMX_IndexConfigVideoIntraVOPRefresh, GetConfigVideoIntraVOPRefresh, SetConfigVideoIntraVOPRefresh); //AddHandler(OMX_IndexParamIntelAdaptiveSliceControl, GetParamIntelAdaptiveSliceControl, SetParamIntelAdaptiveSliceControl); AddHandler(OMX_IndexParamVideoProfileLevelQuerySupported, GetParamVideoProfileLevelQuerySupported, SetParamVideoProfileLevelQuerySupported); + AddHandler((OMX_INDEXTYPE)OMX_IndexStoreMetaDataInBuffers, GetStoreMetaDataInBuffers, SetStoreMetaDataInBuffers); return OMX_ErrorNone; } @@ -973,3 +975,28 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetParamVideoProfileLevelQuerySupported(OMX_P return OMX_ErrorUnsupportedSetting; } +OMX_ERRORTYPE OMXVideoEncoderBase::GetStoreMetaDataInBuffers(OMX_PTR pStructure) { + OMX_ERRORTYPE ret; + StoreMetaDataInBuffersParams *p = (StoreMetaDataInBuffersParams *)pStructure; + + CHECK_TYPE_HEADER(p); + CHECK_PORT_INDEX(p, INPORT_INDEX); + + p->bStoreMetaData = mForceBufferSharing; + + return OMX_ErrorNone; +}; + +OMX_ERRORTYPE OMXVideoEncoderBase::SetStoreMetaDataInBuffers(OMX_PTR pStructure) { + OMX_ERRORTYPE ret; + StoreMetaDataInBuffersParams *p = (StoreMetaDataInBuffersParams *)pStructure; + + CHECK_TYPE_HEADER(p); + CHECK_PORT_INDEX(p, INPORT_INDEX); + + LOGD("SetStoreMetaDataInBuffers (enabled = %x)", p->bStoreMetaData); + mForceBufferSharing = p->bStoreMetaData; + + return OMX_ErrorNone; +}; + diff --git a/videocodec/OMXVideoEncoderBase.h b/videocodec/OMXVideoEncoderBase.h index 705b339..f4c3b3a 100644 --- a/videocodec/OMXVideoEncoderBase.h +++ b/videocodec/OMXVideoEncoderBase.h @@ -65,6 +65,7 @@ protected: DECLARE_HANDLER(OMXVideoEncoderBase, ConfigVideoIntraVOPRefresh); DECLARE_HANDLER(OMXVideoEncoderBase, ParamIntelAdaptiveSliceControl); DECLARE_HANDLER(OMXVideoEncoderBase, ParamVideoProfileLevelQuerySupported); + DECLARE_HANDLER(OMXVideoEncoderBase, StoreMetaDataInBuffers); protected: virtual OMX_ERRORTYPE InitBSMode(void); @@ -102,6 +103,7 @@ protected: } mBsState; SharedBufferType *mSharedBufArray; + OMX_BOOL mForceBufferSharing; private: @@ -120,7 +122,6 @@ private: sp<BufferShareRegistry> mBsInstance; OMX_U32 mSharedBufCnt; OMX_U32 mPFrames; - }; #endif /* OMX_VIDEO_ENCODER_BASE_H_ */ |
