OMX_ERRORTYPE VideoSource::InitComponent() { OMX_ERRORTYPE ret = OMX_ErrorNone; OMX_PARAM_PORTDEFINITIONTYPE sPortDef; OMX_INIT_STRUCT(&sPortDef, OMX_PARAM_PORTDEFINITIONTYPE); sPortDef.nPortIndex = PREVIEW_PORT; sPortDef.eDir = OMX_DirOutput; sPortDef.eDomain = OMX_PortDomainVideo; fsl_osal_memcpy(&sPortDef.format.video, &sVideoFmt, sizeof(OMX_VIDEO_PORTDEFINITIONTYPE)); sPortDef.bPopulated = OMX_FALSE; sPortDef.bEnabled = OMX_FALSE; sPortDef.nBufferCountMin = nFrameBufferMin; sPortDef.nBufferCountActual = nFrameBufferActual; sPortDef.nBufferSize = sPortDef.format.video.nFrameWidth * sPortDef.format.video.nFrameHeight * pxlfmt2bpp(sVideoFmt.eColorFormat) / 8; ret = ports[PREVIEW_PORT]->SetPortDefinition(&sPortDef); if(ret != OMX_ErrorNone) { LOG_ERROR("Set port definition for in port failed.\n"); return ret; } ports[PREVIEW_PORT]->SetSupplierType(PreviewPortSupplierType); OMX_INIT_STRUCT(&sPortDef, OMX_PARAM_PORTDEFINITIONTYPE); sPortDef.nPortIndex = CAPTURED_FRAME_PORT; sPortDef.eDir = OMX_DirOutput; sPortDef.eDomain = OMX_PortDomainVideo; fsl_osal_memcpy(&sPortDef.format.video, &sVideoFmt, sizeof(OMX_VIDEO_PORTDEFINITIONTYPE)); sPortDef.bPopulated = OMX_FALSE; sPortDef.bEnabled = OMX_TRUE; sPortDef.nBufferCountMin = nFrameBufferMin; sPortDef.nBufferCountActual = nFrameBufferActual; sPortDef.nBufferSize = sPortDef.format.video.nFrameWidth * sPortDef.format.video.nFrameHeight * pxlfmt2bpp(sVideoFmt.eColorFormat) / 8; ret = ports[CAPTURED_FRAME_PORT]->SetPortDefinition(&sPortDef); if(ret != OMX_ErrorNone) { LOG_ERROR("Set port definition for in port failed.\n"); return ret; } ports[CAPTURED_FRAME_PORT]->SetSupplierType(CapturePortSupplierType); sPortDef.nPortIndex = CLK_PORT; sPortDef.eDir = OMX_DirInput; sPortDef.eDomain = OMX_PortDomainOther; sPortDef.format.other.eFormat = OMX_OTHER_FormatTime; sPortDef.bPopulated = OMX_FALSE; sPortDef.bEnabled = OMX_FALSE; sPortDef.nBufferCountMin = 1; sPortDef.nBufferCountActual = 1; sPortDef.nBufferSize = sizeof(OMX_TIME_MEDIATIMETYPE); ret = ports[CLK_PORT]->SetPortDefinition(&sPortDef); if(ret != OMX_ErrorNone) { LOG_ERROR("Set port definition for clk port failed.\n"); return ret; } OMX_INIT_STRUCT(&SensorMode, OMX_PARAM_SENSORMODETYPE); SensorMode.nPortIndex = OMX_ALL; SensorMode.nFrameRate = 30 * Q16_SHIFT; SensorMode.bOneShot = OMX_FALSE; OMX_INIT_STRUCT(&PortFormat, OMX_VIDEO_PARAM_PORTFORMATTYPE); PortFormat.nPortIndex = OMX_ALL; PortFormat.nIndex = 0; PortFormat.eCompressionFormat = OMX_VIDEO_CodingUnused; PortFormat.eColorFormat = OMX_COLOR_FormatYUV420Planar; PortFormat.xFramerate = 30 * Q16_SHIFT; OMX_INIT_STRUCT(&WhiteBalControl, OMX_CONFIG_WHITEBALCONTROLTYPE); WhiteBalControl.nPortIndex = OMX_ALL; WhiteBalControl.eWhiteBalControl = OMX_WhiteBalControlOff; OMX_INIT_STRUCT(&ScaleFactor, OMX_CONFIG_SCALEFACTORTYPE); ScaleFactor.nPortIndex = OMX_ALL; ScaleFactor.xWidth = 1.0 * Q16_SHIFT; ScaleFactor.xHeight = 1.0 * Q16_SHIFT; OMX_INIT_STRUCT(&ExposureValue, OMX_CONFIG_EXPOSUREVALUETYPE); ExposureValue.nPortIndex = OMX_ALL; ExposureValue.eMetering = OMX_MeteringModeAverage; ExposureValue.xEVCompensation = 1.0 * Q16_SHIFT; ExposureValue.nApertureFNumber = 1; ExposureValue.bAutoAperture = OMX_TRUE; ExposureValue.nShutterSpeedMsec = 33; ExposureValue.bAutoShutterSpeed = OMX_TRUE; ExposureValue.nSensitivity = 100; ExposureValue.bAutoSensitivity = OMX_TRUE; OMX_INIT_STRUCT(&Capturing, OMX_CONFIG_BOOLEANTYPE); Capturing.bEnabled = OMX_FALSE; OMX_INIT_STRUCT(&EOS, OMX_CONFIG_BOOLEANTYPE); EOS.bEnabled = OMX_FALSE; OMX_INIT_STRUCT(&AutoPauseAfterCapture, OMX_CONFIG_BOOLEANTYPE); AutoPauseAfterCapture.bEnabled = OMX_FALSE; OMX_INIT_STRUCT(&Rotation, OMX_CONFIG_ROTATIONTYPE); Rotation.nPortIndex = OMX_ALL; Rotation.nRotation = 0; bFirstFrame = OMX_TRUE; nFrameDelay = 0; nBaseTime = 0; nMediaTimestampPre = 0; pOutBufferHdr = NULL; nCaptureFrameCnt = 0; bSendEOS = OMX_FALSE; nMaxDuration = MAX_VALUE_S64; nTimeLapseUs = 0; nNextLapseTS = 0; nLastSendTS = 0; nFrameInterval = 0; cameraPtr = NULL; nCameraId = 0; previewSurface = NULL; ret = InitSourceComponent(); if(ret != OMX_ErrorNone) return ret; return ret; }
OMX_ERRORTYPE AudioSource::InitComponent() { OMX_ERRORTYPE ret = OMX_ErrorNone; OMX_PARAM_PORTDEFINITIONTYPE sPortDef; OMX_INIT_STRUCT(&sPortDef, OMX_PARAM_PORTDEFINITIONTYPE); sPortDef.nPortIndex = OUTPUT_PORT; sPortDef.eDir = OMX_DirOutput; sPortDef.eDomain = OMX_PortDomainAudio; sPortDef.format.audio.eEncoding = OMX_AUDIO_CodingPCM; sPortDef.bPopulated = OMX_FALSE; sPortDef.bEnabled = OMX_TRUE; sPortDef.nBufferCountMin = 1; sPortDef.nBufferCountActual = 3; sPortDef.nBufferSize = 1024; ret = ports[OUTPUT_PORT]->SetPortDefinition(&sPortDef); if(ret != OMX_ErrorNone) { LOG_ERROR("Set port definition for in port failed.\n"); return ret; } sPortDef.nPortIndex = CLK_PORT; sPortDef.eDir = OMX_DirInput; sPortDef.eDomain = OMX_PortDomainOther; sPortDef.format.other.eFormat = OMX_OTHER_FormatTime; sPortDef.bPopulated = OMX_FALSE; sPortDef.bEnabled = OMX_FALSE; sPortDef.nBufferCountMin = 1; sPortDef.nBufferCountActual = 1; sPortDef.nBufferSize = sizeof(OMX_TIME_MEDIATIMETYPE); ret = ports[CLK_PORT]->SetPortDefinition(&sPortDef); if(ret != OMX_ErrorNone) { LOG_ERROR("Set port definition for clk port failed.\n"); return ret; } OMX_INIT_STRUCT(&PcmMode, OMX_AUDIO_PARAM_PCMMODETYPE); PcmMode.nPortIndex = OUTPUT_PORT; PcmMode.nChannels = 2; PcmMode.nSamplingRate = 44100; PcmMode.nBitPerSample = 16; PcmMode.bInterleaved = OMX_TRUE; PcmMode.eNumData = OMX_NumericalDataSigned; PcmMode.ePCMMode = OMX_AUDIO_PCMModeLinear; PcmMode.eEndian = OMX_EndianLittle; PcmMode.eChannelMapping[0] = OMX_AUDIO_ChannelNone; OMX_INIT_STRUCT(&Volume, OMX_AUDIO_CONFIG_VOLUMETYPE); Volume.bLinear = OMX_TRUE; Volume.sVolume.nValue = 100; Volume.sVolume.nMin = 0; Volume.sVolume.nMax = 100; OMX_INIT_STRUCT(&EOS, OMX_CONFIG_BOOLEANTYPE); EOS.bEnabled = OMX_FALSE; OMX_INIT_STRUCT(&Mute, OMX_AUDIO_CONFIG_MUTETYPE); Mute.bMute = OMX_FALSE; OMX_INIT_STRUCT(&StartTime, OMX_TIME_CONFIG_TIMESTAMPTYPE); StartTime.nTimestamp = 0; bFirstFrame = OMX_TRUE; pOutBufferHdr = NULL; TotalRecordedLen = 0; nDeviceReadLen = 0; nDeviceReadOffset = 0; bAddZeros = OMX_FALSE; pDeviceReadBuffer = NULL; nMaxDuration = MAX_VALUE_S64; nAudioSource = 0; bSendEOS = OMX_FALSE; ret = InitSourceComponent(); if(ret != OMX_ErrorNone) return ret; return ret; }