📄 post_test.c
字号:
if(uScaleOffsetY >= uPreVOffset)
uScaleOffsetY -= uPreVOffset;
}
else
{
if(uScaleOffsetY >= uVOffset)
uScaleOffsetY -= uVOffset - (uScaleOffsetY%(uVOffset));
uPreVOffset = uVOffset;
}
break;
//Horizontal Scale Up
case 'd' :
case 'D' : POST_CalcurateScaleOffset( uMidScaledHSz-uScaleOffsetX-uPreHOffset, uMidScaledVSz-uScaleOffsetY-uPreVOffset, uDstScaledHSz, uDstScaledVSz, &oPost,
&uHOffset, &uVOffset, &uHRatio, &uVRatio, eSrcDataFmt);
if(uPreHOffset == uHOffset)
{
if(uScaleOffsetX < (uMidImgHSz-uPreHOffset))
uScaleOffsetX += uPreHOffset;
}
else
{
if(uScaleOffsetX < (uMidImgHSz-uHOffset))
uScaleOffsetX += uHOffset - (uScaleOffsetX%(uHOffset));
uPreHOffset = uHOffset;
}
break;
//Horizontal Scale Down
case 'a' :
case 'A' : POST_CalcurateScaleOffset( uMidScaledHSz-uScaleOffsetX+uPreHOffset, uMidScaledVSz-uScaleOffsetY+uPreVOffset, uDstScaledHSz, uDstScaledVSz, &oPost,
&uHOffset, &uVOffset, &uHRatio, &uVRatio, eSrcDataFmt);
if(uPreHOffset == uHOffset)
{
if(uScaleOffsetX >= uPreHOffset)
uScaleOffsetX -= uPreHOffset;
}
else
{
if(uScaleOffsetX >= uHOffset)
uScaleOffsetX -= uHOffset - (uScaleOffsetX%(uHOffset));
uPreHOffset = uHOffset;
}
default : break;
}
UART_Printf("(%d*%d) -> (%d*%d)\n",uMidScaledHSz-uScaleOffsetX, uMidScaledVSz-uScaleOffsetY, uDstScaledHSz, uDstScaledVSz);
POST_InitIp1( uMidImgHSz, uMidImgVSz, uMidStartX, uMidStartY, uMidScaledHSz-uScaleOffsetX, uMidScaledVSz-uScaleOffsetY, uGlibStAddr1, eSrcDataFmt,
uLcdHSz, uLcdVSz, uDstStartX, uDstStartY, uDstScaledHSz, uDstScaledVSz, uLcdStAddr, eSrcDataFmt,
1, false, ePostRunMode, POST_DMA, POST_DMA, &oPost);
POST_StartProcessing1(0, 0, &oPost);
while (!POST_IsProcessingDone(&oPost));
}
}
const testFuncMenu r2r_menu[] =
{
POSTT_SimpleDmaToDma_R2R, "Simple DMA CSC Test From RGB To RGB",
POSTT_ComplexIDmaToDma_R2R, "Complex DMA CSC Test From RGB To RGB",
POSTT_SimpleFreeRunDmaToDma_R2R_Polling, "Simple FreeRun And CSC Test From RGB To RGB By Using Polling",
POSTT_SimpleFreeRunDmaToDma_R2R_Int, "Simple FreeRun And CSC Test From RGB To RGB By Using Interrupt",
POSTT_ComplexFreeRunDmaToDma_R2R_Polling, "Complex FreeRun And CSC Test From RGB To RGB By Using Polling",
POSTT_ComplexFreeRunDmaToDma_R2R_Int, "Complex FreeRun And CSC Test From RGB To RGB By Using Interrupt",
POSTT_ScaleUpDown_RGB, "Scale Up/Down RGB",
0, 0
};
static void POSTT_ConvertRGBToRGB(void)
{
u32 i;
s32 uSel;
UART_Printf("[POSTT_ConvertRGBToRGB]\n");
while(1)
{
UART_Printf("\n");
for (i=0; (int)(r2r_menu[i].desc)!=0; i++)
{
UART_Printf("%2d: %s\n", i, r2r_menu[i].desc);
}
UART_Printf("\n");
UART_Printf("Select The Function To Test: ");
uSel = UART_GetIntNum();
UART_Printf("\n");
if (uSel == -1)
break;
if (uSel>=0 && uSel<(sizeof(r2r_menu)/8-1))
(r2r_menu[uSel].func)();
}
}
////////////////////////////////////////////////////////////////////////////
////////////////// RGB to YUV to RGB ///////////////////
////////////////////////////////////////////////////////////////////////////
static void POSTT_SetCscTypeDmaToDma_R2Y2R(void)
{
int nSelDmaCscType_R2Y2R;
while(1)
{
UART_Printf("\n");
UART_Printf(" [1] RGB16 -> YCbYCr422_Intlv And YCbYCr422_Intlv -> RGB16\n");
UART_Printf(" [2] RGB16 -> YCrYCb422_Intlv And YCrYCb422_Intlv -> RGB16\n");
UART_Printf(" [3] RGB16 -> CbYCrY422_Intlv And CbYCrY422_Intlv -> RGB16\n");
UART_Printf(" [4] RGB16 -> CrYCbY422_Intlv And CrYCbY422_Intlv -> RGB16\n");
UART_Printf(" [5] RGB16 -> YC420 And YC420 -> RGB16\n");
UART_Printf("\n");
UART_Printf(" [6] RGB24 -> YCbYCr422_Intlv And YCbYCr422_Intlv -> RGB24\n");
UART_Printf(" [7] RGB24 -> YCrYCb422_Intlv And YCrYCb422_Intlv -> RGB24\n");
UART_Printf(" [8] RGB24 -> CbYCrY422_Intlv And CbYCrY422_Intlv -> RGB24\n");
UART_Printf(" [9] RGB24 -> CrYCbY422_Intlv And CrYCbY422_Intlv -> RGB24\n");
UART_Printf("[10] RGB24 -> YC420 And YC420 -> RGB24\n");
UART_Printf("\n");
UART_Printf("[11] RGB16 -> YCbYCr422_Intlv And YCbYCr422_Intlv -> RGB24\n");
UART_Printf("[12] RGB16 -> YCrYCb422_Intlv And YCrYCb422_Intlv -> RGB24\n");
UART_Printf("[13] RGB16 -> CbYCrY422_Intlv And CbYCrY422_Intlv -> RGB24\n");
UART_Printf("[14] RGB16 -> CrYCbY422_Intlv And CrYCbY422_Intlv -> RGB24\n");
UART_Printf("[15] RGB16 -> YC420 And YC420 -> RGB24\n");
UART_Printf("\n");
UART_Printf("[16] RGB24 -> YCbYCr422_Intlv And YCbYCr422_Intlv -> RGB16\n");
UART_Printf("[17] RGB24 -> YCrYCb422_Intlv And YCrYCb422_Intlv -> RGB16\n");
UART_Printf("[18] RGB24 -> CbYCrY422_Intlv And CbYCrY422_Intlv -> RGB16\n");
UART_Printf("[19] RGB24 -> CrYCbY422_Intlv And CrYCbY422_Intlv -> RGB16\n");
UART_Printf("[20] RGB24 -> YC420 And YC420 -> RGB16\n");
UART_Printf("\n");
UART_Printf(">> Select The Color Space Conversion Type: ");
nSelDmaCscType_R2Y2R = UART_GetIntNum();
// if( nSelDmaCscType_R2Y2R == 1 || nSelDmaCscType_R2Y2R == 2 || nSelDmaCscType_R2Y2R == 3 || nSelDmaCscType_R2Y2R == 4 ||
// nSelDmaCscType_R2Y2R == 5 || nSelDmaCscType_R2Y2R == 6 || nSelDmaCscType_R2Y2R == 7 || nSelDmaCscType_R2Y2R == 8 ||
// nSelDmaCscType_R2Y2R == 9 || nSelDmaCscType_R2Y2R == 10 || nSelDmaCscType_R2Y2R == 11 || nSelDmaCscType_R2Y2R == 12 ||
// nSelDmaCscType_R2Y2R == 13 || nSelDmaCscType_R2Y2R == 14 || nSelDmaCscType_R2Y2R == 15 || nSelDmaCscType_R2Y2R == 16 ||
// nSelDmaCscType_R2Y2R == 17 || nSelDmaCscType_R2Y2R == 18 || nSelDmaCscType_R2Y2R == 19 || nSelDmaCscType_R2Y2R == 20)
if( (nSelDmaCscType_R2Y2R >= 1) && (nSelDmaCscType_R2Y2R <=20) )
{
eSrcDataFmt =
(nSelDmaCscType_R2Y2R == 1 || nSelDmaCscType_R2Y2R == 2 || nSelDmaCscType_R2Y2R == 3 ||
nSelDmaCscType_R2Y2R == 4 || nSelDmaCscType_R2Y2R == 5 || nSelDmaCscType_R2Y2R == 11 ||
nSelDmaCscType_R2Y2R == 12 || nSelDmaCscType_R2Y2R == 13 || nSelDmaCscType_R2Y2R == 14 ||
nSelDmaCscType_R2Y2R == 15) ? RGB16 : RGB24;
eMidDataFmt =
(nSelDmaCscType_R2Y2R == 1 || nSelDmaCscType_R2Y2R == 6 ||
nSelDmaCscType_R2Y2R == 11 || nSelDmaCscType_R2Y2R == 16 ) ? YCBYCR :
(nSelDmaCscType_R2Y2R == 2 || nSelDmaCscType_R2Y2R == 7 ||
nSelDmaCscType_R2Y2R == 12 || nSelDmaCscType_R2Y2R == 17 ) ? YCRYCB :
(nSelDmaCscType_R2Y2R == 3 || nSelDmaCscType_R2Y2R == 8 ||
nSelDmaCscType_R2Y2R == 13 || nSelDmaCscType_R2Y2R == 18 ) ? CBYCRY :
(nSelDmaCscType_R2Y2R == 4 || nSelDmaCscType_R2Y2R == 9 ||
nSelDmaCscType_R2Y2R == 14 || nSelDmaCscType_R2Y2R == 19 ) ? CRYCBY : YC420;
eDstDataFmt =
(nSelDmaCscType_R2Y2R == 1 || nSelDmaCscType_R2Y2R == 2 || nSelDmaCscType_R2Y2R == 3 ||
nSelDmaCscType_R2Y2R == 4 || nSelDmaCscType_R2Y2R == 5 || nSelDmaCscType_R2Y2R == 16 ||
nSelDmaCscType_R2Y2R == 17 || nSelDmaCscType_R2Y2R == 18 || nSelDmaCscType_R2Y2R == 19 ||
nSelDmaCscType_R2Y2R == 20) ? RGB16 : RGB24;
break;
}
else
UART_Printf("Invalid Input! Retry It!!\n");
}
if (eSrcDataFmt == RGB16 && eMidDataFmt == YCBYCR && eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 20, uSrcStartY = 20;
uSrcCroppedHSz = 160, uSrcCroppedVSz = 240;
uMidImgHSz = 240, uMidImgVSz = 320, uMidStartX = 60, uMidStartY = 40;
uMidScaledHSz = 120, uMidScaledVSz = 120;
uDstStartX = 120, uDstStartY = 100, uDstScaledHSz = 104, uDstScaledVSz = 140;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == YCRYCB && eDstDataFmt == RGB16)
{
uImgHSz = 120, uImgVSz = 160, uSrcStartX = 0, uSrcStartY = 40;
uSrcCroppedHSz = 120, uSrcCroppedVSz = 100;
uMidImgHSz = 240, uMidImgVSz = 320, uMidStartX = 0, uMidStartY = 40;
uMidScaledHSz = 120, uMidScaledVSz = 120;
uDstStartX = 0, uDstStartY = 50, uDstScaledHSz = 120, uDstScaledVSz = 110;//160;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == CBYCRY && eDstDataFmt == RGB16)
{
uImgHSz = 360, uImgVSz = 480, uSrcStartX = 80, uSrcStartY = 120;
uSrcCroppedHSz = 104, uSrcCroppedVSz = 100;
uMidImgHSz = 240, uMidImgVSz = 320, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 160, uMidScaledVSz = 120;
uDstStartX = 120, uDstStartY = 80, uDstScaledHSz = 80, uDstScaledVSz = 160;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == CRYCBY && eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 0, uSrcStartY = 20;
uSrcCroppedHSz = 160, uSrcCroppedVSz = 200;
uMidImgHSz = 120, uMidImgVSz = 160 ,uMidStartX = 10, uMidStartY = 30;
uMidScaledHSz = 80, uMidScaledVSz = 100;
uDstStartX = 50, uDstStartY = 60, uDstScaledHSz = 176 ,uDstScaledVSz = 180;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == YC420 && eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 20, uSrcStartY = 20;
uSrcCroppedHSz = 160, uSrcCroppedVSz = 200;
uMidImgHSz = 120, uMidImgVSz = 160, uMidStartX = 0, uMidStartY = 30;
uMidScaledHSz = 48, uMidScaledVSz = 100;
uDstStartX = 50, uDstStartY = 40, uDstScaledHSz = 160, uDstScaledVSz = 200;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == YCBYCR && eDstDataFmt == RGB24)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 20, uSrcStartY = 10;
uSrcCroppedHSz = 128, uSrcCroppedVSz = 128;
uMidImgHSz = 360, uMidImgVSz = 480, uMidStartX = 60, uMidStartY = 40;
uMidScaledHSz = 240, uMidScaledVSz = 240;
uDstStartX = 20, uDstStartY = 80, uDstScaledHSz = 160, uDstScaledVSz = 160;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == YCRYCB&& eDstDataFmt == RGB24)
{
uImgHSz = 120, uImgVSz = 160, uSrcStartX = 20, uSrcStartY = 10;
uSrcCroppedHSz = 80, uSrcCroppedVSz = 120;
uMidImgHSz = 240, uMidImgVSz = 320, uMidStartX = 120, uMidStartY = 120;
uMidScaledHSz = 80, uMidScaledVSz = 160;
uDstStartX = 20, uDstStartY = 40, uDstScaledHSz = 160, uDstScaledVSz = 200;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == CBYCRY&& eDstDataFmt == RGB24)
{
uImgHSz = 360, uImgVSz = 480, uSrcStartX = 0, uSrcStartY = 0;
uSrcCroppedHSz = 360, uSrcCroppedVSz = 480;
uMidImgHSz = 360, uMidImgVSz = 480, uMidStartX = 0, uMidStartY = 0;
uMidScaledHSz = 360, uMidScaledVSz = 480;
uDstStartX = 0, uDstStartY = 0, uDstScaledHSz = 320, uDstScaledVSz = 240;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == CRYCBY&& eDstDataFmt == RGB24)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 80, uSrcStartY = 80;
uSrcCroppedHSz = 104, uSrcCroppedVSz = 120;
uMidImgHSz = 360, uMidImgVSz = 480, uMidStartX = 180, uMidStartY = 180;
uMidScaledHSz = 120, uMidScaledVSz = 240;
uDstStartX = 20, uDstStartY = 80, uDstScaledHSz = 80, uDstScaledVSz = 160;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == YC420 && eDstDataFmt == RGB24)
{
uImgHSz = 120, uImgVSz = 160, uSrcStartX = 20, uSrcStartY = 80;
uSrcCroppedHSz = 72, uSrcCroppedVSz = 72;
uMidImgHSz = 360, uMidImgVSz = 480, uMidStartX = 24, uMidStartY = 20;
uMidScaledHSz = 320, uMidScaledVSz = 400;
uDstStartX = 80, uDstStartY = 100, uDstScaledHSz = 120, uDstScaledVSz = 120;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == YCBYCR && eDstDataFmt == RGB24)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 160, uSrcStartY = 200;
uSrcCroppedHSz = 56, uSrcCroppedVSz = 120;
uMidImgHSz = 120, uMidImgVSz = 160, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 80, uMidScaledVSz = 80;
uDstStartX = 20, uDstStartY = 20, uDstScaledHSz = 200, uDstScaledVSz = 220;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == YCRYCB && eDstDataFmt == RGB24)
{
uImgHSz = 120, uImgVSz = 160, uSrcStartX = 20, uSrcStartY = 20;
uSrcCroppedHSz = 88, uSrcCroppedVSz = 120;
uMidImgHSz = 120, uMidImgVSz = 480, uMidStartX = 0, uMidStartY = 40;
uMidScaledHSz = 88, uMidScaledVSz = 280;
uDstStartX = 10, uDstStartY = 10, uDstScaledHSz = 200, uDstScaledVSz = 230;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == CBYCRY && eDstDataFmt == RGB24)
{
uImgHSz = 360, uImgVSz = 480, uSrcStartX = 180, uSrcStartY = 240;
uSrcCroppedHSz = 120, uSrcCroppedVSz = 240;
uMidImgHSz = 240, uMidImgVSz = 160, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 144, uMidScaledVSz = 120;
uDstStartX = 10, uDstStartY = 10, uDstScaledHSz = 104, uDstScaledVSz = 104;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == CRYCBY && eDstDataFmt == RGB24)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 40, uSrcStartY = 50;
uSrcCroppedHSz = 184, uSrcCroppedVSz = 120;
uMidImgHSz = 120, uMidImgVSz = 480, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 88, uMidScaledVSz = 400;
uDstStartX = 10, uDstStartY = 10, uDstScaledHSz = 160, uDstScaledVSz = 230;
}
else if (eSrcDataFmt == RGB16 && eMidDataFmt == YC420 && eDstDataFmt == RGB24)
{
uImgHSz = 120, uImgVSz = 160, uSrcStartX = 40, uSrcStartY = 50;
uSrcCroppedHSz = 40, uSrcCroppedVSz = 88;
uMidImgHSz = 360, uMidImgVSz = 480, uMidStartX = 56, uMidStartY = 10;
uMidScaledHSz = 184, uMidScaledVSz = 240;
uDstStartX = 10, uDstStartY = 10, uDstScaledHSz = 160, uDstScaledVSz = 160;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == YCBYCR && eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 60, uSrcStartY = 200;
uSrcCroppedHSz = 112, uSrcCroppedVSz = 96;
uMidImgHSz = 120, uMidImgVSz = 160, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 88, uMidScaledVSz = 96;
uDstStartX = 60, uDstStartY = 80, uDstScaledHSz = 136, uDstScaledVSz = 160;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == YCRYCB&& eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 180, uSrcStartY = 60;
uSrcCroppedHSz = 48, uSrcCroppedVSz = 240;
uMidImgHSz = 240, uMidImgVSz = 480, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 184, uMidScaledVSz = 240;
uDstStartX = 40, uDstStartY = 40, uDstScaledHSz = 184, uDstScaledVSz = 80;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == CBYCRY && eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 180, uSrcStartY = 60;
uSrcCroppedHSz = 48, uSrcCroppedVSz = 240;
uMidImgHSz = 240, uMidImgVSz = 480, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 184, uMidScaledVSz = 240;
uDstStartX = 40, uDstStartY = 40, uDstScaledHSz = 184, uDstScaledVSz = 80;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == CRYCBY && eDstDataFmt == RGB16)
{
uImgHSz = 360, uImgVSz = 480, uSrcStartX = 40, uSrcStartY = 50;
uSrcCroppedHSz = 184, uSrcCroppedVSz = 120;
uMidImgHSz = 120, uMidImgVSz = 480, uMidStartX = 20, uMidStartY = 40;
uMidScaledHSz = 80, uMidScaledVSz = 240;
uDstStartX = 10, uDstStartY = 10, uDstScaledHSz = 160, uDstScaledVSz = 230;
}
else if (eSrcDataFmt == RGB24 && eMidDataFmt == YC420 && eDstDataFmt == RGB16)
{
uImgHSz = 240, uImgVSz = 320, uSrcStartX = 120, uSrcStartY = 120;
uSrcCroppedHSz = 120, uSrcCroppedVSz = 120;
uMidImgHSz = 120, uMidImgVSz = 160, uMidStartX = 24, uMidStartY = 20;
uMidScaledHSz = 96, uMidScaledVSz = 96;
uDstStartX = 10, uDstStartY = 10, uDstScaledHSz = 160, uDstScaledVSz = 160;
}
else
{
UART_Printf("Error! Unsupported Data Format!\n");
return;
}
UART_Printf("\n");
if(uSimpleTest == 0)
{
UART_Printf("========= Complex_Test Image Size =========\n");
UART_Printf("SrcImgHSz = %d, SrcImgVSz = %d\n",uImgHSz,uImgVSz);
UART_Printf("SrcStartX = %d, SrcStartY = %d\n",uSrcStartX,uSrcStartY);
UART_Printf("SrcCroppedHSz = %d, SrcCroppedVSz = %d\n",uSrcCroppedHSz,uSrcCroppedVSz);
UART_Printf("\n");
UART_Printf("MidImgHSz = %d, MidImgVSz = %d\n",uMidImgHSz,uMidImgVSz);
UART_Printf("MidStartX = %d, MidStartY = %d\n",uMidStartX,uMidStartY);
UART_Printf("MidScaledHSz = %d, MidScaledVSz = %d\n",uMidScaledHSz,uMidScaledVSz);
UART_Printf("\n");
UART_Printf("DstStartX = %d, DstStartY = %d\n",uDstStartX,uDstStartY);
UART_Printf("DstScaledHSz = %d, DstScaledVSz = %d\n",uDstScaledHSz,uDstScaledVSz);
UART_Printf("=================================================\n");
UART_Printf("\n");
}
}
// TestXXX_R2Y2R does two steps
// Step 1) Glib Addr(RGB Data Format) -> Post(CSC) -> Post Addr (YUV Data Format) // To verify CSC from RGB to YUV
// Step 2) Post Addr(YUV Data Format) -> Post(CSC) -> LCD Addr (RGB Data Format) // To verify CSC from YUV to RGB
static void POSTT_SimpleDmaToDma_R2Y2R(void)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -