goto EXIT;
}
- if ((nPortIndex == INPUT_PORT_INDEX) &&
+ if (pExynosPort->bNeedContigMem == OMX_TRUE) {
+ eMemType = CONTIG_MEMORY;
+ } else if ((nPortIndex == INPUT_PORT_INDEX) &&
(pExynosPort->bufferProcessType & BUFFER_SHARE)) {
eMemType = NORMAL_MEMORY;
}
pPortDef->nBufferSize = MAX_INPUT_METADATA_BUFFER_SIZE;
}
#endif
+ }
+ break;
+ case OMX_IndexVendorNeedContigMemory:
+ {
+ EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE *pPortMemType = (EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE *)pComponentParameterStructure;
+ OMX_U32 nPortIndex = pPortMemType->nPortIndex;
+ EXYNOS_OMX_BASEPORT *pExynosPort;
+
+ if (nPortIndex >= pExynosComponent->portParam.nPorts) {
+ ret = OMX_ErrorBadPortIndex;
+ goto EXIT;
+ }
+
+ ret = Exynos_OMX_Check_SizeVersion(pPortMemType, sizeof(EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE));
+ if (ret != OMX_ErrorNone)
+ goto EXIT;
+
+ pExynosPort = &pExynosComponent->pExynosPort[nPortIndex];
+
+ pPortMemType->bNeedContigMem = pExynosPort->bNeedContigMem;
}
break;
default:
}
break;
#endif
+ case OMX_IndexVendorNeedContigMemory:
+ {
+ EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE *pPortMemType = (EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE *)pComponentParameterStructure;
+ OMX_U32 nPortIndex = pPortMemType->nPortIndex;
+ EXYNOS_OMX_BASEPORT *pExynosPort;
+
+ if (nPortIndex >= pExynosComponent->portParam.nPorts) {
+ ret = OMX_ErrorBadPortIndex;
+ goto EXIT;
+ }
+
+ ret = Exynos_OMX_Check_SizeVersion(pPortMemType, sizeof(EXYNOS_OMX_VIDEO_PARAM_PORTMEMTYPE));
+ if (ret != OMX_ErrorNone)
+ goto EXIT;
+
+ pExynosPort = &pExynosComponent->pExynosPort[nPortIndex];
+
+ if ((pExynosComponent->currentState != OMX_StateLoaded) && (pExynosComponent->currentState != OMX_StateWaitForResources)) {
+ if (pExynosPort->portDefinition.bEnabled == OMX_TRUE) {
+ ret = OMX_ErrorIncorrectStateOperation;
+ goto EXIT;
+ }
+ }
+
+ pExynosPort->bNeedContigMem = pPortMemType->bNeedContigMem;
+ }
+ break;
default:
{
ret = Exynos_OMX_SetParameter(hComponent, nParamIndex, pComponentParameterStructure);
goto EXIT;
}
+ if (Exynos_OSAL_Strcmp(szParamName, EXYNOS_INDEX_PARAM_NEED_CONTIG_MEMORY) == 0) {
+ *pIndexType = (OMX_INDEXTYPE) OMX_IndexVendorNeedContigMemory;
+ ret = OMX_ErrorNone;
+ goto EXIT;
+ }
+
#ifdef USE_STOREMETADATA
if (Exynos_OSAL_Strcmp(szParamName, EXYNOS_INDEX_PARAM_STORE_METADATA_BUFFER) == 0) {
*pIndexType = (OMX_INDEXTYPE)OMX_IndexParamStoreMetaDataBuffer;