mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-10-01 01:35:54 -04:00
1139 lines
60 KiB
Diff
1139 lines
60 KiB
Diff
diff --git a/mm-core/inc/OMX_QCOMExtns.h b/mm-core/inc/OMX_QCOMExtns.h
|
|
index f0e1593..eb1b990 100644
|
|
--- a/mm-core/inc/OMX_QCOMExtns.h
|
|
+++ b/mm-core/inc/OMX_QCOMExtns.h
|
|
@@ -1,5 +1,5 @@
|
|
/*--------------------------------------------------------------------------
|
|
-Copyright (c) 2009-2015, The Linux Foundation. All rights reserved.
|
|
+Copyright (c) 2009-2016, The Linux Foundation. All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
@@ -1348,6 +1348,8 @@
|
|
} QOMX_VIDEO_QUERY_DECODER_INSTANCES;
|
|
|
|
typedef struct QOMX_ENABLETYPE {
|
|
+ OMX_U32 nSize;
|
|
+ OMX_VERSIONTYPE nVersion;
|
|
OMX_BOOL bEnable;
|
|
} QOMX_ENABLETYPE;
|
|
|
|
@@ -1451,6 +1453,8 @@
|
|
|
|
|
|
typedef struct QOMX_RECTTYPE {
|
|
+ OMX_U32 nSize;
|
|
+ OMX_VERSIONTYPE nVersion;
|
|
OMX_S32 nLeft;
|
|
OMX_S32 nTop;
|
|
OMX_U32 nWidth;
|
|
@@ -1551,7 +1555,6 @@
|
|
QOMX_VIDEO_HIERARCHICALCODINGTYPE eHierarchicalCodingType;
|
|
} QOMX_VIDEO_HIERARCHICALLAYERS;
|
|
|
|
-
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif /* __cplusplus */
|
|
diff --git a/mm-video-v4l2/vidc/common/inc/vidc_debug.h b/mm-video-v4l2/vidc/common/inc/vidc_debug.h
|
|
index d7a158c..0ce747c 100755
|
|
--- a/mm-video-v4l2/vidc/common/inc/vidc_debug.h
|
|
+++ b/mm-video-v4l2/vidc/common/inc/vidc_debug.h
|
|
@@ -1,5 +1,5 @@
|
|
/*--------------------------------------------------------------------------
|
|
-Copyright (c) 2013, The Linux Foundation. All rights reserved.
|
|
+Copyright (c) 2013 - 2016, The Linux Foundation. All rights reserved.
|
|
|
|
Redistribution and use in source and binary forms, with or without
|
|
modification, are permitted provided that the following conditions are met:
|
|
@@ -64,4 +64,15 @@
|
|
#define DEBUG_PRINT_HIGH printf
|
|
#endif
|
|
|
|
+#define VALIDATE_OMX_PARAM_DATA(ptr, paramType) \
|
|
+ { \
|
|
+ if (ptr == NULL) { return OMX_ErrorBadParameter; } \
|
|
+ paramType *p = reinterpret_cast<paramType *>(ptr); \
|
|
+ if (p->nSize < sizeof(paramType)) { \
|
|
+ ALOGE("Insufficient object size(%u) v/s expected(%zu) for type %s",\
|
|
+ (unsigned int)p->nSize, sizeof(paramType), #paramType); \
|
|
+ return OMX_ErrorBadParameter; \
|
|
+ } \
|
|
+ } \
|
|
+
|
|
#endif
|
|
diff --git a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
|
|
index 19c1596..3b84707 100644
|
|
--- a/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
|
|
+++ b/mm-video-v4l2/vidc/vdec/src/omx_vdec_msm8974.cpp
|
|
@@ -2979,6 +2979,7 @@
|
|
}
|
|
switch ((unsigned long)paramIndex) {
|
|
case OMX_IndexParamPortDefinition: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_PORTDEFINITIONTYPE);
|
|
OMX_PARAM_PORTDEFINITIONTYPE *portDefn =
|
|
(OMX_PARAM_PORTDEFINITIONTYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamPortDefinition");
|
|
@@ -2988,23 +2989,25 @@
|
|
break;
|
|
}
|
|
case OMX_IndexParamVideoInit: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE *portParamType =
|
|
(OMX_PORT_PARAM_TYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoInit");
|
|
|
|
portParamType->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
- portParamType->nSize = sizeof(portParamType);
|
|
+ portParamType->nSize = sizeof(OMX_PORT_PARAM_TYPE);
|
|
portParamType->nPorts = 2;
|
|
portParamType->nStartPortNumber = 0;
|
|
break;
|
|
}
|
|
case OMX_IndexParamVideoPortFormat: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PORTFORMATTYPE);
|
|
OMX_VIDEO_PARAM_PORTFORMATTYPE *portFmt =
|
|
(OMX_VIDEO_PARAM_PORTFORMATTYPE *)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoPortFormat");
|
|
|
|
portFmt->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
- portFmt->nSize = sizeof(portFmt);
|
|
+ portFmt->nSize = sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE);
|
|
|
|
if (0 == portFmt->nPortIndex) {
|
|
if (0 == portFmt->nIndex) {
|
|
@@ -3046,22 +3049,24 @@
|
|
}
|
|
/*Component should support this port definition*/
|
|
case OMX_IndexParamAudioInit: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE *audioPortParamType =
|
|
(OMX_PORT_PARAM_TYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamAudioInit");
|
|
audioPortParamType->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
- audioPortParamType->nSize = sizeof(audioPortParamType);
|
|
+ audioPortParamType->nSize = sizeof(OMX_PORT_PARAM_TYPE);
|
|
audioPortParamType->nPorts = 0;
|
|
audioPortParamType->nStartPortNumber = 0;
|
|
break;
|
|
}
|
|
/*Component should support this port definition*/
|
|
case OMX_IndexParamImageInit: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE *imagePortParamType =
|
|
(OMX_PORT_PARAM_TYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamImageInit");
|
|
imagePortParamType->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
- imagePortParamType->nSize = sizeof(imagePortParamType);
|
|
+ imagePortParamType->nSize = sizeof(OMX_PORT_PARAM_TYPE);
|
|
imagePortParamType->nPorts = 0;
|
|
imagePortParamType->nStartPortNumber = 0;
|
|
break;
|
|
@@ -3075,6 +3080,7 @@
|
|
break;
|
|
}
|
|
case OMX_IndexParamStandardComponentRole: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_COMPONENTROLETYPE);
|
|
OMX_PARAM_COMPONENTROLETYPE *comp_role;
|
|
comp_role = (OMX_PARAM_COMPONENTROLETYPE *) paramData;
|
|
comp_role->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
@@ -3088,22 +3094,23 @@
|
|
}
|
|
/* Added for parameter test */
|
|
case OMX_IndexParamPriorityMgmt: {
|
|
-
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PRIORITYMGMTTYPE);
|
|
OMX_PRIORITYMGMTTYPE *priorityMgmType =
|
|
(OMX_PRIORITYMGMTTYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamPriorityMgmt");
|
|
priorityMgmType->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
- priorityMgmType->nSize = sizeof(priorityMgmType);
|
|
+ priorityMgmType->nSize = sizeof(OMX_PRIORITYMGMTTYPE);
|
|
|
|
break;
|
|
}
|
|
/* Added for parameter test */
|
|
case OMX_IndexParamCompBufferSupplier: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_BUFFERSUPPLIERTYPE);
|
|
OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplierType =
|
|
(OMX_PARAM_BUFFERSUPPLIERTYPE*) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamCompBufferSupplier");
|
|
|
|
- bufferSupplierType->nSize = sizeof(bufferSupplierType);
|
|
+ bufferSupplierType->nSize = sizeof(OMX_PARAM_BUFFERSUPPLIERTYPE);
|
|
bufferSupplierType->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
if (0 == bufferSupplierType->nPortIndex)
|
|
bufferSupplierType->nPortIndex = OMX_BufferSupplyUnspecified;
|
|
@@ -3141,6 +3148,7 @@
|
|
break;
|
|
}
|
|
case OMX_IndexParamVideoProfileLevelQuerySupported: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PROFILELEVELTYPE);
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoProfileLevelQuerySupported %08x", paramIndex);
|
|
OMX_VIDEO_PARAM_PROFILELEVELTYPE *profileLevelType =
|
|
(OMX_VIDEO_PARAM_PROFILELEVELTYPE *)paramData;
|
|
@@ -3149,6 +3157,7 @@
|
|
}
|
|
#if defined (_ANDROID_HONEYCOMB_) || defined (_ANDROID_ICS_)
|
|
case OMX_GoogleAndroidIndexGetAndroidNativeBufferUsage: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, GetAndroidNativeBufferUsageParams);
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_GoogleAndroidIndexGetAndroidNativeBufferUsage");
|
|
GetAndroidNativeBufferUsageParams* nativeBuffersUsage = (GetAndroidNativeBufferUsageParams *) paramData;
|
|
if (nativeBuffersUsage->nPortIndex == OMX_CORE_OUTPUT_PORT_INDEX) {
|
|
@@ -3172,6 +3181,7 @@
|
|
#ifdef FLEXYUV_SUPPORTED
|
|
case OMX_QcomIndexFlexibleYUVDescription: {
|
|
DEBUG_PRINT_LOW("get_parameter: describeColorFormat");
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, DescribeColorFormatParams);
|
|
eRet = describeColorFormat(paramData);
|
|
break;
|
|
}
|
|
@@ -3282,6 +3292,7 @@
|
|
}
|
|
switch ((unsigned long)paramIndex) {
|
|
case OMX_IndexParamPortDefinition: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_PORTDEFINITIONTYPE);
|
|
OMX_PARAM_PORTDEFINITIONTYPE *portDefn;
|
|
portDefn = (OMX_PARAM_PORTDEFINITIONTYPE *) paramData;
|
|
//TODO: Check if any allocate buffer/use buffer/useNativeBuffer has
|
|
@@ -3525,6 +3536,7 @@
|
|
}
|
|
break;
|
|
case OMX_IndexParamVideoPortFormat: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PORTFORMATTYPE);
|
|
OMX_VIDEO_PARAM_PORTFORMATTYPE *portFmt =
|
|
(OMX_VIDEO_PARAM_PORTFORMATTYPE *)paramData;
|
|
int ret=0;
|
|
@@ -3571,6 +3583,7 @@
|
|
break;
|
|
|
|
case OMX_QcomIndexPortDefn: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_PARAM_PORTDEFINITIONTYPE);
|
|
OMX_QCOM_PARAM_PORTDEFINITIONTYPE *portFmt =
|
|
(OMX_QCOM_PARAM_PORTDEFINITIONTYPE *) paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexQcomParamPortDefinitionType %u",
|
|
@@ -3617,6 +3630,7 @@
|
|
break;
|
|
|
|
case OMX_IndexParamStandardComponentRole: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_COMPONENTROLETYPE);
|
|
OMX_PARAM_COMPONENTROLETYPE *comp_role;
|
|
comp_role = (OMX_PARAM_COMPONENTROLETYPE *) paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamStandardComponentRole %s",
|
|
@@ -3707,6 +3721,7 @@
|
|
}
|
|
|
|
case OMX_IndexParamPriorityMgmt: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PRIORITYMGMTTYPE);
|
|
if (m_state != OMX_StateLoaded) {
|
|
DEBUG_PRINT_ERROR("Set Parameter called in Invalid State");
|
|
return OMX_ErrorIncorrectStateOperation;
|
|
@@ -3725,6 +3740,7 @@
|
|
}
|
|
|
|
case OMX_IndexParamCompBufferSupplier: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_BUFFERSUPPLIERTYPE);
|
|
OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplierType = (OMX_PARAM_BUFFERSUPPLIERTYPE*) paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamCompBufferSupplier %d",
|
|
bufferSupplierType->eBufferSupplier);
|
|
@@ -3764,6 +3780,7 @@
|
|
break;
|
|
}
|
|
case OMX_QcomIndexParamVideoDecoderPictureOrder: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_DECODER_PICTURE_ORDER);
|
|
QOMX_VIDEO_DECODER_PICTURE_ORDER *pictureOrder =
|
|
(QOMX_VIDEO_DECODER_PICTURE_ORDER *)paramData;
|
|
struct v4l2_control control;
|
|
@@ -3789,42 +3806,52 @@
|
|
break;
|
|
}
|
|
case OMX_QcomIndexParamConcealMBMapExtraData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(VDEC_EXTRADATA_MB_ERROR_MAP, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamFrameInfoExtraData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_FRAMEINFO_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_ExtraDataFrameDimension:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_FRAMEDIMENSION_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamInterlaceExtraData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_INTERLACE_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamH264TimeInfo:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_TIMEINFO_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamVideoFramePackingExtradata:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_FRAMEPACK_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamVideoQPExtraData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_QP_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamVideoInputBitsInfoExtraData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_BITSINFO_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexEnableExtnUserData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_EXTNUSER_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
case OMX_QcomIndexParamMpeg2SeqDispExtraData:
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_ENABLETYPE);
|
|
eRet = enable_extradata(OMX_MPEG2SEQDISP_EXTRADATA, false,
|
|
((QOMX_ENABLETYPE *)paramData)->bEnable);
|
|
break;
|
|
@@ -3833,6 +3860,7 @@
|
|
}
|
|
break;
|
|
case OMX_QcomIndexPlatformPvt: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_PLATFORMPRIVATE_EXTN);
|
|
DEBUG_PRINT_HIGH("set_parameter: OMX_QcomIndexPlatformPvt OP Port");
|
|
OMX_QCOM_PLATFORMPRIVATE_EXTN* entryType = (OMX_QCOM_PLATFORMPRIVATE_EXTN *) paramData;
|
|
if (entryType->type != OMX_QCOM_PLATFORM_PRIVATE_PMEM) {
|
|
@@ -3883,6 +3911,7 @@
|
|
break;
|
|
|
|
case OMX_QcomIndexParamIndexExtraDataType: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_INDEXEXTRADATATYPE);
|
|
QOMX_INDEXEXTRADATATYPE *extradataIndexType = (QOMX_INDEXEXTRADATATYPE *) paramData;
|
|
if ((extradataIndexType->nIndex == OMX_IndexParamPortDefinition) &&
|
|
(extradataIndexType->bEnabled == OMX_TRUE) &&
|
|
@@ -3906,6 +3935,7 @@
|
|
* state. This is ANDROID architecture which is not in sync
|
|
* with openmax standard. */
|
|
case OMX_GoogleAndroidIndexEnableAndroidNativeBuffers: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, EnableAndroidNativeBuffersParams);
|
|
EnableAndroidNativeBuffersParams* enableNativeBuffers = (EnableAndroidNativeBuffersParams *) paramData;
|
|
if (enableNativeBuffers) {
|
|
m_enable_android_native_buffers = enableNativeBuffers->enable;
|
|
@@ -3922,11 +3952,13 @@
|
|
}
|
|
break;
|
|
case OMX_GoogleAndroidIndexUseAndroidNativeBuffer: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, UseAndroidNativeBufferParams);
|
|
eRet = use_android_native_buffer(hComp, paramData);
|
|
}
|
|
break;
|
|
#endif
|
|
case OMX_QcomIndexParamEnableTimeStampReorder: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_INDEXTIMESTAMPREORDER);
|
|
QOMX_INDEXTIMESTAMPREORDER *reorder = (QOMX_INDEXTIMESTAMPREORDER *)paramData;
|
|
if (drv_ctx.picture_order == (vdec_output_order)QOMX_VIDEO_DISPLAY_ORDER) {
|
|
if (reorder->bEnable == OMX_TRUE) {
|
|
@@ -3943,6 +3975,7 @@
|
|
}
|
|
break;
|
|
case OMX_IndexParamVideoProfileLevelCurrent: {
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PROFILELEVELTYPE);
|
|
OMX_VIDEO_PARAM_PROFILELEVELTYPE* pParam =
|
|
(OMX_VIDEO_PARAM_PROFILELEVELTYPE*)paramData;
|
|
if (pParam) {
|
|
@@ -3954,6 +3987,7 @@
|
|
}
|
|
case OMX_QcomIndexParamVideoMetaBufferMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, StoreMetaDataInBuffersParams);
|
|
StoreMetaDataInBuffersParams *metabuffer =
|
|
(StoreMetaDataInBuffersParams *)paramData;
|
|
if (!metabuffer) {
|
|
@@ -3996,6 +4030,7 @@
|
|
}
|
|
case OMX_QcomIndexParamVideoDownScalar:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_INDEXDOWNSCALAR);
|
|
QOMX_INDEXDOWNSCALAR* pParam = (QOMX_INDEXDOWNSCALAR*)paramData;
|
|
struct v4l2_control control;
|
|
int rc;
|
|
@@ -4024,6 +4059,7 @@
|
|
#ifdef ADAPTIVE_PLAYBACK_SUPPORTED
|
|
case OMX_QcomIndexParamVideoAdaptivePlaybackMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, PrepareForAdaptivePlaybackParams);
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_GoogleAndroidIndexPrepareForAdaptivePlayback");
|
|
PrepareForAdaptivePlaybackParams* pParams =
|
|
(PrepareForAdaptivePlaybackParams *) paramData;
|
|
@@ -4052,6 +4088,7 @@
|
|
#endif
|
|
case OMX_QcomIndexParamVideoCustomBufferSize:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_CUSTOM_BUFFERSIZE);
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_QcomIndexParamVideoCustomBufferSize");
|
|
QOMX_VIDEO_CUSTOM_BUFFERSIZE* pParam = (QOMX_VIDEO_CUSTOM_BUFFERSIZE*)paramData;
|
|
if (pParam->nPortIndex == OMX_CORE_INPUT_PORT_INDEX) {
|
|
@@ -4115,6 +4152,7 @@
|
|
|
|
switch ((unsigned long)configIndex) {
|
|
case OMX_QcomIndexConfigInterlaced: {
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_QCOM_CONFIG_INTERLACETYPE);
|
|
OMX_QCOM_CONFIG_INTERLACETYPE *configFmt =
|
|
(OMX_QCOM_CONFIG_INTERLACETYPE *) configData;
|
|
if (configFmt->nPortIndex == 1) {
|
|
@@ -4140,6 +4178,7 @@
|
|
break;
|
|
}
|
|
case OMX_QcomIndexQueryNumberOfVideoDecInstance: {
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_QUERY_DECODER_INSTANCES);
|
|
QOMX_VIDEO_QUERY_DECODER_INSTANCES *decoderinstances =
|
|
(QOMX_VIDEO_QUERY_DECODER_INSTANCES*)configData;
|
|
decoderinstances->nNumOfInstances = 16;
|
|
@@ -4148,6 +4187,7 @@
|
|
}
|
|
case OMX_QcomIndexConfigVideoFramePackingArrangement: {
|
|
if (drv_ctx.decoder_format == VDEC_CODECTYPE_H264) {
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_QCOM_FRAME_PACK_ARRANGEMENT);
|
|
OMX_QCOM_FRAME_PACK_ARRANGEMENT *configFmt =
|
|
(OMX_QCOM_FRAME_PACK_ARRANGEMENT *) configData;
|
|
memcpy(configFmt, &m_frame_pack_arrangement,
|
|
@@ -4158,6 +4198,7 @@
|
|
break;
|
|
}
|
|
case OMX_IndexConfigCommonOutputCrop: {
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_RECTTYPE);
|
|
OMX_CONFIG_RECTTYPE *rect = (OMX_CONFIG_RECTTYPE *) configData;
|
|
memcpy(rect, &rectangle, sizeof(OMX_CONFIG_RECTTYPE));
|
|
DEBUG_PRINT_HIGH("get_config: crop info: L: %u, T: %u, R: %u, B: %u",
|
|
@@ -4166,6 +4207,7 @@
|
|
break;
|
|
}
|
|
case OMX_QcomIndexConfigPerfLevel: {
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL);
|
|
struct v4l2_control control;
|
|
OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL *perf =
|
|
(OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL *)configData;
|
|
@@ -4191,7 +4233,7 @@
|
|
}
|
|
|
|
break;
|
|
- }
|
|
+ }
|
|
default: {
|
|
DEBUG_PRINT_ERROR("get_config: unknown param %d",configIndex);
|
|
eRet = OMX_ErrorBadParameter;
|
|
@@ -4337,6 +4379,7 @@
|
|
struct v4l2_control temp;
|
|
temp.id = V4L2_CID_MPEG_VIDC_VIDEO_STREAM_FORMAT;
|
|
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_NALSIZE);
|
|
pNal = reinterpret_cast < OMX_VIDEO_CONFIG_NALSIZE * >(configData);
|
|
switch (pNal->nNaluBytes) {
|
|
case 0:
|
|
@@ -8752,7 +8795,7 @@
|
|
}
|
|
DEBUG_PRINT_LOW("omx_vdec::update_portdef");
|
|
portDefn->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
- portDefn->nSize = sizeof(portDefn);
|
|
+ portDefn->nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE);
|
|
portDefn->eDomain = OMX_PortDomainVideo;
|
|
if (drv_ctx.frame_rate.fps_denominator > 0)
|
|
portDefn->format.video.xFramerate = (drv_ctx.frame_rate.fps_numerator /
|
|
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
|
|
index 7f0482f..1aee2c1 100644
|
|
--- a/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
|
|
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_base.cpp
|
|
@@ -84,6 +84,8 @@
|
|
|
|
typedef struct OMXComponentCapabilityFlagsType {
|
|
////////////////// OMX COMPONENT CAPABILITY RELATED MEMBERS
|
|
+ OMX_U32 nSize;
|
|
+ OMX_VERSIONTYPE nVersion;
|
|
OMX_BOOL iIsOMXComponentMultiThreaded;
|
|
OMX_BOOL iOMXComponentSupportsExternalOutputBufferAlloc;
|
|
OMX_BOOL iOMXComponentSupportsExternalInputBufferAlloc;
|
|
@@ -1443,6 +1445,7 @@
|
|
switch ((int)paramIndex) {
|
|
case OMX_IndexParamPortDefinition:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_PORTDEFINITIONTYPE);
|
|
OMX_PARAM_PORTDEFINITIONTYPE *portDefn;
|
|
portDefn = (OMX_PARAM_PORTDEFINITIONTYPE *) paramData;
|
|
|
|
@@ -1484,6 +1487,7 @@
|
|
}
|
|
case OMX_IndexParamVideoInit:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE *portParamType =
|
|
(OMX_PORT_PARAM_TYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoInit");
|
|
@@ -1493,6 +1497,7 @@
|
|
}
|
|
case OMX_IndexParamVideoPortFormat:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PORTFORMATTYPE);
|
|
OMX_VIDEO_PARAM_PORTFORMATTYPE *portFmt =
|
|
(OMX_VIDEO_PARAM_PORTFORMATTYPE *)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoPortFormat");
|
|
@@ -1527,6 +1532,7 @@
|
|
}
|
|
case OMX_IndexParamVideoBitrate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_BITRATETYPE);
|
|
OMX_VIDEO_PARAM_BITRATETYPE* pParam = (OMX_VIDEO_PARAM_BITRATETYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoBitrate");
|
|
|
|
@@ -1541,6 +1547,7 @@
|
|
}
|
|
case OMX_IndexParamVideoMpeg4:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_MPEG4TYPE);
|
|
OMX_VIDEO_PARAM_MPEG4TYPE* pParam = (OMX_VIDEO_PARAM_MPEG4TYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoMpeg4");
|
|
memcpy(pParam, &m_sParamMPEG4, sizeof(m_sParamMPEG4));
|
|
@@ -1548,6 +1555,7 @@
|
|
}
|
|
case OMX_IndexParamVideoH263:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_H263TYPE);
|
|
OMX_VIDEO_PARAM_H263TYPE* pParam = (OMX_VIDEO_PARAM_H263TYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoH263");
|
|
memcpy(pParam, &m_sParamH263, sizeof(m_sParamH263));
|
|
@@ -1555,6 +1563,7 @@
|
|
}
|
|
case OMX_IndexParamVideoAvc:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_AVCTYPE);
|
|
OMX_VIDEO_PARAM_AVCTYPE* pParam = (OMX_VIDEO_PARAM_AVCTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoAvc");
|
|
memcpy(pParam, &m_sParamAVC, sizeof(m_sParamAVC));
|
|
@@ -1562,6 +1571,7 @@
|
|
}
|
|
case (OMX_INDEXTYPE)OMX_IndexParamVideoVp8:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_VP8TYPE);
|
|
OMX_VIDEO_PARAM_VP8TYPE* pParam = (OMX_VIDEO_PARAM_VP8TYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoVp8");
|
|
memcpy(pParam, &m_sParamVP8, sizeof(m_sParamVP8));
|
|
@@ -1569,6 +1579,7 @@
|
|
}
|
|
case (OMX_INDEXTYPE)OMX_IndexParamVideoHevc:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_HEVCTYPE);
|
|
OMX_VIDEO_PARAM_HEVCTYPE* pParam = (OMX_VIDEO_PARAM_HEVCTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoHevc");
|
|
memcpy(pParam, &m_sParamHEVC, sizeof(m_sParamHEVC));
|
|
@@ -1576,6 +1587,7 @@
|
|
}
|
|
case OMX_IndexParamVideoProfileLevelQuerySupported:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PROFILELEVELTYPE);
|
|
OMX_VIDEO_PARAM_PROFILELEVELTYPE* pParam = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoProfileLevelQuerySupported");
|
|
eRet = get_supported_profile_level(pParam);
|
|
@@ -1586,6 +1598,7 @@
|
|
}
|
|
case OMX_IndexParamVideoProfileLevelCurrent:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PROFILELEVELTYPE);
|
|
OMX_VIDEO_PARAM_PROFILELEVELTYPE* pParam = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoProfileLevelCurrent");
|
|
memcpy(pParam, &m_sParamProfileLevel, sizeof(m_sParamProfileLevel));
|
|
@@ -1594,6 +1607,7 @@
|
|
/*Component should support this port definition*/
|
|
case OMX_IndexParamAudioInit:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE *audioPortParamType = (OMX_PORT_PARAM_TYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamAudioInit");
|
|
memcpy(audioPortParamType, &m_sPortParam_audio, sizeof(m_sPortParam_audio));
|
|
@@ -1602,6 +1616,7 @@
|
|
/*Component should support this port definition*/
|
|
case OMX_IndexParamImageInit:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE *imagePortParamType = (OMX_PORT_PARAM_TYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamImageInit");
|
|
memcpy(imagePortParamType, &m_sPortParam_img, sizeof(m_sPortParam_img));
|
|
@@ -1617,6 +1632,7 @@
|
|
}
|
|
case OMX_IndexParamStandardComponentRole:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_COMPONENTROLETYPE);
|
|
OMX_PARAM_COMPONENTROLETYPE *comp_role;
|
|
comp_role = (OMX_PARAM_COMPONENTROLETYPE *) paramData;
|
|
comp_role->nVersion.nVersion = OMX_SPEC_VERSION;
|
|
@@ -1629,7 +1645,7 @@
|
|
/* Added for parameter test */
|
|
case OMX_IndexParamPriorityMgmt:
|
|
{
|
|
-
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PRIORITYMGMTTYPE);
|
|
OMX_PRIORITYMGMTTYPE *priorityMgmType = (OMX_PRIORITYMGMTTYPE *) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamPriorityMgmt");
|
|
memcpy(priorityMgmType, &m_sPriorityMgmt, sizeof(m_sPriorityMgmt));
|
|
@@ -1638,6 +1654,7 @@
|
|
/* Added for parameter test */
|
|
case OMX_IndexParamCompBufferSupplier:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_BUFFERSUPPLIERTYPE);
|
|
OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplierType = (OMX_PARAM_BUFFERSUPPLIERTYPE*) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamCompBufferSupplier");
|
|
if (bufferSupplierType->nPortIndex ==(OMX_U32) PORT_INDEX_IN) {
|
|
@@ -1653,6 +1670,7 @@
|
|
|
|
case OMX_IndexParamVideoQuantization:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_QUANTIZATIONTYPE);
|
|
OMX_VIDEO_PARAM_QUANTIZATIONTYPE *session_qp = (OMX_VIDEO_PARAM_QUANTIZATIONTYPE*) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_IndexParamVideoQuantization");
|
|
memcpy(session_qp, &m_sSessionQuantization, sizeof(m_sSessionQuantization));
|
|
@@ -1661,6 +1679,7 @@
|
|
|
|
case OMX_QcomIndexParamVideoQPRange:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_QPRANGETYPE);
|
|
OMX_QCOM_VIDEO_PARAM_QPRANGETYPE *qp_range = (OMX_QCOM_VIDEO_PARAM_QPRANGETYPE*) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_QcomIndexParamVideoQPRange");
|
|
memcpy(qp_range, &m_sSessionQPRange, sizeof(m_sSessionQPRange));
|
|
@@ -1669,6 +1688,7 @@
|
|
|
|
case OMX_IndexParamVideoErrorCorrection:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE);
|
|
OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE* errorresilience = (OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("OMX_IndexParamVideoErrorCorrection");
|
|
errorresilience->bEnableHEC = m_sErrorCorrection.bEnableHEC;
|
|
@@ -1678,6 +1698,7 @@
|
|
}
|
|
case OMX_IndexParamVideoIntraRefresh:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_INTRAREFRESHTYPE);
|
|
OMX_VIDEO_PARAM_INTRAREFRESHTYPE* intrarefresh = (OMX_VIDEO_PARAM_INTRAREFRESHTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("OMX_IndexParamVideoIntraRefresh");
|
|
DEBUG_PRINT_ERROR("OMX_IndexParamVideoIntraRefresh GET");
|
|
@@ -1690,6 +1711,7 @@
|
|
break;
|
|
case OMX_COMPONENT_CAPABILITY_TYPE_INDEX:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMXComponentCapabilityFlagsType);
|
|
OMXComponentCapabilityFlagsType *pParam = reinterpret_cast<OMXComponentCapabilityFlagsType*>(paramData);
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_COMPONENT_CAPABILITY_TYPE_INDEX");
|
|
pParam->iIsOMXComponentMultiThreaded = OMX_TRUE;
|
|
@@ -1707,6 +1729,7 @@
|
|
#if !defined(MAX_RES_720P) || defined(_MSM8974_)
|
|
case OMX_QcomIndexParamIndexExtraDataType:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_INDEXEXTRADATATYPE);
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_QcomIndexParamIndexExtraDataType");
|
|
QOMX_INDEXEXTRADATATYPE *pParam = (QOMX_INDEXEXTRADATATYPE *)paramData;
|
|
if (pParam->nIndex == (OMX_INDEXTYPE)OMX_ExtraDataVideoEncoderSliceInfo) {
|
|
@@ -1752,6 +1775,7 @@
|
|
}
|
|
case QOMX_IndexParamVideoLTRCountRangeSupported:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_RANGETYPE);
|
|
DEBUG_PRINT_HIGH("get_parameter: QOMX_IndexParamVideoLTRCountRangeSupported");
|
|
QOMX_EXTNINDEX_RANGETYPE *pParam = (QOMX_EXTNINDEX_RANGETYPE *)paramData;
|
|
if (pParam->nPortIndex == PORT_INDEX_OUT) {
|
|
@@ -1772,6 +1796,7 @@
|
|
break;
|
|
case OMX_QcomIndexParamVideoLTRCount:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE);
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_QcomIndexParamVideoLTRCount");
|
|
OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE *pParam =
|
|
reinterpret_cast<OMX_QCOM_VIDEO_PARAM_LTRCOUNT_TYPE*>(paramData);
|
|
@@ -1781,6 +1806,7 @@
|
|
#endif
|
|
case QOMX_IndexParamVideoSyntaxHdr:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE);
|
|
DEBUG_PRINT_HIGH("QOMX_IndexParamVideoSyntaxHdr");
|
|
QOMX_EXTNINDEX_PARAMTYPE* pParam =
|
|
reinterpret_cast<QOMX_EXTNINDEX_PARAMTYPE*>(paramData);
|
|
@@ -1826,6 +1852,7 @@
|
|
}
|
|
case OMX_QcomIndexHierarchicalStructure:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_HIERARCHICALLAYERS);
|
|
QOMX_VIDEO_HIERARCHICALLAYERS* hierp = (QOMX_VIDEO_HIERARCHICALLAYERS*) paramData;
|
|
DEBUG_PRINT_LOW("get_parameter: OMX_QcomIndexHierarchicalStructure");
|
|
memcpy(hierp, &m_sHierLayers, sizeof(m_sHierLayers));
|
|
@@ -1833,6 +1860,7 @@
|
|
}
|
|
case OMX_QcomIndexParamPerfLevel:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_PERF_LEVEL);
|
|
OMX_U32 perflevel;
|
|
OMX_QCOM_VIDEO_PARAM_PERF_LEVEL *pParam =
|
|
reinterpret_cast<OMX_QCOM_VIDEO_PARAM_PERF_LEVEL*>(paramData);
|
|
@@ -1847,6 +1875,7 @@
|
|
}
|
|
case OMX_QcomIndexParamH264VUITimingInfo:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO);
|
|
OMX_U32 enabled;
|
|
OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO *pParam =
|
|
reinterpret_cast<OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO*>(paramData);
|
|
@@ -1861,6 +1890,7 @@
|
|
}
|
|
case OMX_QcomIndexParamPeakBitrate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE);
|
|
OMX_U32 peakbitrate;
|
|
OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE *pParam =
|
|
reinterpret_cast<OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE*>(paramData);
|
|
@@ -1875,6 +1905,7 @@
|
|
}
|
|
case QOMX_IndexParamVideoInitialQp:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_VIDEO_INITIALQP);
|
|
QOMX_EXTNINDEX_VIDEO_INITIALQP* initqp =
|
|
reinterpret_cast<QOMX_EXTNINDEX_VIDEO_INITIALQP *>(paramData);
|
|
memcpy(initqp, &m_sParamInitqp, sizeof(m_sParamInitqp));
|
|
@@ -1934,18 +1965,21 @@
|
|
switch ((int)configIndex) {
|
|
case OMX_IndexConfigVideoBitrate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_BITRATETYPE);
|
|
OMX_VIDEO_CONFIG_BITRATETYPE* pParam = reinterpret_cast<OMX_VIDEO_CONFIG_BITRATETYPE*>(configData);
|
|
memcpy(pParam, &m_sConfigBitrate, sizeof(m_sConfigBitrate));
|
|
break;
|
|
}
|
|
case OMX_IndexConfigVideoFramerate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_FRAMERATETYPE);
|
|
OMX_CONFIG_FRAMERATETYPE* pParam = reinterpret_cast<OMX_CONFIG_FRAMERATETYPE*>(configData);
|
|
memcpy(pParam, &m_sConfigFramerate, sizeof(m_sConfigFramerate));
|
|
break;
|
|
}
|
|
case OMX_IndexConfigCommonRotate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_ROTATIONTYPE);
|
|
OMX_CONFIG_ROTATIONTYPE* pParam = reinterpret_cast<OMX_CONFIG_ROTATIONTYPE*>(configData);
|
|
memcpy(pParam, &m_sConfigFrameRotation, sizeof(m_sConfigFrameRotation));
|
|
break;
|
|
@@ -1953,12 +1987,14 @@
|
|
case QOMX_IndexConfigVideoIntraperiod:
|
|
{
|
|
DEBUG_PRINT_LOW("get_config:QOMX_IndexConfigVideoIntraperiod");
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_INTRAPERIODTYPE);
|
|
QOMX_VIDEO_INTRAPERIODTYPE* pParam = reinterpret_cast<QOMX_VIDEO_INTRAPERIODTYPE*>(configData);
|
|
memcpy(pParam, &m_sIntraperiod, sizeof(m_sIntraperiod));
|
|
break;
|
|
}
|
|
case OMX_IndexConfigVideoAVCIntraPeriod:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_AVCINTRAPERIOD);
|
|
OMX_VIDEO_CONFIG_AVCINTRAPERIOD *pParam =
|
|
reinterpret_cast<OMX_VIDEO_CONFIG_AVCINTRAPERIOD*>(configData);
|
|
DEBUG_PRINT_LOW("get_config: OMX_IndexConfigVideoAVCIntraPeriod");
|
|
@@ -1967,6 +2003,7 @@
|
|
}
|
|
case OMX_IndexConfigCommonDeinterlace:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_DEINTERLACE);
|
|
OMX_VIDEO_CONFIG_DEINTERLACE *pParam =
|
|
reinterpret_cast<OMX_VIDEO_CONFIG_DEINTERLACE*>(configData);
|
|
DEBUG_PRINT_LOW("get_config: OMX_IndexConfigCommonDeinterlace");
|
|
@@ -1975,6 +2012,7 @@
|
|
}
|
|
case OMX_IndexConfigVideoVp8ReferenceFrame:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_VP8REFERENCEFRAMETYPE);
|
|
OMX_VIDEO_VP8REFERENCEFRAMETYPE* pParam =
|
|
reinterpret_cast<OMX_VIDEO_VP8REFERENCEFRAMETYPE*>(configData);
|
|
DEBUG_PRINT_LOW("get_config: OMX_IndexConfigVideoVp8ReferenceFrame");
|
|
@@ -1983,6 +2021,7 @@
|
|
}
|
|
case OMX_QcomIndexConfigPerfLevel:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL);
|
|
OMX_U32 perflevel;
|
|
OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL *pParam =
|
|
reinterpret_cast<OMX_QCOM_VIDEO_CONFIG_PERF_LEVEL*>(configData);
|
|
diff --git a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
|
|
index a72e07e..70d6260 100644
|
|
--- a/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
|
|
+++ b/mm-video-v4l2/vidc/venc/src/omx_video_encoder.cpp
|
|
@@ -577,6 +577,7 @@
|
|
switch ((int)paramIndex) {
|
|
case OMX_IndexParamPortDefinition:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_PORTDEFINITIONTYPE);
|
|
OMX_PARAM_PORTDEFINITIONTYPE *portDefn;
|
|
portDefn = (OMX_PARAM_PORTDEFINITIONTYPE *) paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPortDefinition H= %d, W = %d",
|
|
@@ -676,6 +677,7 @@
|
|
|
|
case OMX_IndexParamVideoPortFormat:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PORTFORMATTYPE);
|
|
OMX_VIDEO_PARAM_PORTFORMATTYPE *portFmt =
|
|
(OMX_VIDEO_PARAM_PORTFORMATTYPE *)paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoPortFormat %d",
|
|
@@ -719,6 +721,7 @@
|
|
break;
|
|
case OMX_IndexParamVideoInit:
|
|
{ //TODO, do we need this index set param
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PORT_PARAM_TYPE);
|
|
OMX_PORT_PARAM_TYPE* pParam = (OMX_PORT_PARAM_TYPE*)(paramData);
|
|
DEBUG_PRINT_LOW("Set OMX_IndexParamVideoInit called");
|
|
break;
|
|
@@ -726,6 +729,7 @@
|
|
|
|
case OMX_IndexParamVideoBitrate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_BITRATETYPE);
|
|
OMX_VIDEO_PARAM_BITRATETYPE* pParam = (OMX_VIDEO_PARAM_BITRATETYPE*)paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoBitrate");
|
|
if (handle->venc_set_param(paramData,OMX_IndexParamVideoBitrate) != true) {
|
|
@@ -742,6 +746,7 @@
|
|
}
|
|
case OMX_IndexParamVideoMpeg4:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_MPEG4TYPE);
|
|
OMX_VIDEO_PARAM_MPEG4TYPE* pParam = (OMX_VIDEO_PARAM_MPEG4TYPE*)paramData;
|
|
OMX_VIDEO_PARAM_MPEG4TYPE mp4_param;
|
|
memcpy(&mp4_param, pParam, sizeof(struct OMX_VIDEO_PARAM_MPEG4TYPE));
|
|
@@ -795,6 +800,7 @@
|
|
}
|
|
case OMX_IndexParamVideoAvc:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_AVCTYPE);
|
|
OMX_VIDEO_PARAM_AVCTYPE* pParam = (OMX_VIDEO_PARAM_AVCTYPE*)paramData;
|
|
OMX_VIDEO_PARAM_AVCTYPE avc_param;
|
|
memcpy(&avc_param, pParam, sizeof( struct OMX_VIDEO_PARAM_AVCTYPE));
|
|
@@ -854,6 +860,7 @@
|
|
}
|
|
case (OMX_INDEXTYPE)OMX_IndexParamVideoVp8:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_VP8TYPE);
|
|
OMX_VIDEO_PARAM_VP8TYPE* pParam = (OMX_VIDEO_PARAM_VP8TYPE*)paramData;
|
|
OMX_VIDEO_PARAM_VP8TYPE vp8_param;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoVp8");
|
|
@@ -870,6 +877,7 @@
|
|
}
|
|
case (OMX_INDEXTYPE)OMX_IndexParamVideoHevc:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_HEVCTYPE);
|
|
OMX_VIDEO_PARAM_HEVCTYPE* pParam = (OMX_VIDEO_PARAM_HEVCTYPE*)paramData;
|
|
OMX_VIDEO_PARAM_HEVCTYPE hevc_param;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoHevc");
|
|
@@ -883,6 +891,7 @@
|
|
}
|
|
case OMX_IndexParamVideoProfileLevelCurrent:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_PROFILELEVELTYPE);
|
|
OMX_VIDEO_PARAM_PROFILELEVELTYPE* pParam = (OMX_VIDEO_PARAM_PROFILELEVELTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoProfileLevelCurrent");
|
|
if (handle->venc_set_param(pParam,OMX_IndexParamVideoProfileLevelCurrent) != true) {
|
|
@@ -937,6 +946,7 @@
|
|
}
|
|
case OMX_IndexParamStandardComponentRole:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_COMPONENTROLETYPE);
|
|
OMX_PARAM_COMPONENTROLETYPE *comp_role;
|
|
comp_role = (OMX_PARAM_COMPONENTROLETYPE *) paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamStandardComponentRole %s",
|
|
@@ -1007,6 +1017,7 @@
|
|
|
|
case OMX_IndexParamPriorityMgmt:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PRIORITYMGMTTYPE);
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamPriorityMgmt");
|
|
if (m_state != OMX_StateLoaded) {
|
|
DEBUG_PRINT_ERROR("ERROR: Set Parameter called in Invalid State");
|
|
@@ -1027,6 +1038,7 @@
|
|
|
|
case OMX_IndexParamCompBufferSupplier:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_PARAM_BUFFERSUPPLIERTYPE);
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamCompBufferSupplier");
|
|
OMX_PARAM_BUFFERSUPPLIERTYPE *bufferSupplierType = (OMX_PARAM_BUFFERSUPPLIERTYPE*) paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamCompBufferSupplier %d",
|
|
@@ -1043,6 +1055,7 @@
|
|
}
|
|
case OMX_IndexParamVideoQuantization:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_QUANTIZATIONTYPE);
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_IndexParamVideoQuantization");
|
|
OMX_VIDEO_PARAM_QUANTIZATIONTYPE *session_qp = (OMX_VIDEO_PARAM_QUANTIZATIONTYPE*) paramData;
|
|
if (session_qp->nPortIndex == PORT_INDEX_OUT) {
|
|
@@ -1061,6 +1074,7 @@
|
|
|
|
case OMX_QcomIndexParamVideoQPRange:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_QPRANGETYPE);
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_QcomIndexParamVideoQPRange");
|
|
OMX_QCOM_VIDEO_PARAM_QPRANGETYPE *qp_range = (OMX_QCOM_VIDEO_PARAM_QPRANGETYPE*) paramData;
|
|
if (qp_range->nPortIndex == PORT_INDEX_OUT) {
|
|
@@ -1079,6 +1093,7 @@
|
|
|
|
case OMX_QcomIndexPortDefn:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_PARAM_PORTDEFINITIONTYPE);
|
|
OMX_QCOM_PARAM_PORTDEFINITIONTYPE* pParam =
|
|
(OMX_QCOM_PARAM_PORTDEFINITIONTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("set_parameter: OMX_QcomIndexPortDefn");
|
|
@@ -1105,6 +1120,7 @@
|
|
|
|
case OMX_IndexParamVideoErrorCorrection:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE);
|
|
DEBUG_PRINT_LOW("OMX_IndexParamVideoErrorCorrection");
|
|
OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE* pParam =
|
|
(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE*)paramData;
|
|
@@ -1117,6 +1133,7 @@
|
|
}
|
|
case OMX_IndexParamVideoIntraRefresh:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_VIDEO_PARAM_INTRAREFRESHTYPE);
|
|
DEBUG_PRINT_LOW("set_param:OMX_IndexParamVideoIntraRefresh");
|
|
OMX_VIDEO_PARAM_INTRAREFRESHTYPE* pParam =
|
|
(OMX_VIDEO_PARAM_INTRAREFRESHTYPE*)paramData;
|
|
@@ -1130,6 +1147,7 @@
|
|
#ifdef _ANDROID_ICS_
|
|
case OMX_QcomIndexParamVideoMetaBufferMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, StoreMetaDataInBuffersParams);
|
|
StoreMetaDataInBuffersParams *pParam =
|
|
(StoreMetaDataInBuffersParams*)paramData;
|
|
DEBUG_PRINT_HIGH("set_parameter:OMX_QcomIndexParamVideoMetaBufferMode: "
|
|
@@ -1176,6 +1194,7 @@
|
|
#if !defined(MAX_RES_720P) || defined(_MSM8974_)
|
|
case OMX_QcomIndexParamIndexExtraDataType:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_INDEXEXTRADATATYPE);
|
|
DEBUG_PRINT_HIGH("set_parameter: OMX_QcomIndexParamIndexExtraDataType");
|
|
QOMX_INDEXEXTRADATATYPE *pParam = (QOMX_INDEXEXTRADATATYPE *)paramData;
|
|
bool enable = false;
|
|
@@ -1256,6 +1275,7 @@
|
|
}
|
|
case QOMX_IndexParamVideoLTRMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_PARAM_LTRMODE_TYPE);
|
|
QOMX_VIDEO_PARAM_LTRMODE_TYPE* pParam =
|
|
(QOMX_VIDEO_PARAM_LTRMODE_TYPE*)paramData;
|
|
if (!handle->venc_set_param(paramData, (OMX_INDEXTYPE)QOMX_IndexParamVideoLTRMode)) {
|
|
@@ -1267,6 +1287,7 @@
|
|
}
|
|
case QOMX_IndexParamVideoLTRCount:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_PARAM_LTRCOUNT_TYPE);
|
|
QOMX_VIDEO_PARAM_LTRCOUNT_TYPE* pParam =
|
|
(QOMX_VIDEO_PARAM_LTRCOUNT_TYPE*)paramData;
|
|
if (!handle->venc_set_param(paramData, (OMX_INDEXTYPE)QOMX_IndexParamVideoLTRCount)) {
|
|
@@ -1279,6 +1300,7 @@
|
|
#endif
|
|
case OMX_QcomIndexParamVideoMaxAllowedBitrateCheck:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE);
|
|
QOMX_EXTNINDEX_PARAMTYPE* pParam =
|
|
(QOMX_EXTNINDEX_PARAMTYPE*)paramData;
|
|
if (pParam->nPortIndex == PORT_INDEX_OUT) {
|
|
@@ -1296,6 +1318,7 @@
|
|
#ifdef MAX_RES_1080P
|
|
case OMX_QcomIndexEnableSliceDeliveryMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE);
|
|
QOMX_EXTNINDEX_PARAMTYPE* pParam =
|
|
(QOMX_EXTNINDEX_PARAMTYPE*)paramData;
|
|
if (pParam->nPortIndex == PORT_INDEX_OUT) {
|
|
@@ -1314,6 +1337,7 @@
|
|
#endif
|
|
case OMX_QcomIndexEnableH263PlusPType:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_PARAMTYPE);
|
|
QOMX_EXTNINDEX_PARAMTYPE* pParam =
|
|
(QOMX_EXTNINDEX_PARAMTYPE*)paramData;
|
|
DEBUG_PRINT_LOW("OMX_QcomIndexEnableH263PlusPType");
|
|
@@ -1332,6 +1356,7 @@
|
|
}
|
|
case OMX_QcomIndexParamSequenceHeaderWithIDR:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, PrependSPSPPSToIDRFramesParams);
|
|
if(!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE)OMX_QcomIndexParamSequenceHeaderWithIDR)) {
|
|
DEBUG_PRINT_ERROR("%s: %s",
|
|
@@ -1343,6 +1368,7 @@
|
|
}
|
|
case OMX_QcomIndexParamH264AUDelimiter:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_CONFIG_H264_AUD);
|
|
if(!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE)OMX_QcomIndexParamH264AUDelimiter)) {
|
|
DEBUG_PRINT_ERROR("%s: %s",
|
|
@@ -1354,6 +1380,7 @@
|
|
}
|
|
case OMX_QcomIndexHierarchicalStructure:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_VIDEO_HIERARCHICALLAYERS);
|
|
QOMX_VIDEO_HIERARCHICALLAYERS* pParam =
|
|
(QOMX_VIDEO_HIERARCHICALLAYERS*)paramData;
|
|
DEBUG_PRINT_LOW("OMX_QcomIndexHierarchicalStructure");
|
|
@@ -1377,6 +1404,7 @@
|
|
}
|
|
case OMX_QcomIndexParamPerfLevel:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_PERF_LEVEL);
|
|
if (!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE) OMX_QcomIndexParamPerfLevel)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting performance level");
|
|
@@ -1386,6 +1414,7 @@
|
|
}
|
|
case OMX_QcomIndexParamH264VUITimingInfo:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_VUI_TIMING_INFO);
|
|
if (!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE) OMX_QcomIndexParamH264VUITimingInfo)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting VUI timing info");
|
|
@@ -1395,6 +1424,7 @@
|
|
}
|
|
case OMX_QcomIndexParamPeakBitrate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, OMX_QCOM_VIDEO_PARAM_PEAK_BITRATE);
|
|
if (!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE) OMX_QcomIndexParamPeakBitrate)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting peak bitrate");
|
|
@@ -1404,6 +1434,7 @@
|
|
}
|
|
case QOMX_IndexParamVideoInitialQp:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_VIDEO_INITIALQP);
|
|
if(!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE)QOMX_IndexParamVideoInitialQp)) {
|
|
DEBUG_PRINT_ERROR("Request to Enable initial QP failed");
|
|
@@ -1423,6 +1454,7 @@
|
|
}
|
|
case OMX_QcomIndexParamVideoHybridHierpMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(paramData, QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE);
|
|
if(!handle->venc_set_param(paramData,
|
|
(OMX_INDEXTYPE)OMX_QcomIndexParamVideoHybridHierpMode)) {
|
|
DEBUG_PRINT_ERROR("Request to Enable Hybrid Hier-P failed");
|
|
@@ -1527,6 +1559,7 @@
|
|
switch ((int)configIndex) {
|
|
case OMX_IndexConfigVideoBitrate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_BITRATETYPE);
|
|
OMX_VIDEO_CONFIG_BITRATETYPE* pParam =
|
|
reinterpret_cast<OMX_VIDEO_CONFIG_BITRATETYPE*>(configData);
|
|
DEBUG_PRINT_HIGH("set_config(): OMX_IndexConfigVideoBitrate (%u)", (unsigned int)pParam->nEncodeBitrate);
|
|
@@ -1548,6 +1581,7 @@
|
|
}
|
|
case OMX_IndexConfigVideoFramerate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_FRAMERATETYPE);
|
|
OMX_CONFIG_FRAMERATETYPE* pParam =
|
|
reinterpret_cast<OMX_CONFIG_FRAMERATETYPE*>(configData);
|
|
DEBUG_PRINT_HIGH("set_config(): OMX_IndexConfigVideoFramerate (0x%x)", (unsigned int)pParam->xEncodeFramerate);
|
|
@@ -1570,6 +1604,7 @@
|
|
}
|
|
case QOMX_IndexConfigVideoIntraperiod:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_INTRAPERIODTYPE);
|
|
QOMX_VIDEO_INTRAPERIODTYPE* pParam =
|
|
reinterpret_cast<QOMX_VIDEO_INTRAPERIODTYPE*>(configData);
|
|
|
|
@@ -1627,6 +1662,7 @@
|
|
|
|
case OMX_IndexConfigVideoIntraVOPRefresh:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_INTRAREFRESHVOPTYPE);
|
|
OMX_CONFIG_INTRAREFRESHVOPTYPE* pParam =
|
|
reinterpret_cast<OMX_CONFIG_INTRAREFRESHVOPTYPE*>(configData);
|
|
|
|
@@ -1648,6 +1684,7 @@
|
|
}
|
|
case OMX_IndexConfigCommonRotate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_CONFIG_ROTATIONTYPE);
|
|
OMX_CONFIG_ROTATIONTYPE *pParam =
|
|
reinterpret_cast<OMX_CONFIG_ROTATIONTYPE*>(configData);
|
|
OMX_S32 nRotation;
|
|
@@ -1695,6 +1732,7 @@
|
|
{
|
|
DEBUG_PRINT_HIGH("set_config(): OMX_QcomIndexConfigVideoFramePackingArrangement");
|
|
if (m_sOutPortFormat.eCompressionFormat == OMX_VIDEO_CodingAVC) {
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_QCOM_FRAME_PACK_ARRANGEMENT);
|
|
OMX_QCOM_FRAME_PACK_ARRANGEMENT *configFmt =
|
|
(OMX_QCOM_FRAME_PACK_ARRANGEMENT *) configData;
|
|
extra_data_handle.set_frame_pack_data(configFmt);
|
|
@@ -1705,6 +1743,7 @@
|
|
}
|
|
case QOMX_IndexConfigVideoLTRPeriod:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE);
|
|
QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE* pParam = (QOMX_VIDEO_CONFIG_LTRPERIOD_TYPE*)configData;
|
|
if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)QOMX_IndexConfigVideoLTRPeriod)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting LTR period failed");
|
|
@@ -1716,6 +1755,7 @@
|
|
|
|
case OMX_IndexConfigVideoVp8ReferenceFrame:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_VP8REFERENCEFRAMETYPE);
|
|
OMX_VIDEO_VP8REFERENCEFRAMETYPE* pParam = (OMX_VIDEO_VP8REFERENCEFRAMETYPE*) configData;
|
|
if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE) OMX_IndexConfigVideoVp8ReferenceFrame)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting VP8 reference frame");
|
|
@@ -1727,6 +1767,7 @@
|
|
|
|
case QOMX_IndexConfigVideoLTRUse:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_CONFIG_LTRUSE_TYPE);
|
|
QOMX_VIDEO_CONFIG_LTRUSE_TYPE* pParam = (QOMX_VIDEO_CONFIG_LTRUSE_TYPE*)configData;
|
|
if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)QOMX_IndexConfigVideoLTRUse)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting LTR use failed");
|
|
@@ -1737,6 +1778,7 @@
|
|
}
|
|
case QOMX_IndexConfigVideoLTRMark:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_VIDEO_CONFIG_LTRMARK_TYPE);
|
|
QOMX_VIDEO_CONFIG_LTRMARK_TYPE* pParam = (QOMX_VIDEO_CONFIG_LTRMARK_TYPE*)configData;
|
|
if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)QOMX_IndexConfigVideoLTRMark)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting LTR mark failed");
|
|
@@ -1746,6 +1788,7 @@
|
|
}
|
|
case OMX_IndexConfigVideoAVCIntraPeriod:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_AVCINTRAPERIOD);
|
|
OMX_VIDEO_CONFIG_AVCINTRAPERIOD *pParam = (OMX_VIDEO_CONFIG_AVCINTRAPERIOD*) configData;
|
|
DEBUG_PRINT_LOW("set_config: OMX_IndexConfigVideoAVCIntraPeriod");
|
|
if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_IndexConfigVideoAVCIntraPeriod)) {
|
|
@@ -1757,6 +1800,7 @@
|
|
}
|
|
case OMX_IndexConfigCommonDeinterlace:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_VIDEO_CONFIG_DEINTERLACE);
|
|
OMX_VIDEO_CONFIG_DEINTERLACE *pParam = (OMX_VIDEO_CONFIG_DEINTERLACE*) configData;
|
|
DEBUG_PRINT_LOW("set_config: OMX_IndexConfigCommonDeinterlace");
|
|
if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_IndexConfigCommonDeinterlace)) {
|
|
@@ -1768,6 +1812,7 @@
|
|
}
|
|
case OMX_QcomIndexConfigVideoVencPerfMode:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, QOMX_EXTNINDEX_VIDEO_PERFMODE);
|
|
QOMX_EXTNINDEX_VIDEO_PERFMODE* pParam = (QOMX_EXTNINDEX_VIDEO_PERFMODE*)configData;
|
|
if (!handle->venc_set_config(pParam, (OMX_INDEXTYPE)OMX_QcomIndexConfigVideoVencPerfMode)) {
|
|
DEBUG_PRINT_ERROR("ERROR: Setting OMX_QcomIndexConfigVideoVencPerfMode failed");
|
|
@@ -1777,6 +1822,7 @@
|
|
}
|
|
case OMX_IndexConfigPriority:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_PARAM_U32TYPE);
|
|
if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)OMX_IndexConfigPriority)) {
|
|
DEBUG_PRINT_ERROR("Failed to set OMX_IndexConfigPriority");
|
|
return OMX_ErrorUnsupportedSetting;
|
|
@@ -1785,6 +1831,7 @@
|
|
}
|
|
case OMX_IndexConfigOperatingRate:
|
|
{
|
|
+ VALIDATE_OMX_PARAM_DATA(configData, OMX_PARAM_U32TYPE);
|
|
if (!handle->venc_set_config(configData, (OMX_INDEXTYPE)OMX_IndexConfigOperatingRate)) {
|
|
DEBUG_PRINT_ERROR("Failed to set OMX_IndexConfigOperatingRate");
|
|
return handle->hw_overload ? OMX_ErrorInsufficientResources :
|