OMX_ERRORTYPE VideoSource::SetConfig( OMX_INDEXTYPE nParamIndex, OMX_PTR pStructure) { OMX_ERRORTYPE ret = OMX_ErrorNone; switch ((int)nParamIndex) { case OMX_IndexConfigCommonWhiteBalance: { OMX_CONFIG_WHITEBALCONTROLTYPE *pWhiteBalControl; pWhiteBalControl = (OMX_CONFIG_WHITEBALCONTROLTYPE*)pStructure; OMX_CHECK_STRUCT(pWhiteBalControl, OMX_CONFIG_WHITEBALCONTROLTYPE, ret); fsl_osal_memcpy(&WhiteBalControl, pWhiteBalControl, sizeof(OMX_CONFIG_WHITEBALCONTROLTYPE)); SetWhiteBalance(); } break; case OMX_IndexConfigCommonDigitalZoom: { OMX_CONFIG_SCALEFACTORTYPE *pScaleFactor; pScaleFactor = (OMX_CONFIG_SCALEFACTORTYPE*)pStructure; OMX_CHECK_STRUCT(pScaleFactor, OMX_CONFIG_SCALEFACTORTYPE, ret); fsl_osal_memcpy(&ScaleFactor, pScaleFactor, sizeof(OMX_CONFIG_SCALEFACTORTYPE)); SetDigitalZoom(); } break; case OMX_IndexConfigCommonExposureValue: { OMX_CONFIG_EXPOSUREVALUETYPE *pExposureValue; pExposureValue = (OMX_CONFIG_EXPOSUREVALUETYPE*)pStructure; OMX_CHECK_STRUCT(pExposureValue, OMX_CONFIG_EXPOSUREVALUETYPE, ret); fsl_osal_memcpy(&ExposureValue, pExposureValue, sizeof(OMX_CONFIG_EXPOSUREVALUETYPE)); SetExposureValue(); } break; case OMX_IndexConfigCapturing: { OMX_CONFIG_BOOLEANTYPE *pCapturing; OMX_TIME_CONFIG_TIMESTAMPTYPE StartTime; OMX_INIT_STRUCT(&StartTime, OMX_TIME_CONFIG_TIMESTAMPTYPE); StartTime.nTimestamp = 0; pCapturing = (OMX_CONFIG_BOOLEANTYPE*)pStructure; OMX_CHECK_STRUCT(pCapturing, OMX_CONFIG_BOOLEANTYPE, ret); fsl_osal_memcpy(&Capturing, pCapturing, sizeof(OMX_CONFIG_BOOLEANTYPE)); if (Capturing.bEnabled == OMX_TRUE) ClockSetConfig(OMX_IndexConfigTimeClientStartTime, &StartTime); } break; case OMX_IndexAutoPauseAfterCapture: { OMX_CONFIG_BOOLEANTYPE *pAutoPauseAfterCapture; pAutoPauseAfterCapture = (OMX_CONFIG_BOOLEANTYPE*)pStructure; OMX_CHECK_STRUCT(pAutoPauseAfterCapture, OMX_CONFIG_BOOLEANTYPE, ret); fsl_osal_memcpy(&AutoPauseAfterCapture, pAutoPauseAfterCapture, sizeof(OMX_CONFIG_BOOLEANTYPE)); } break; case OMX_IndexConfigCommonRotate: { OMX_CONFIG_ROTATIONTYPE *pRotation; pRotation = (OMX_CONFIG_ROTATIONTYPE*)pStructure; OMX_CHECK_STRUCT(pRotation, OMX_CONFIG_ROTATIONTYPE, ret); fsl_osal_memcpy(&Rotation, pRotation, sizeof(OMX_CONFIG_ROTATIONTYPE)); SetRotation(); } break; case OMX_IndexConfigEOS: { OMX_CONFIG_BOOLEANTYPE *pEOS; pEOS = (OMX_CONFIG_BOOLEANTYPE*)pStructure; OMX_CHECK_STRUCT(pEOS, OMX_CONFIG_BOOLEANTYPE, ret); fsl_osal_memcpy(&EOS, pEOS, sizeof(OMX_CONFIG_BOOLEANTYPE)); } break; default: ret = OMX_ErrorUnsupportedIndex; break; } return ret; }
bool PS3::SetWhiteBalanceGreen( int value ) { return SetWhiteBalance( 1, value ); // 1: Green }
bool PS3::SetWhiteBalanceBlue( int value ) { return SetWhiteBalance( 2, value ); // 2: Blue }
bool PS3::SetWhiteBalanceRed( int value ) { return SetWhiteBalance( 0, value ); // 0: Red }