This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

VPFE Previewer - output (6437 platform)

Hi All,

    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?
 

 

 

  • Hi!

    I have a configuration like this here:

    prevParams.outPixelOrderParam = PSP_PREVIEWER_PIXELORDER_YCBYCR

    And the blending (I dont know why exactly... but....)

    prevParams.rgbBlendingParam.blending[0][0] = 0x100;
    prevParams.rgbBlendingParam.blending[0][1] = 0x00;
    prevParams.rgbBlendingParam.blending[0][2] = 0x00;
    prevParams.rgbBlendingParam.blending[1][0] = 0x00;
    prevParams.rgbBlendingParam.blending[1][1] = 0x100;
    prevParams.rgbBlendingParam.blending[1][2] = 0x00;
    prevParams.rgbBlendingParam.blending[2][0] = 0x00;
    prevParams.rgbBlendingParam.blending[2][1] = 0x00;
    prevParams.rgbBlendingParam.blending[2][2] = 0x100;

     

    Marcio


  • Hi Marcio,

    Many thanks for your great and quick help.