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.

VPBE's window zoom for DM368

Dear all:

    I am using DM368ipnc, now I want to use 320x240 input and 640x480 output

first, I modify avserverui.c

config->displayConfig.width              = 640;
config->displayConfig.height             = 480;  and

config->captureConfig[i].width                        = 320;    //hirain_video
config->captureConfig[i].height                     = 240;

it will show as follow

now I want to do some algorithm using 320x240 data and then fill to full screen (640x480)

according to VPBE spec, it can use window zoom to make it become x2 for height and width

so I modify davinci_display.c=>davinci_disp_calculate_scale_factor()

layer_info->h_zoom = ZOOM_X2; 
layer_info->v_zoom = ZOOM_X2; 

but the output video is strange such as follow

Can anyone give me some advise?

  • Dear all:

        I try to use resizer to do the same work,

    I use DRV_reszRun() in videoDisplaythr.c->VIDEO_displayCopyRun()

    But it will block in CSL_rszIntWait().

    I find someone have the same problem with me (as follow link)

    http://e2e.ti.com/support/dsp/davinci_digital_media_processors/f/100/t/138933.aspx#500464

    I try to use DDR_in mode (select triple-stream) but it will still block in CSL_rszIntWait();

    anyone have some idea for this issue?

    My resizer setting parameter is as follow

         rszTmp_data = OSA_cmemAllocCached(gVIDEO_ctrl.displayStream.displayInfo.offsetH*gVIDEO_ctrl.displayStream.displayInfo.offsetV*3/2,32);
          
        reszPrm.inType = DRV_DATA_FORMAT_YUV420;
        reszPrm.inVirtAddr = pBufInfo->physAddr + VIDEO_BUF_HEADER_SIZE ;
        reszPrm.inPhysAddr =  pBufInfo->virtAddr + VIDEO_BUF_HEADER_SIZE;
        reszPrm.inStartX =  pBufHeader->startX;
        reszPrm.inStartY =  pBufHeader->startY;
        reszPrm.inWidth  =pBufHeader->width/2;
        reszPrm.inHeight = pBufHeader->height/2;
        reszPrm.inOffsetH= gVIDEO_ctrl.displayStream.displayInfo.offsetH;
        reszPrm.inOffsetV=gVIDEO_ctrl.displayStream.displayInfo.offsetV;
        reszPrm.enableInvAlaw = FALSE;
        reszPrm.enableInvDpcm = FALSE;
        reszPrm.clkDivM = 10;
        reszPrm.clkDivN = gAVSERVER_config.resizerClkdivN;


         reszPrm.pOut[0] = NULL;

          reszPrm.pOut[1] = NULL;
          reszPrm.pOut[0] = &reszOutPrm[0];

          reszOutPrm[0].outType =DRV_DATA_FORMAT_YUV420;
      //    reszOutPrm[0].flipH = gAVSERVER_config.captureConfig[streamId].flipH;
    //      reszOutPrm[0].flipV = gAVSERVER_config.captureConfig[streamId].flipV;
          reszOutPrm[0].flipH = FALSE;
          reszOutPrm[0].flipV = FALSE;
          reszOutPrm[0].outVirtAddr = rszTmp_data;
          reszOutPrm[0].outPhysAddr = DRV_dmaGetPhysAddr((unsigned long)rszTmp_data);
          reszOutPrm[0].outWidth    = gVIDEO_ctrl.displayStream.displayInfo.width;
          reszOutPrm[0].outHeight   =gVIDEO_ctrl.displayStream.displayInfo.height;
          reszOutPrm[0].outOffsetH  =gVIDEO_ctrl.displayStream.displayInfo.offsetH;
          reszOutPrm[0].outOffsetV  =gVIDEO_ctrl.displayStream.displayInfo.offsetV;

            DRV_reszRun(&reszPrm);

        OSA_cmemFree(rszTmp_data);    //h_test

  • It looks like I have the same problem, the same two problems actually, if anyone from TI could help.

    Are there resizing limits in the VPBE we are not aware of?