Exemple #1
0
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;
}