📄 prev.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 + -