aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--videocodec/OMXVideoEncoderAVC.cpp5
-rw-r--r--videocodec/OMXVideoEncoderBase.cpp29
-rw-r--r--videocodec/OMXVideoEncoderBase.h3
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_ */