OMX_ERRORTYPE omx_volume_component_GetConfig( OMX_IN OMX_HANDLETYPE hComponent, OMX_IN OMX_INDEXTYPE nIndex, OMX_INOUT 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; setHeader(pVolume,sizeof(OMX_AUDIO_CONFIG_VOLUMETYPE)); pVolume->sVolume.nValue = omx_volume_component_Private->gain; pVolume->sVolume.nMin = 0; pVolume->sVolume.nMax = 100; pVolume->bLinear = OMX_TRUE; err = OMX_ErrorNone; break; default : err = omx_base_component_GetConfig(hComponent, nIndex, pComponentConfigStructure); } return err; }
OMX_ERRORTYPE omx_xvideo_sink_component_GetConfig( OMX_HANDLETYPE hComponent, OMX_INDEXTYPE nIndex, OMX_PTR pComponentConfigStructure) { OMX_CONFIG_RECTTYPE *omxConfigCrop; OMX_CONFIG_ROTATIONTYPE *omxConfigRotate; OMX_CONFIG_MIRRORTYPE *omxConfigMirror; OMX_CONFIG_SCALEFACTORTYPE *omxConfigScale; OMX_CONFIG_POINTTYPE *omxConfigOutputPosition; 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, " Getting configuration %i\n", nIndex); /* Check which structure we are being fed and fill its header */ switch (nIndex) { case OMX_IndexConfigCommonInputCrop: omxConfigCrop = (OMX_CONFIG_RECTTYPE*)pComponentConfigStructure; setHeader(omxConfigCrop, sizeof(OMX_CONFIG_RECTTYPE)); if (omxConfigCrop->nPortIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *)omx_xvideo_sink_component_Private->ports[omxConfigCrop->nPortIndex]; memcpy(omxConfigCrop, &pPort->omxConfigCrop, sizeof(OMX_CONFIG_RECTTYPE)); } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonRotate: omxConfigRotate = (OMX_CONFIG_ROTATIONTYPE*)pComponentConfigStructure; setHeader(omxConfigRotate, sizeof(OMX_CONFIG_ROTATIONTYPE)); if (omxConfigRotate->nPortIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *)omx_xvideo_sink_component_Private->ports[omxConfigRotate->nPortIndex]; memcpy(omxConfigRotate, &pPort->omxConfigRotate, sizeof(OMX_CONFIG_ROTATIONTYPE)); } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonMirror: omxConfigMirror = (OMX_CONFIG_MIRRORTYPE*)pComponentConfigStructure; setHeader(omxConfigMirror, sizeof(OMX_CONFIG_MIRRORTYPE)); if (omxConfigMirror->nPortIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *)omx_xvideo_sink_component_Private->ports[omxConfigMirror->nPortIndex]; memcpy(omxConfigMirror, &pPort->omxConfigMirror, sizeof(OMX_CONFIG_MIRRORTYPE)); } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonScale: omxConfigScale = (OMX_CONFIG_SCALEFACTORTYPE*)pComponentConfigStructure; setHeader(omxConfigScale, sizeof(OMX_CONFIG_SCALEFACTORTYPE)); if (omxConfigScale->nPortIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *)omx_xvideo_sink_component_Private->ports[omxConfigScale->nPortIndex]; memcpy(omxConfigScale, &pPort->omxConfigScale, sizeof(OMX_CONFIG_SCALEFACTORTYPE)); } else { return OMX_ErrorBadPortIndex; } break; case OMX_IndexConfigCommonOutputPosition: omxConfigOutputPosition = (OMX_CONFIG_POINTTYPE*)pComponentConfigStructure; setHeader(omxConfigOutputPosition, sizeof(OMX_CONFIG_POINTTYPE)); if (omxConfigOutputPosition->nPortIndex == 0) { pPort = (omx_xvideo_sink_component_PortType *)omx_xvideo_sink_component_Private->ports[omxConfigOutputPosition->nPortIndex]; memcpy(omxConfigOutputPosition, &pPort->omxConfigOutputPosition, sizeof(OMX_CONFIG_POINTTYPE)); } else { return OMX_ErrorBadPortIndex; } break; default: // delegate to superclass return omx_base_component_GetConfig(hComponent, nIndex, pComponentConfigStructure); } return OMX_ErrorNone; }