/** setting configurations */ OMX_ERRORTYPE omx_volume_component_SetConfig( OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_INDEXTYPE nIndex, OMX_IN OMX_PTR pComponentConfigStructure) { OMX_AUDIO_CONFIG_VOLUMETYPE* pVolume; OMX_COMPONENTTYPE *openmaxStandComp = (OMX_COMPONENTTYPE *)hComponent; omx_volume_component_PrivateType* omx_volume_component_Private = openmaxStandComp->pComponentPrivate; OMX_ERRORTYPE err = OMX_ErrorNone; switch (nIndex) { case OMX_IndexConfigAudioVolume : pVolume = (OMX_AUDIO_CONFIG_VOLUMETYPE*) pComponentConfigStructure; if(pVolume->sVolume.nValue > 100) { err = OMX_ErrorBadParameter; break; } omx_volume_component_Private->gain = pVolume->sVolume.nValue; err = OMX_ErrorNone; break; default: // delegate to superclass err = omx_base_component_SetConfig(hComponent, nIndex, pComponentConfigStructure); } return err; }
OMX_ERRORTYPE omx_shvpudec_component_SetConfig( OMX_HANDLETYPE hComponent, OMX_INDEXTYPE nIndex, OMX_PTR pComponentConfigStructure) { OMX_ERRORTYPE err = OMX_ErrorNone; OMX_VENDOR_EXTRADATATYPE* pExtradata; OMX_COMPONENTTYPE *openmaxStandComp = (OMX_COMPONENTTYPE *)hComponent; omx_shvpudec_component_PrivateType* omx_shvpudec_component_Private = (omx_shvpudec_component_PrivateType*)openmaxStandComp->pComponentPrivate; if (pComponentConfigStructure == NULL) { return OMX_ErrorBadParameter; } DEBUG(DEB_LEV_SIMPLE_SEQ, " Getting configuration %i\n", nIndex); /* Check which structure we are being fed and fill its header */ switch (nIndex) { default: // delegate to superclass return omx_base_component_SetConfig(hComponent, nIndex, pComponentConfigStructure); } return err; }
OMX_ERRORTYPE omx_xvideo_sink_component_SetConfig( OMX_HANDLETYPE hComponent, OMX_INDEXTYPE nIndex, OMX_PTR pComponentConfigStructure) { OMX_ERRORTYPE err = OMX_ErrorNone; OMX_U32 portIndex; OMX_CONFIG_RECTTYPE *omxConfigCrop; OMX_CONFIG_ROTATIONTYPE *omxConfigRotate; OMX_CONFIG_MIRRORTYPE *omxConfigMirror; OMX_CONFIG_SCALEFACTORTYPE *omxConfigScale; OMX_CONFIG_POINTTYPE *omxConfigOutputPosition; /* Check which structure we are being fed and make control its header */ OMX_COMPONENTTYPE *openmaxStandComp = (OMX_COMPONENTTYPE *)hComponent; omx_xvideo_sink_component_PrivateType* omx_xvideo_sink_component_Private = openmaxStandComp->pComponentPrivate; omx_xvideo_sink_component_PortType *pPort; if (pComponentConfigStructure == NULL) { return OMX_ErrorBadParameter; } DEBUG(DEB_LEV_SIMPLE_SEQ, " Setting parameter %i\n", nIndex); switch (nIndex) { case OMX_IndexConfigCommonInputCrop: omxConfigCrop = (OMX_CONFIG_RECTTYPE*)pComponentConfigStructure; portIndex = omxConfigCrop->nPortIndex; if ((err = checkHeader(pComponentConfigStructure, sizeof(OMX_CONFIG_RECTTYPE))) != OMX_ErrorNone) { break; } if (portIndex == OMX_BASE_SINK_INPUTPORT_INDEX) { pPort = (omx_xvideo_sink_component_PortType *) omx_xvideo_sink_component_Private->ports[portIndex]; pPort->omxConfigCrop.nLeft = omxConfigCrop->nLeft; pPort->omxConfigCrop.nTop = omxConfigCrop->nTop; pPort->omxConfigCrop.nWidth = omxConfigCrop->nWidth; pPort->omxConfigCrop.nHeight = omxConfigCrop->nHeight; } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonRotate: omxConfigRotate = (OMX_CONFIG_ROTATIONTYPE*)pComponentConfigStructure; portIndex = omxConfigRotate->nPortIndex; if ((err = checkHeader(pComponentConfigStructure, sizeof(OMX_CONFIG_ROTATIONTYPE))) != OMX_ErrorNone) { break; } if (portIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *) omx_xvideo_sink_component_Private->ports[portIndex]; if (omxConfigRotate->nRotation != 0) { // Rotation not supported (yet) return OMX_ErrorUnsupportedSetting; } pPort->omxConfigRotate.nRotation = omxConfigRotate->nRotation; } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonMirror: omxConfigMirror = (OMX_CONFIG_MIRRORTYPE*)pComponentConfigStructure; portIndex = omxConfigMirror->nPortIndex; if ((err = checkHeader(pComponentConfigStructure, sizeof(OMX_CONFIG_MIRRORTYPE))) != OMX_ErrorNone) { break; } if (portIndex == 0) { if (omxConfigMirror->eMirror == OMX_MirrorBoth || omxConfigMirror->eMirror == OMX_MirrorHorizontal) { // Horizontal mirroring not yet supported return OMX_ErrorUnsupportedSetting; } pPort = (omx_xvideo_sink_component_PortType *) omx_xvideo_sink_component_Private->ports[portIndex]; pPort->omxConfigMirror.eMirror = omxConfigMirror->eMirror; } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonScale: omxConfigScale = (OMX_CONFIG_SCALEFACTORTYPE*)pComponentConfigStructure; portIndex = omxConfigScale->nPortIndex; if ((err = checkHeader(pComponentConfigStructure, sizeof(OMX_CONFIG_SCALEFACTORTYPE))) != OMX_ErrorNone) { break; } if (portIndex == 0) { if (omxConfigScale->xWidth != 0x10000 || omxConfigScale->xHeight != 0x10000) { // Scaling not yet supported return OMX_ErrorUnsupportedSetting; } pPort = (omx_xvideo_sink_component_PortType *) omx_xvideo_sink_component_Private->ports[portIndex]; pPort->omxConfigScale.xWidth = omxConfigScale->xWidth; pPort->omxConfigScale.xHeight = omxConfigScale->xHeight; } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonOutputPosition: omxConfigOutputPosition = (OMX_CONFIG_POINTTYPE*)pComponentConfigStructure; portIndex = omxConfigOutputPosition->nPortIndex; if ((err = checkHeader(pComponentConfigStructure, sizeof(OMX_CONFIG_POINTTYPE))) != OMX_ErrorNone) { break; } if (portIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *) omx_xvideo_sink_component_Private->ports[portIndex]; pPort->omxConfigOutputPosition.nX = omxConfigOutputPosition->nX; pPort->omxConfigOutputPosition.nY = omxConfigOutputPosition->nY; } else { return OMX_ErrorBadPortIndex; } break; default: // delegate to superclass return omx_base_component_SetConfig(hComponent, nIndex, pComponentConfigStructure); } return err; }