⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prev.c

📁 dm270 source code
💻 C
字号:
/**
    \file prev.c
    \brief Preview Engine User APIs
*/

#include <system/prev270.h>
#include <user/ccdm.h>
#include <user/tvp_5150.h>
#include <user/prev.h>

static PREV_ConfigData	prevConfig_draft = {
	FALSE,		// ccdcInputWidth8bits;
	FALSE,		// alawEnable;
	FALSE,		// oneShotEnable;
	TRUE,		// resizeOnlyEnable;
	FALSE,		// sdramInputEnable;
	FALSE,		// burstAlignModeEnable;
	FALSE,		// writeEnableValid;
	NULL,		// *readAddress;
	NULL,		// *writeAddress;
	3,			// hstart;
	16,			// vstart;
	720,		// inputPixelsH;
	240,		// inputLinesV;
	640,		// outputPixelsH;
	240			// outputLinesV;
};

static PREV_ModeData prevMode_draft = {
	0,			// hinterpollationMode;				0:5-tap filter, 1:2-tap filter
	0,			// vinterpollationMode;				0:5-tap filter, 1:2-tap filter
	FALSE,		// horizontalNoiseFilterEnable;
	0,			// horizontalNoiseFilterLevel;		0:very weak, 1:weak, 2:strong, 3:very strong.
	FALSE,		// verticalNoiseFilterEnable;
	FALSE,		// smoothEnable;
	0,			// smoothLevel;						0: Less, 1: More
	0,			// ccdcMode;						0: RGB, 1: Complementary color cmode.
	0,			// greenBlendMode;					Valid when ccdcMode = 1, Green blen mode, 0..4, see register PVSET2 for details.
	PREV_COL_Gb,// colorPatternEvenEven;	// Color Pattern
	PREV_COL_Gb, // colorPatternOddEven;		//	R   Gr
	PREV_COL_Gb, // colorPatternEvenOdd;		//	Gb  B
	PREV_COL_Gb // colorPatternOddOdd;		//
};

static PREV_WbData	prevWb_draft = {
	0,		// dgain;
	0,		// gainGr;
	0,		// gainR;
	0,		// gainGb;
	0,		// gainB;
	0
};

static PREV_Rgb2RgbData	rgb2rgb_draft = {
	{
		0, 0, 0,		//	RR GR BR
		0, 0, 0,		//  RG GG BG
		0, 0, 0		//  RB GB BB
	},
	{
		0,						//  offset R
		0,						//  offset G
		0						//  offset B
	}
};

static PREV_Rgb2YuvData	rgb2yuv_draft = {
	{
		0, 0, 0,		//	RY GY BY
		0, 0, 0,		//  RU GU BU
		0, 0, 0		//  RV GV BV
	},
	{
		0,						//  offset Y
		0,						//  offset U
		0						//  offset V
	}
};

PREV_UserConfig tvp5150_prevUserConfig_draft = {
	&prevConfig_draft,		// *prevConfig;
	&prevMode_draft,		// *prevMode;
	&prevWb_draft,			// *whiteBalance;
	&rgb2rgb_draft,			// *rgb2rgb;
	&rgb2yuv_draft,			// *rgb2yuv;
	0,						// offsetR;      Black Compensation offset for R
	0, 						// offsetG;		 Black Compensation offset for G
	0,						// offsetB;      Black Compensation offset for B
	0,						// gammaTable;   0: Table 0, 1:Table 1
	FALSE,					// enableGammaR;
	FALSE,					// enableGammaG;
	FALSE,					// enableGammaB;
	0,					// contrastGainY;
	0,						// contrastOffsetY;
	FALSE,					// colorSupEnable;
	0,					// colorSupThreshold;
	0,					// colorSupGain;
	0x00,					// minY;
	0xFF,					// maxY;
	0x00,					// minC;
	0xFF					// maxC;
};

static PREV_ConfigData	prevConfig_fine = {
	TRUE,		// ccdcInputWidth8bits;
	FALSE,		// alawEnable;
	FALSE,		// oneShotEnable;
	FALSE,		// resizeOnlyEnable;
	FALSE,		// sdramInputEnable;
	FALSE,		// burstAlignModeEnable;
	TRUE,		// writeEnableValid;
	NULL,		// *readAddress;
	NULL,		// *writeAddress;
	0,			// hstart;
	0,			// vstart;
	0,		// inputPixelsH;
	0,		// inputLinesV;
	0,		// outputPixelsH;
	0			// outputLinesV;
};

static PREV_ModeData prevMode_fine = {
	0,			// hinterpollationMode;				0:5-tap filter, 1:2-tap filter
	0,			// vinterpollationMode;				0:5-tap filter, 1:2-tap filter
	FALSE,		// horizontalNoiseFilterEnable;
	0,			// horizontalNoiseFilterLevel;		0:very weak, 1:weak, 2:strong, 3:very strong.
	FALSE,		// verticalNoiseFilterEnable;
	FALSE,		// smoothEnable;
	0,			// smoothLevel;						0: Less, 1: More
	0,			// ccdcMode;						0: RGB, 1: Complementary color cmode.
	0,			// greenBlendMode;					Valid when ccdcMode = 1, Green blen mode, 0..4, see register PVSET2 for details.
	PREV_COL_Gb,// colorPatternEvenEven;	// Color Pattern
	PREV_COL_Gb, // colorPatternOddEven;		//	R   Gr
	PREV_COL_Gb, // colorPatternEvenOdd;		//	Gb  B
	PREV_COL_Gb // colorPatternOddOdd;		//
};

static PREV_WbData	prevWb_fine = {
	0,		// dgain;
	0,		// gainGr;
	0,		// gainR;
	0,		// gainGb;
	0,		// gainB;
	0
};

PREV_UserConfig tvp5150_prevUserConfig_fine  = {
	&prevConfig_fine,		// *prevConfig;
	&prevMode_fine,			// *prevMode;
	&prevWb_fine,			// *whiteBalance;
	&rgb2rgb_draft,			// *rgb2rgb;
	&rgb2yuv_draft,			// *rgb2yuv;
	0,						// offsetR;      Black Compensation offset for R
	0, 						// offsetG;		 Black Compensation offset for G
	0,						// offsetB;      Black Compensation offset for B
	0,						// gammaTable;   0: Table 0, 1:Table 1
	FALSE,					// enableGammaR;
	FALSE,					// enableGammaG;
	FALSE,					// enableGammaB;
	0,					// contrastGainY;
	0,						// contrastOffsetY;
	FALSE,					// colorSupEnable;
	0,					// colorSupThreshold;
	0,					// colorSupGain;
	0x00,					// minY;
	0xFF,					// maxY;
	0x00,					// minC;
	0xFF					// maxC;
};


/**
	\brief	Initialize Preview Engine with CCD imager module specific parameters

	\param 	prevUserConfig	Preview Engine parameters

	\return if success, \c E_PASS, else error code
*/
STATUS PREVInit( PREV_UserConfig *prevUserConfig) {
	STATUS status;

	status = PREV_setConfig( prevUserConfig->prevConfig );

	if(status!=E_PASS)
		return status;

	status = PREV_setMode( prevUserConfig->prevMode );

	if(status!=E_PASS)
		return status;

	status = PREV_setWhiteBalance( prevUserConfig->whiteBalance );

	if(status!=E_PASS)
		return status;

	status = PREV_setRGB2RGB( prevUserConfig->rgb2rgb );

	if(status!=E_PASS)
		return status;

	status = PREV_setRGB2YUV( prevUserConfig->rgb2yuv );

	if(status!=E_PASS)
		return status;

	status = PREV_setBlackCompensation( prevUserConfig->offsetR, prevUserConfig->offsetG, prevUserConfig->offsetB );

	if(status!=E_PASS)
		return status;

	status = PREV_setGamma( prevUserConfig->gammaTable, prevUserConfig->enableGammaR, prevUserConfig->enableGammaG, prevUserConfig->enableGammaB);

	if(status!=E_PASS)
		return status;

	status = PREV_setContrast( prevUserConfig->contrastGainY, prevUserConfig->contrastOffsetY);

	if(status!=E_PASS)
		return status;

	status = PREV_setColorSuppression( prevUserConfig->colorSupEnable, prevUserConfig->colorSupThreshold, prevUserConfig->colorSupGain );

	if(status!=E_PASS)
		return status;

	status = PREV_setYCbCrLevel( prevUserConfig->minY, prevUserConfig->maxY, prevUserConfig->minC, prevUserConfig->maxC);

	if(status!=E_PASS)
		return status;

	return status;
}

/**
	\brief	Setup Preview Engine with specific CCD imager module parameters for a specific mode

	\param ccdmID		CCD module ID
	\param mode			0:CCDM_DRAFT_MODE, 1: CCDM_FINE_MODE

	\return if success, \c E_PASS, else error code
*/
STATUS PREVSetMode( CCDM_ID ccdmID, Uint16 mode) {
	STATUS status=E_PASS;

	switch(ccdmID) {
		case TVP_5150:
			switch(mode) {
				case CCDM_DRAFT_MODE:
					PREVInit(&tvp5150_prevUserConfig_draft);
					break;
				case CCDM_FINE_MODE:
					PREVInit(&tvp5150_prevUserConfig_fine);
					break;
				default:
					status=E_INVALID_INPUT;
					break;
			}
			break;
		default:
			status=E_INVALID_INPUT;
			break;
	}
	return status;

}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -