I have a 6437 based customized board capturing raw image from CCD imaging sensor. I am trying to convert the raw bayer image into YUV4:2:2 by feeding it to previewer engine .
More info on the previewer configuration I use:
1)The imaging sensor outputs the raw image GR format. The RGB pixels would look like:
R Gr R Gr ....
Gb B Gb B....
2)The PREVIWER parameters as follow:
/* down sample rate */
prevParams.downSampleRate = PSP_PREVIEWER_DOWN_SAMPLE_RATE1;
/* Set size and pitch parameters */
/* start horizontal pixel */
prevParams.sizeParam.sph = 0u;
/* end horizontal pixel */
prevParams.sizeParam.eph = PREV_IMAGE_WIDTH - 1;
/* start vertical pixel */
prevParams.sizeParam.slv = 0u;
/* end vertical pixel */
prevParams.sizeParam.elv = PREV_IMAGE_HEIGHT - 1;
/* pixel size */
prevParams.sizeParam.pixelSize = PSP_PREVIEWER_INWIDTH_10BIT;
/* offset distance between two raws in input image - should be 32 bytes
* aligned */
prevParams.sizeParam.inPitch = PREV_IMAGE_WIDTH * 2;
/* offset distance between two raws in output image - should be 32 bytes
* aligned */
prevParams.sizeParam.outPitch = (PREV_IMAGE_WIDTH * 2u);
/* Set white balancing parameters */
prevParams.whiteBalanceParam.wbDgain = 0x100;
prevParams.whiteBalanceParam.wbGain[0] = 0x40;
prevParams.whiteBalanceParam.wbGain[1] = 0x40;
prevParams.whiteBalanceParam.wbGain[2] = 0x40;
prevParams.whiteBalanceParam.wbGain[3] = 0x40;
prevParams.whiteBalanceParam.position[0][0] = 0;
prevParams.whiteBalanceParam.position[0][1] = 1;
prevParams.whiteBalanceParam.position[0][2] = 0;
prevParams.whiteBalanceParam.position[0][3] = 1;
prevParams.whiteBalanceParam.position[1][0] = 2;
prevParams.whiteBalanceParam.position[1][1] = 3;
prevParams.whiteBalanceParam.position[1][2] = 2;
prevParams.whiteBalanceParam.position[1][3] = 3;
prevParams.whiteBalanceParam.position[2][0] = 0;
prevParams.whiteBalanceParam.position[2][1] = 1;
prevParams.whiteBalanceParam.position[2][2] = 0;
prevParams.whiteBalanceParam.position[2][3] = 1;
prevParams.whiteBalanceParam.position[3][0] = 2;
prevParams.whiteBalanceParam.position[3][1] = 3;
prevParams.whiteBalanceParam.position[3][2] = 2;
prevParams.whiteBalanceParam.position[3][3] = 3;
/* Set RGB2RGB blending parameters */
prevParams.rgbBlendingParam.blending[0][0] = 0x1a1;
prevParams.rgbBlendingParam.blending[0][1] = 0xf8a;
prevParams.rgbBlendingParam.blending[0][2] = 0xfd5;
prevParams.rgbBlendingParam.blending[1][0] = 0xfa1;
prevParams.rgbBlendingParam.blending[1][1] = 0x1c4;
prevParams.rgbBlendingParam.blending[1][2] = 0xf9b;
prevParams.rgbBlendingParam.blending[2][0] = 0xfbd;
prevParams.rgbBlendingParam.blending[2][1] = 0xfb1;
prevParams.rgbBlendingParam.blending[2][2] = 0x192;
prevParams.rgbBlendingParam.offset[0] = 0u;
prevParams.rgbBlendingParam.offset[1] = 0u;
prevParams.rgbBlendingParam.offset[2] = 0u;
/* Set RGB2YCBCR parameters */
prevParams.rgb2ycbcrParam.coeff[0][0] = 0x4Cu;
prevParams.rgb2ycbcrParam.coeff[0][1] = 0x96u;
prevParams.rgb2ycbcrParam.coeff[0][2] = 0x1Du;
prevParams.rgb2ycbcrParam.coeff[1][0] = 0x3d4u;
prevParams.rgb2ycbcrParam.coeff[1][1] = 0x3acu;
prevParams.rgb2ycbcrParam.coeff[1][2] = 0x80u;
prevParams.rgb2ycbcrParam.coeff[2][0] = 0x80u;
prevParams.rgb2ycbcrParam.coeff[2][1] = 0x395u;
prevParams.rgb2ycbcrParam.coeff[2][2] = 0x3ebu;
prevParams.rgb2ycbcrParam.yOffset = 0u;
prevParams.rgb2ycbcrParam.cbOffset = 0u;
prevParams.rgb2ycbcrParam.crOffset = 0u;
/* Set Black adjustment parameters */
prevParams.blackAdjParam.blueAdj = 0;
prevParams.blackAdjParam.redAdj = 0;
prevParams.blackAdjParam.greenAdj = 0;
prevParams.brightness = 0x20;
prevParams.contrast = 0x10;
/*CFA*/
prevParams.features = PSP_PREVIEWER_CFA;
for(prevFillParamsIndex1 = 0;
prevFillParamsIndex1 < PSP_PREVIEWER_CFA_COEFF_TABLE_SIZE;
prevFillParamsIndex1++)
{
prevParams.cfaCoeffsParam.coeffs[prevFillParamsIndex1]
= cfa_coef[prevFillParamsIndex1];
}
prevParams.cfaCoeffsParam.vThreshold = 0x28;
prevParams.cfaCoeffsParam.hThreshold = 0x28;
/* output format */
prevParams.outPixelOrderParam = PSP_PREVIEWER_PIXELORDER_CBYCRY;
3)The CCD parameters as follow:
PSP_VPFECcdcConfigParams vpfeCcdcConfigParams =
{
FVID_CCDC_RAW_FORMAT, /* dataFlow */
FVID_FIELD_MODE, /* ffMode */
1000, /* height */ //
1280, /* width */ // NPH
(1280*2), /* pitch */ // HSIZE+OFF
231, /* horzStartPix */ // SPH
3, /* vertStartPix */
NULL, /* appCallback */
{
NULL, /* extVD Fxn */
NULL,
NULL,
},
0, /*segId */
{
PSP_VPFE_BITS16, /* dataSize */
PSP_VPFE_PACK8_16BITS_PIXEL, /* pack8 */
PSP_VPFE_DataPol_Normal, /* dataPol */
PSP_VPFE_SyncPol_Positive, /* VDSyncPol */
PSP_VPFE_SyncPol_Positive, /* HDSyncPol */
PSP_VPFE_SyncDir_Input, /* HDVDMaster */
0, /* HDSyncWidth */
4, /* VDSyncWidth */
1280, /* numPxlPerLine*/ //PPLN
1220, /* numLinPerFld */
PSP_VPFE_ALaw_Disable, /* ALawEnable */
PSP_VPFE_ALaw_bits15_6, /* ALaw_Width */
}
};
4)The result of the previwer as follow:
Obviously, the picture oniy has R and G, no B.
I don't konw why the white turn to red pass the previwer?
When i set the SLV and EPH ,Image color does not change.
Can anyone help me?