diff options
author | bolunliu <bolun.liu@intel.com> | 2014-05-09 13:57:33 +0800 |
---|---|---|
committer | Patrick Tjin <pattjin@google.com> | 2014-07-21 22:02:59 -0700 |
commit | 6b334fd4175f234d24739f75330c50549fb6bed0 (patch) | |
tree | e23231f64d713f202199d9e7157788eb471a626d | |
parent | 3436b963c46096901e9a9a26e27c83a96919437c (diff) | |
download | android_hardware_intel_common_omx-components-6b334fd4175f234d24739f75330c50549fb6bed0.tar.gz android_hardware_intel_common_omx-components-6b334fd4175f234d24739f75330c50549fb6bed0.tar.bz2 android_hardware_intel_common_omx-components-6b334fd4175f234d24739f75330c50549fb6bed0.zip |
[PORT FROM MAIN]Port VP8 encode middleware to R44c branch.
BZ: 193452
Port VP8 encode OMX IL to R44c branch.
Signed-off-by: bolunliu <bolun.liu@intel.com>
Change-Id: I04c59a60c5d8c1e50ed452bd91ce6225d4bfc74e
-rw-r--r-- | videocodec/OMXVideoEncoderBase.cpp | 24 | ||||
-rw-r--r-- | videocodec/OMXVideoEncoderBase.h | 4 | ||||
-rw-r--r-- | videocodec/OMXVideoEncoderVP8.cpp | 36 | ||||
-rw-r--r-- | videocodec/OMXVideoEncoderVP8.h | 1 |
4 files changed, 18 insertions, 47 deletions
diff --git a/videocodec/OMXVideoEncoderBase.cpp b/videocodec/OMXVideoEncoderBase.cpp index 88cc8b7..a2c2a4a 100644 --- a/videocodec/OMXVideoEncoderBase.cpp +++ b/videocodec/OMXVideoEncoderBase.cpp @@ -163,7 +163,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::InitOutputPort(void) { memset(&mConfigIntelBitrate, 0, sizeof(mConfigIntelBitrate)); SetTypeHeader(&mConfigIntelBitrate, sizeof(mConfigIntelBitrate)); mConfigIntelBitrate.nPortIndex = OUTPORT_INDEX; - mConfigIntelBitrate.nMaxEncodeBitrate = 4000 * 1024; // Maximum bitrate + mConfigIntelBitrate.nMaxEncodeBitrate = 0; // Maximum bitrate mConfigIntelBitrate.nTargetPercentage = 95; // Target bitrate as percentage of maximum bitrate; e.g. 95 is 95% mConfigIntelBitrate.nWindowSize = 0; // Window size in milliseconds allowed for bitrate to reach target mConfigIntelBitrate.nInitialQP = 0; // Initial QP for I frames @@ -403,7 +403,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::BuildHandlerList(void) { AddHandler((OMX_INDEXTYPE)OMX_IndexStoreMetaDataInBuffers, GetStoreMetaDataInBuffers, SetStoreMetaDataInBuffers); AddHandler((OMX_INDEXTYPE)OMX_IndexExtSyncEncoding, GetSyncEncoding, SetSyncEncoding); AddHandler((OMX_INDEXTYPE)OMX_IndexExtPrependSPSPPS, GetPrependSPSPPS, SetPrependSPSPPS); - AddHandler((OMX_INDEXTYPE)OMX_IndexExtNumberOfTemporalLayer, GetTemporalLayerNumber,SetTemporalLayerNumber); + AddHandler((OMX_INDEXTYPE)OMX_IndexExtTemporalLayer, GetTemporalLayer,SetTemporalLayer); AddHandler((OMX_INDEXTYPE)OMX_IndexExtRequestBlackFramePointer, GetBlackFramePointer, GetBlackFramePointer); return OMX_ErrorNone; } @@ -870,36 +870,36 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetPrependSPSPPS(OMX_PTR pStructure) { return OMX_ErrorNone; }; -OMX_ERRORTYPE OMXVideoEncoderBase::GetTemporalLayerNumber(OMX_PTR pStructure) { +OMX_ERRORTYPE OMXVideoEncoderBase::GetTemporalLayer(OMX_PTR pStructure) { OMX_ERRORTYPE ret; OMX_VIDEO_PARAM_INTEL_TEMPORAL_LAYER* p = static_cast<OMX_VIDEO_PARAM_INTEL_TEMPORAL_LAYER*>(pStructure); CHECK_TYPE_HEADER(p); CHECK_PORT_INDEX(p, OUTPORT_INDEX); - memcpy(p, &mNumberOfTemporalLayer, sizeof(*p)); + memcpy(p, &mTemporalLayer, sizeof(*p)); return OMX_ErrorNone; } -OMX_ERRORTYPE OMXVideoEncoderBase::SetTemporalLayerNumber(OMX_PTR pStructure) { +OMX_ERRORTYPE OMXVideoEncoderBase::SetTemporalLayer(OMX_PTR pStructure) { OMX_ERRORTYPE ret; OMX_VIDEO_PARAM_INTEL_TEMPORAL_LAYER *p = (OMX_VIDEO_PARAM_INTEL_TEMPORAL_LAYER *)pStructure; - VideoParamsTemporalLayerNumber TemporalLayerNumber; + VideoParamsTemporalLayer TemporalLayer; OMX_U32 i; CHECK_TYPE_HEADER(p); CHECK_PORT_INDEX(p, OUTPORT_INDEX); - LOGE("SetTemporalLayerNumber (enabled = %d)", p->nNumberOfTemporalLayer); + LOGE("SetTemporalLayer (enabled = %d)", p->nNumberOfTemporalLayer); - TemporalLayerNumber.numberOfLayer = p->nNumberOfTemporalLayer; - TemporalLayerNumber.nPeriodicity = p->nPeriodicity; + TemporalLayer.numberOfLayer = p->nNumberOfTemporalLayer; + TemporalLayer.nPeriodicity = p->nPeriodicity; for(i=0;i<p->nPeriodicity;i++) - TemporalLayerNumber.nLayerID[i] = p->nLayerID[i]; + TemporalLayer.nLayerID[i] = p->nLayerID[i]; - if (mVideoEncoder->setParameters(&TemporalLayerNumber) != ENCODE_SUCCESS) + if (mVideoEncoder->setParameters(&TemporalLayer) != ENCODE_SUCCESS) return OMX_ErrorNotReady; - LOGE("SetTemporalLayerNumber success"); + LOGE("SetTemporalLayer success"); return OMX_ErrorNone; } diff --git a/videocodec/OMXVideoEncoderBase.h b/videocodec/OMXVideoEncoderBase.h index 790e91f..65717c4 100644 --- a/videocodec/OMXVideoEncoderBase.h +++ b/videocodec/OMXVideoEncoderBase.h @@ -69,7 +69,7 @@ protected: DECLARE_HANDLER(OMXVideoEncoderBase, StoreMetaDataInBuffers); DECLARE_HANDLER(OMXVideoEncoderBase, SyncEncoding); DECLARE_HANDLER(OMXVideoEncoderBase, PrependSPSPPS); - DECLARE_HANDLER(OMXVideoEncoderBase, TemporalLayerNumber); + DECLARE_HANDLER(OMXVideoEncoderBase, TemporalLayer); DECLARE_HANDLER(OMXVideoEncoderBase, BlackFramePointer); protected: @@ -83,7 +83,7 @@ protected: OMX_CONFIG_FRAMERATETYPE mConfigFramerate; OMX_VIDEO_PARAM_INTEL_ADAPTIVE_SLICE_CONTROL mParamIntelAdaptiveSliceControl; OMX_VIDEO_PARAM_PROFILELEVELTYPE mParamProfileLevel; - OMX_VIDEO_PARAM_INTEL_TEMPORAL_LAYER mNumberOfTemporalLayer; + OMX_VIDEO_PARAM_INTEL_TEMPORAL_LAYER mTemporalLayer; IVideoEncoder *mVideoEncoder; VideoParamsCommon *mEncoderParams; diff --git a/videocodec/OMXVideoEncoderVP8.cpp b/videocodec/OMXVideoEncoderVP8.cpp index d952913..67bbfb5 100644 --- a/videocodec/OMXVideoEncoderVP8.cpp +++ b/videocodec/OMXVideoEncoderVP8.cpp @@ -40,10 +40,10 @@ OMX_ERRORTYPE OMXVideoEncoderVP8::InitOutputPortFormatSpecific(OMX_PARAM_PORTDEF paramPortDefinitionOutput->format.video.eCompressionFormat = OMX_VIDEO_CodingVP8; // OMX_VIDEO_PARAM_INTEL_NUMBER_OF_TEMPORAL_LAYER - memset(&mNumberOfTemporalLayer, 0, sizeof(mNumberOfTemporalLayer)); - SetTypeHeader(&mNumberOfTemporalLayer, sizeof(mNumberOfTemporalLayer)); - mNumberOfTemporalLayer.nPortIndex = OUTPORT_INDEX; - mNumberOfTemporalLayer.nNumberOfTemporalLayer = 1;//default value is 1 + memset(&mTemporalLayer, 0, sizeof(mTemporalLayer)); + SetTypeHeader(&mTemporalLayer, sizeof(mTemporalLayer)); + mTemporalLayer.nPortIndex = OUTPORT_INDEX; + mTemporalLayer.nNumberOfTemporalLayer = 1;//default value is 1 mParamProfileLevel.eProfile = OMX_VIDEO_VP8ProfileMain; mParamProfileLevel.eLevel = OMX_VIDEO_VP8Level_Version3; @@ -208,7 +208,6 @@ OMX_ERRORTYPE OMXVideoEncoderVP8::BuildHandlerList(void) { OMXVideoEncoderBase::BuildHandlerList(); AddHandler((OMX_INDEXTYPE)OMX_IndexParamVideoVp8, GetParamVideoVp8, SetParamVideoVp8); AddHandler((OMX_INDEXTYPE)OMX_IndexConfigVideoVp8ReferenceFrame, GetConfigVideoVp8ReferenceFrame, SetConfigVideoVp8ReferenceFrame); - AddHandler((OMX_INDEXTYPE)OMX_IndexExtVP8ForceKFrame, GetConfigVp8ForceKFrame, SetConfigVp8ForceKFrame); AddHandler((OMX_INDEXTYPE)OMX_IndexExtVP8MaxFrameSizeRatio, GetConfigVp8MaxFrameSizeRatio, SetConfigVp8MaxFrameSizeRatio); return OMX_ErrorNone; @@ -270,33 +269,6 @@ OMX_ERRORTYPE OMXVideoEncoderVP8::SetConfigVideoVp8ReferenceFrame(OMX_PTR pStruc return OMX_ErrorNone; } -OMX_ERRORTYPE OMXVideoEncoderVP8::GetConfigVp8ForceKFrame(OMX_PTR pStructure) { - - return OMX_ErrorNone; -} - -OMX_ERRORTYPE OMXVideoEncoderVP8::SetConfigVp8ForceKFrame(OMX_PTR pStructure) { - OMX_ERRORTYPE ret; - Encode_Status retStatus = ENCODE_SUCCESS; - OMX_VIDEO_CONFIG_INTEL_VP8_FORCE_KFRAME *p = (OMX_VIDEO_CONFIG_INTEL_VP8_FORCE_KFRAME*) pStructure; - CHECK_TYPE_HEADER(p); - CHECK_PORT_INDEX(p, OUTPORT_INDEX); - - CHECK_SET_CONFIG_STATE(); - - VideoConfigVP8 configVP8; - configVP8.force_kf = p->bForceKFrame; - configVP8.refresh_entropy_probs = 0; - configVP8.value = 0; - configVP8.sharpness_level = 2; - - retStatus = mVideoEncoder->setConfig(&configVP8); - if(retStatus != ENCODE_SUCCESS) { - LOGW("Failed to set vp8 force frame"); - } - return OMX_ErrorNone; -} - OMX_ERRORTYPE OMXVideoEncoderVP8::GetConfigVp8MaxFrameSizeRatio(OMX_PTR pStructure) { return OMX_ErrorNone; diff --git a/videocodec/OMXVideoEncoderVP8.h b/videocodec/OMXVideoEncoderVP8.h index fbb97df..12b006b 100644 --- a/videocodec/OMXVideoEncoderVP8.h +++ b/videocodec/OMXVideoEncoderVP8.h @@ -17,7 +17,6 @@ class OMXVideoEncoderVP8 : public OMXVideoEncoderBase { virtual OMX_ERRORTYPE SetVideoEncoderParam(); DECLARE_HANDLER(OMXVideoEncoderVP8, ParamVideoVp8); DECLARE_HANDLER(OMXVideoEncoderVP8, ConfigVideoVp8ReferenceFrame); - DECLARE_HANDLER(OMXVideoEncoderVP8, ConfigVp8ForceKFrame); DECLARE_HANDLER(OMXVideoEncoderVP8, ConfigVp8MaxFrameSizeRatio); private: enum { |