aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--videocodec/OMXVideoEncoderAVC.cpp8
-rw-r--r--videocodec/OMXVideoEncoderAVC.h1
-rwxr-xr-xvideocodec/OMXVideoEncoderBase.cpp121
-rw-r--r--videocodec/OMXVideoEncoderBase.h2
4 files changed, 30 insertions, 102 deletions
diff --git a/videocodec/OMXVideoEncoderAVC.cpp b/videocodec/OMXVideoEncoderAVC.cpp
index 04a27ba..f81bf08 100644
--- a/videocodec/OMXVideoEncoderAVC.cpp
+++ b/videocodec/OMXVideoEncoderAVC.cpp
@@ -929,7 +929,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::GetConfigVideoNalSize(OMX_PTR pStructure) {
OMX_ERRORTYPE OMXVideoEncoderAVC::SetConfigVideoNalSize(OMX_PTR pStructure) {
OMX_ERRORTYPE ret;
Encode_Status retStatus = ENCODE_SUCCESS;
- if (mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateMax) {
+ if (mParamBitrate.eControlRate == OMX_Video_ControlRateMax) {
LOGE("SetConfigVideoNalSize failed. Feature is disabled.");
return OMX_ErrorUnsupportedIndex;
}
@@ -944,7 +944,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::SetConfigVideoNalSize(OMX_PTR pStructure) {
// TODO: return OMX_ErrorIncorrectStateOperation?
CHECK_SET_CONFIG_STATE();
- if (mParamIntelBitrate.eControlRate != OMX_Video_Intel_ControlRateVideoConferencingMode) {
+ if (mParamBitrate.eControlRate != OMX_Video_Intel_ControlRateVideoConferencingMode) {
LOGE("SetConfigVideoNalSize failed. Feature is supported only in VCM.");
return OMX_ErrorUnsupportedSetting;
}
@@ -970,7 +970,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::GetConfigIntelSliceNumbers(OMX_PTR pStructure)
OMX_ERRORTYPE OMXVideoEncoderAVC::SetConfigIntelSliceNumbers(OMX_PTR pStructure) {
OMX_ERRORTYPE ret;
Encode_Status retStatus = ENCODE_SUCCESS;
- if (mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateMax) {
+ if (mParamBitrate.eControlRate == OMX_Video_ControlRateMax) {
LOGE("SetConfigIntelSliceNumbers failed. Feature is disabled.");
return OMX_ErrorUnsupportedIndex;
}
@@ -985,7 +985,7 @@ OMX_ERRORTYPE OMXVideoEncoderAVC::SetConfigIntelSliceNumbers(OMX_PTR pStructure)
// TODO: return OMX_ErrorIncorrectStateOperation?
CHECK_SET_CONFIG_STATE();
- if (mParamIntelBitrate.eControlRate != OMX_Video_Intel_ControlRateVideoConferencingMode) {
+ if (mParamBitrate.eControlRate != OMX_Video_Intel_ControlRateVideoConferencingMode) {
LOGE("SetConfigIntelSliceNumbers failed. Feature is supported only in VCM.");
return OMX_ErrorUnsupportedSetting;
}
diff --git a/videocodec/OMXVideoEncoderAVC.h b/videocodec/OMXVideoEncoderAVC.h
index 153e789..bb4d455 100644
--- a/videocodec/OMXVideoEncoderAVC.h
+++ b/videocodec/OMXVideoEncoderAVC.h
@@ -108,7 +108,6 @@ private:
OMX_NALSTREAMFORMATTYPE mNalStreamFormat;
OMX_VIDEO_CONFIG_AVCINTRAPERIOD mConfigAvcIntraPeriod;
OMX_VIDEO_CONFIG_NALSIZE mConfigNalSize;
- OMX_VIDEO_PARAM_INTEL_BITRATETYPE avcEncParamIntelBitrateType;
OMX_VIDEO_PARAM_INTEL_AVCVUI mParamIntelAvcVui;
OMX_VIDEO_CONFIG_INTEL_SLICE_NUMBERS mConfigIntelSliceNumbers;
VideoParamsAVC *mAVCParams;
diff --git a/videocodec/OMXVideoEncoderBase.cpp b/videocodec/OMXVideoEncoderBase.cpp
index 6317296..1629b0d 100755
--- a/videocodec/OMXVideoEncoderBase.cpp
+++ b/videocodec/OMXVideoEncoderBase.cpp
@@ -149,7 +149,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::InitOutputPort(void) {
memset(&mParamBitrate, 0, sizeof(mParamBitrate));
SetTypeHeader(&mParamBitrate, sizeof(mParamBitrate));
mParamBitrate.nPortIndex = OUTPORT_INDEX;
- mParamBitrate.eControlRate = OMX_Video_ControlRateConstant;
+ mParamBitrate.eControlRate = OMX_Video_ControlRateVariable;
mParamBitrate.nTargetBitrate = 192000; // to be overridden
// OMX_VIDEO_CONFIG_PRI_INFOTYPE
@@ -159,13 +159,6 @@ OMX_ERRORTYPE OMXVideoEncoderBase::InitOutputPort(void) {
mConfigPriInfo.nCapacity = 0;
mConfigPriInfo.nHolder = NULL;
- // OMX_VIDEO_PARAM_INTEL_BITRATETYPE
- memset(&mParamIntelBitrate, 0, sizeof(mParamIntelBitrate));
- SetTypeHeader(&mParamIntelBitrate, sizeof(mParamIntelBitrate));
- mParamIntelBitrate.nPortIndex = OUTPORT_INDEX;
- mParamIntelBitrate.eControlRate = OMX_Video_Intel_ControlRateMax;
- mParamIntelBitrate.nTargetBitrate = 0; // to be overridden ?
-
// OMX_VIDEO_CONFIG_INTEL_BITRATETYPE
memset(&mConfigIntelBitrate, 0, sizeof(mConfigIntelBitrate));
SetTypeHeader(&mConfigIntelBitrate, sizeof(mConfigIntelBitrate));
@@ -316,58 +309,31 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetVideoEncoderParam() {
mEncoderParams->rcParams.targetPercentage = mConfigIntelBitrate.nTargetPercentage;
mEncoderParams->rcParams.enableIntraFrameQPControl = 0;
- if(mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateMax) {
-
- mEncoderParams->rcParams.bitRate = mParamBitrate.nTargetBitrate;//bitrate->nTargetBitrate;
- LOGV("rcParams.bitRate = %d\n", mEncoderParams->rcParams.bitRate);
-
- if (mEncoderParams->rcMode == RATE_CONTROL_CBR) {
- controlrate = OMX_Video_ControlRateConstant;
- } else if (mEncoderParams->rcMode == RATE_CONTROL_VBR) {
- controlrate = OMX_Video_ControlRateVariable;
- } else {
- controlrate = OMX_Video_ControlRateDisable;
- }
-
- if (controlrate != bitrate->eControlRate) {
-
- if ((bitrate->eControlRate == OMX_Video_ControlRateVariable) ||
- (bitrate->eControlRate == OMX_Video_ControlRateVariableSkipFrames)) {
- mEncoderParams->rcMode = RATE_CONTROL_VBR;
- } else if ((bitrate->eControlRate == OMX_Video_ControlRateConstant) ||
- (bitrate->eControlRate == OMX_Video_ControlRateConstantSkipFrames)) {
- mEncoderParams->rcMode = RATE_CONTROL_CBR;
- } else {
- mEncoderParams->rcMode = RATE_CONTROL_NONE;
- }
- LOGV("rcMode = %d\n", mEncoderParams->rcMode);
- }
- } else {
-
- if (mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateConstant ) {
- LOGV("%s(), eControlRate == OMX_Video_Intel_ControlRateConstant", __func__);
- mEncoderParams->rcParams.bitRate = mParamIntelBitrate.nTargetBitrate;
- mEncoderParams->rcMode = RATE_CONTROL_CBR;
- } else if (mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateVariable) {
- LOGV("%s(), eControlRate == OMX_Video_Intel_ControlRateVariable", __func__);
- mEncoderParams->rcParams.bitRate = mParamIntelBitrate.nTargetBitrate;
- mEncoderParams->rcMode = RATE_CONTROL_VBR;
- } else if (mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateVideoConferencingMode) {
- LOGV("%s(), eControlRate == OMX_Video_Intel_ControlRateVideoConferencingMode ", __func__);
- mEncoderParams->rcMode = RATE_CONTROL_VCM;
+ mEncoderParams->rcParams.bitRate = mParamBitrate.nTargetBitrate;
+ if ((mParamBitrate.eControlRate == OMX_Video_ControlRateConstant )||
+ (mParamBitrate.eControlRate == OMX_Video_ControlRateConstantSkipFrames)) {
+ LOGV("%s(), eControlRate == OMX_Video_Intel_ControlRateConstant", __func__);
+ mEncoderParams->rcMode = RATE_CONTROL_CBR;
+ } else if ((mParamBitrate.eControlRate == OMX_Video_ControlRateVariable) ||
+ (mParamBitrate.eControlRate == OMX_Video_ControlRateVariableSkipFrames)) {
+ LOGV("%s(), eControlRate == OMX_Video_Intel_ControlRateVariable", __func__);
+ mEncoderParams->rcMode = RATE_CONTROL_VBR;
+ } else if (mParamBitrate.eControlRate == OMX_Video_Intel_ControlRateVideoConferencingMode) {
+ LOGV("%s(), eControlRate == OMX_Video_Intel_ControlRateVideoConferencingMode ", __func__);
+ mEncoderParams->rcMode = RATE_CONTROL_VCM;
+ if(mConfigIntelBitrate.nMaxEncodeBitrate >0)
mEncoderParams->rcParams.bitRate = mConfigIntelBitrate.nMaxEncodeBitrate;
- if(mConfigIntelAir.bAirEnable == OMX_TRUE) {
- mEncoderParams->airParams.airAuto = mConfigIntelAir.bAirAuto;
- mEncoderParams->airParams.airMBs = mConfigIntelAir.nAirMBs;
- mEncoderParams->airParams.airThreshold = mConfigIntelAir.nAirThreshold;
- mEncoderParams->refreshType = VIDEO_ENC_AIR;
- } else {
- mEncoderParams->refreshType = VIDEO_ENC_NONIR;
- }
- LOGV("refreshType = %d\n", mEncoderParams->refreshType);
+ if(mConfigIntelAir.bAirEnable == OMX_TRUE) {
+ mEncoderParams->airParams.airAuto = mConfigIntelAir.bAirAuto;
+ mEncoderParams->airParams.airMBs = mConfigIntelAir.nAirMBs;
+ mEncoderParams->airParams.airThreshold = mConfigIntelAir.nAirThreshold;
+ mEncoderParams->refreshType = VIDEO_ENC_AIR;
} else {
- mEncoderParams->rcMode = RATE_CONTROL_NONE;
+ mEncoderParams->refreshType = VIDEO_ENC_NONIR;
}
+ LOGV("refreshType = %d\n", mEncoderParams->refreshType);
+ } else {
+ mEncoderParams->rcMode = RATE_CONTROL_NONE;
}
ret = mVideoEncoder->setParameters(mEncoderParams);
@@ -427,7 +393,6 @@ OMX_ERRORTYPE OMXVideoEncoderBase::BuildHandlerList(void) {
AddHandler(OMX_IndexParamVideoPortFormat, GetParamVideoPortFormat, SetParamVideoPortFormat);
AddHandler(OMX_IndexParamVideoBitrate, GetParamVideoBitrate, SetParamVideoBitrate);
AddHandler((OMX_INDEXTYPE)OMX_IndexIntelPrivateInfo, GetIntelPrivateInfo, SetIntelPrivateInfo);
- AddHandler((OMX_INDEXTYPE)OMX_IndexParamIntelBitrate, GetParamIntelBitrate, SetParamIntelBitrate);
AddHandler((OMX_INDEXTYPE)OMX_IndexConfigIntelBitrate, GetConfigIntelBitrate, SetConfigIntelBitrate);
AddHandler((OMX_INDEXTYPE)OMX_IndexConfigIntelAIR, GetConfigIntelAIR, SetConfigIntelAIR);
AddHandler((OMX_INDEXTYPE)OMX_IndexParamVideoIntraRefresh, GetParamVideoIntraRefresh, SetParamVideoIntraRefresh);
@@ -505,7 +470,6 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetParamVideoBitrate(OMX_PTR pStructure) {
PortVideo *port = NULL;
// This disables other type of bitrate control mechanism
// TODO: check if it is desired
- mParamIntelBitrate.eControlRate = OMX_Video_Intel_ControlRateMax;
// TODO: can we override mParamBitrate.nPortIndex (See SetPortBitrateParam)
mParamBitrate.eControlRate = p->eControlRate;
@@ -555,27 +519,6 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetIntelPrivateInfo(OMX_PTR pStructure) {
return OMX_ErrorNone;
}
-OMX_ERRORTYPE OMXVideoEncoderBase::GetParamIntelBitrate(OMX_PTR pStructure) {
- OMX_ERRORTYPE ret;
- OMX_VIDEO_PARAM_INTEL_BITRATETYPE *p = (OMX_VIDEO_PARAM_INTEL_BITRATETYPE *)pStructure;
-
- CHECK_TYPE_HEADER(p);
- CHECK_PORT_INDEX(p, OUTPORT_INDEX);
- memcpy(p, &mParamIntelBitrate, sizeof(*p));
- return OMX_ErrorNone;
-}
-
-OMX_ERRORTYPE OMXVideoEncoderBase::SetParamIntelBitrate(OMX_PTR pStructure) {
- OMX_ERRORTYPE ret;
- OMX_VIDEO_PARAM_INTEL_BITRATETYPE *p = (OMX_VIDEO_PARAM_INTEL_BITRATETYPE *)pStructure;
- CHECK_TYPE_HEADER(p);
- CHECK_PORT_INDEX(p, OUTPORT_INDEX);
- CHECK_SET_PARAM_STATE();
-
- mParamIntelBitrate = *p;
- return OMX_ErrorNone;
-}
-
OMX_ERRORTYPE OMXVideoEncoderBase::GetConfigIntelBitrate(OMX_PTR pStructure) {
OMX_ERRORTYPE ret;
OMX_VIDEO_CONFIG_INTEL_BITRATETYPE *p = (OMX_VIDEO_CONFIG_INTEL_BITRATETYPE *)pStructure;
@@ -589,8 +532,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::GetConfigIntelBitrate(OMX_PTR pStructure) {
OMX_ERRORTYPE OMXVideoEncoderBase::SetConfigIntelBitrate(OMX_PTR pStructure) {
OMX_ERRORTYPE ret;
Encode_Status retStatus = ENCODE_SUCCESS;
- if ((mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateMax)&&
- (mEncoderParams->profile != VAProfileVP8Version0_3)) {
+ if (mParamBitrate.eControlRate == OMX_Video_ControlRateMax){
LOGE("SetConfigIntelBitrate failed. Feature is disabled.");
return OMX_ErrorUnsupportedIndex;
}
@@ -605,11 +547,6 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetConfigIntelBitrate(OMX_PTR pStructure) {
// TODO: return OMX_ErrorIncorrectStateOperation?
CHECK_SET_CONFIG_STATE();
- if ((mParamIntelBitrate.eControlRate != OMX_Video_Intel_ControlRateVideoConferencingMode)&&
- (mEncoderParams->profile != VAProfileVP8Version0_3)){
- LOGE("SetConfigIntelBitrate failed. Feature is supported only in VCM for AVC/H264/MPEG4.");
- return OMX_ErrorUnsupportedSetting;
- }
VideoConfigBitRate configBitRate;
configBitRate.rcParams.bitRate = mConfigIntelBitrate.nMaxEncodeBitrate;
configBitRate.rcParams.initQP = mConfigIntelBitrate.nInitialQP;
@@ -748,8 +685,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::GetConfigVideoFramerate(OMX_PTR pStructure) {
OMX_ERRORTYPE OMXVideoEncoderBase::SetConfigVideoFramerate(OMX_PTR pStructure) {
OMX_ERRORTYPE ret;
Encode_Status retStatus = ENCODE_SUCCESS;
- if ((mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateMax)&&
- (mEncoderParams->profile != VAProfileVP8Version0_3)){
+ if (mParamBitrate.eControlRate == OMX_Video_ControlRateMax){
LOGE("SetConfigVideoFramerate failed. Feature is disabled.");
return OMX_ErrorUnsupportedIndex;
}
@@ -764,11 +700,6 @@ OMX_ERRORTYPE OMXVideoEncoderBase::SetConfigVideoFramerate(OMX_PTR pStructure) {
// TODO, return OMX_ErrorIncorrectStateOperation?
CHECK_SET_CONFIG_STATE();
- if ((mParamIntelBitrate.eControlRate != OMX_Video_Intel_ControlRateVideoConferencingMode)&&
- (mEncoderParams->profile != VAProfileVP8Version0_3)){
- LOGE("SetConfigIntelAIR failed. Feature is supported only in VCM for AVC/H264/MPEG4.");
- return OMX_ErrorUnsupportedSetting;
- }
VideoConfigFrameRate framerate;
framerate.frameRate.frameRateDenom = 1;
framerate.frameRate.frameRateNum = mConfigFramerate.xEncodeFramerate >> 16;
@@ -822,7 +753,7 @@ OMX_ERRORTYPE OMXVideoEncoderBase::GetParamIntelAdaptiveSliceControl(OMX_PTR pSt
OMX_ERRORTYPE OMXVideoEncoderBase::SetParamIntelAdaptiveSliceControl(OMX_PTR pStructure) {
OMX_ERRORTYPE ret;
- if (mParamIntelBitrate.eControlRate == OMX_Video_Intel_ControlRateMax) {
+ if (mParamBitrate.eControlRate == OMX_Video_ControlRateMax) {
LOGE("SetParamIntelAdaptiveSliceControl failed. Feature is disabled.");
return OMX_ErrorUnsupportedIndex;
}
diff --git a/videocodec/OMXVideoEncoderBase.h b/videocodec/OMXVideoEncoderBase.h
index 251a30b..b6580d9 100644
--- a/videocodec/OMXVideoEncoderBase.h
+++ b/videocodec/OMXVideoEncoderBase.h
@@ -59,7 +59,6 @@ protected:
DECLARE_HANDLER(OMXVideoEncoderBase, ParamVideoPortFormat);
DECLARE_HANDLER(OMXVideoEncoderBase, ParamVideoBitrate);
DECLARE_HANDLER(OMXVideoEncoderBase, IntelPrivateInfo);
- DECLARE_HANDLER(OMXVideoEncoderBase, ParamIntelBitrate);
DECLARE_HANDLER(OMXVideoEncoderBase, ConfigIntelBitrate);
DECLARE_HANDLER(OMXVideoEncoderBase, ConfigIntelAIR);
DECLARE_HANDLER(OMXVideoEncoderBase, ParamVideoIntraRefresh);
@@ -78,7 +77,6 @@ protected:
protected:
OMX_VIDEO_PARAM_BITRATETYPE mParamBitrate;
OMX_VIDEO_CONFIG_PRI_INFOTYPE mConfigPriInfo;
- OMX_VIDEO_PARAM_INTEL_BITRATETYPE mParamIntelBitrate;
OMX_VIDEO_CONFIG_INTEL_BITRATETYPE mConfigIntelBitrate;
OMX_VIDEO_CONFIG_INTEL_AIR mConfigIntelAir;
OMX_VIDEO_PARAM_INTRAREFRESHTYPE mParamVideoRefresh;