📄 tvenc_test.c
字号:
else if ( (ucTemp == 'd') && (uValue > 0) )
TVENC_SetContrast(uValue-1);
else if(ucTemp == 'q')
break;
}
break;
case 6 : UART_Printf("\n");
UART_Printf("'u' : Up, 'd' : Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
uValue = TVENC_GetCbGain();
UART_Printf("Current Cb Gain value[0~0xFF] : 0x%02x\n", uValue);
ucTemp = UART_Getc();
if( (ucTemp == 'u') && (uValue < 0xFF) )
TVENC_SetCbGain(uValue+1);
else if ( (ucTemp == 'd') && (uValue > 0) )
TVENC_SetCbGain(uValue-1);
else if(ucTemp == 'q')
break;
}
break;
case 7 : UART_Printf("\n");
UART_Printf("'u' : Up, 'd' : Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
uValue = TVENC_GetCrGain();
UART_Printf("Current Cr Gain value[0~0xFF] : 0x%02x\n", uValue);
ucTemp = UART_Getc();
if( (ucTemp == 'u') && (uValue < 0xFF) )
TVENC_SetCrGain(uValue+1);
else if ( (ucTemp == 'd') && (uValue > 0) )
TVENC_SetCrGain(uValue-1);
else if(ucTemp == 'q')
break;
}
break;
case 8 : UART_Printf("\n");
UART_Printf("'u' : Up, 'd' : Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
uValue = TVENC_GetBright();
UART_Printf("Current Brightness Gain value[0~0xFF] : 0x%02x\n", uValue);
ucTemp = UART_Getc();
if( (ucTemp == 'u') && (uValue < 0xFF) )
TVENC_SetBright(uValue+1);
else if ( (ucTemp == 'd') && (uValue > 0) )
TVENC_SetBright(uValue-1);
else if(ucTemp == 'q')
break;
}
break;
case 9 : UART_Printf("\n");
UART_Printf("'w' : Vertical Up, 's' : Vertical Down\n");
UART_Printf("'e' : Horizontal Up, 'd' : Horizontal Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
u32 uVer, uHor;
TVENC_GetActiveWinCenter(&uVer, &uHor);
UART_Printf("Current Active Window Center : [%d, %d]\n", uVer, uHor);
ucTemp = UART_Getc();
if( (ucTemp == 'w') && (uVer < 0x3F) )
TVENC_SetActiveWinCenter(uVer+1, uHor);
else if ( (ucTemp == 's') && (uVer > 0) )
TVENC_SetActiveWinCenter(uVer-1, uHor);
else if ( (ucTemp == 'e') && (uHor < 0xFF) )
TVENC_SetActiveWinCenter(uVer, uHor+1);
else if ( (ucTemp == 'd') && (uHor > 0) )
TVENC_SetActiveWinCenter(uVer, uHor-1);
else if(ucTemp == 'q')
break;
}
break;
case 10 : TVENC_EnableEnhancerDemoWindow(TRUE);
UART_Printf("\n");
UART_Printf("'w' : Vertical Start Point Up, 's' : Vertical Start Point Down\n");
UART_Printf("'e' : Horizontal Start Point Up, 'd' : Horizontal Start Point Down\n");
UART_Printf("'r' : Vertical Win_Size Up, 'f' : Vertical Win_Size Down\n");
UART_Printf("'t' : Horizontal Win_Size Up, 'g' : Horizontal Win_Size Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
u32 uVerSize, uHorSize, uVStart, uHStart;
TVENC_GetEnhancerDemoWindow(&uVerSize, &uVStart, &uHorSize, &uHStart);
UART_Printf("Current Demo Window Area : [%d, %d] ~ [%d, %d]\n", uHStart, uVStart, uHorSize, uVerSize);
ucTemp = UART_Getc();
if( (ucTemp == 'w') && (uVStart < 0x1FF) )
TVENC_SetEnhancerDemoWindow(uVerSize, uVStart+5, uHorSize, uHStart);
else if ( (ucTemp == 's') && (uVStart > 0) )
TVENC_SetEnhancerDemoWindow(uVerSize, uVStart-5, uHorSize, uHStart);
else if ( (ucTemp == 'e') && (uHStart < 0x7FF) )
TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize, uHStart+5);
else if ( (ucTemp == 'd') && (uHStart > 0) )
TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize, uHStart-5);
else if( (ucTemp == 'r') && (uVerSize < 0x1FF) )
TVENC_SetEnhancerDemoWindow(uVerSize+5, uVStart, uHorSize, uHStart);
else if ( (ucTemp == 'f') && (uVerSize > 0) )
TVENC_SetEnhancerDemoWindow(uVerSize-5, uVStart, uHorSize, uHStart);
else if ( (ucTemp == 't') && (uHorSize < 0x7FF) )
TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize+5, uHStart);
else if ( (ucTemp == 'g') && (uHorSize > 0) )
TVENC_SetEnhancerDemoWindow(uVerSize, uVStart, uHorSize-5, uHStart);
else if(ucTemp == 'q')
break;
}
//TVENC_SetEnhancerDemoWindow(240, 0, 1440, 0);
//TVENC_EnableEnhancerDemoWindow(FALSE);
break;
case 11 : UART_Printf("\n");
UART_Printf("Select the Background Color[0~7]\n");
uSelColor = (u32)UART_GetIntNum();
TVENC_EnableBackground(TRUE);
UART_Printf("\n");
UART_Printf("'w' : Vertical Start Point Up, 's' : Vertical Start Point Down\n");
UART_Printf("'e' : Horizontal Start Point Up, 'd' : Horizontal Start Point Down\n");
UART_Printf("'r' : Vertical Visual_Size Up, 'f' : Vertical Visual_Size Down\n");
UART_Printf("'t' : Horizontal Visual_Size Up, 'g' : Horizontal Visual_Size Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
u32 uOffset, uCurrColor, uVerSize, uHorSize, uVStart, uHStart;
uOffset = 4;
TVENC_GetBackground(&uCurrColor, &uHStart, &uVStart, &uHorSize, &uVerSize);
UART_Printf("Current Background Color : %d\n", uCurrColor);
UART_Printf("Current Visual Window Area : [%d, %d] ~ [%d, %d]\n", uHStart*8, uVStart, uHorSize*8, uVerSize);
ucTemp = UART_Getc();
if( (ucTemp == 'w') && (uVStart < 0xFF) )
TVENC_SetBackground(uSelColor, uHStart, uVStart+uOffset, uHorSize, uVerSize);
else if ( (ucTemp == 's') && (uVStart > 0) )
TVENC_SetBackground(uSelColor, uHStart, uVStart-uOffset, uHorSize, uVerSize);
else if ( (ucTemp == 'e') && (uHStart < 0xFF) )
TVENC_SetBackground(uSelColor, uHStart+uOffset, uVStart, uHorSize, uVerSize);
else if ( (ucTemp == 'd') && (uHStart > 0) )
TVENC_SetBackground(uSelColor, uHStart-uOffset, uVStart, uHorSize, uVerSize);
else if( (ucTemp == 'r') && (uVerSize < 0xFF) )
TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize, uVerSize+uOffset);
else if ( (ucTemp == 'f') && (uVerSize > 0) )
TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize, uVerSize-uOffset);
else if ( (ucTemp == 't') && (uHorSize < 0xFF) )
TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize+uOffset, uVerSize);
else if ( (ucTemp == 'g') && (uHorSize > 0) )
TVENC_SetBackground(uSelColor, uHStart, uVStart, uHorSize-uOffset, uVerSize);
else if(ucTemp == 'q')
break;
}
TVENC_SetBackground(1, 0, 0, 180, 240);
//TVENC_EnableBackground(FALSE); //default enable
break;
case 12 : UART_Printf("\n");
UART_Printf("'u' : Up, 'd' : Down\n");
UART_Printf("'q' key to exit\n");
UART_Printf("\n");
while(1)
{
uValue = TVENC_GetSharpness();
UART_Printf("Current Sharpness Gain value[0~0x3F] : 0x%02x\n", uValue);
ucTemp = UART_Getc();
if( (ucTemp == 'u') && (uValue < 0x3F) )
TVENC_SetSharpness(uValue+1);
else if ( (ucTemp == 'd') && (uValue > 0) )
TVENC_SetSharpness(uValue-1);
else if(ucTemp == 'q')
break;
}
break;
default : break;
}
}
}
static void TVENCT_LoadImageToMemory(void)
{
u32 uSel;
u32 uSel_image;
uImgAddr = CODEC_MEM_ST;
UART_Printf("What do you want to display Image format, RGB or YUV ?\n");
UART_Printf("[0] : RGB\n");
UART_Printf("[1] : YUV\n");
UART_Printf("[2] : RGB24 CIF COLORBAR\n");
UART_Printf("Select number : ");
uSel = UART_GetIntNum();
if (uSel == 1)
{
UART_Printf("Select Image..\n");
UART_Printf("[0] : YCbCr420 QCIF [176x144]\n");
UART_Printf("[1] : YCbCr420 QVGA [320x240]\n");
UART_Printf("[2] : YCbCr420 CIF [352x288]\n");
UART_Printf("[3] : YCbCr420 VGA [640x480]\n");
UART_Printf("[4] : YCbCr420 WIDE [720x480]\n");
UART_Printf("[5] : YCbCr422 QCIF [176x144]\n");
UART_Printf("[6] : YCbCr422 QVGA [320x240]\n");
UART_Printf("[7] : YCbCr422 CIF [352x288]\n");
UART_Printf("[8] : YCbCr422 VGA [640x480]\n");
UART_Printf("[9] : YCbCr422 WIDE [720x480]\n");
uSel = UART_GetIntNum();
if(uSel > 4)
uImgResolution = YCBYCR;
else
uImgResolution = YC420;
switch(uSel)
{
case 0:
// pImg_YUV = IMG_420_QCIF; // not ready image
uImgXsize = 176, uImgYsize = 144;
break;
case 1:
pImg_YUV = IMG_420_QVGA;
uImgXsize = 320, uImgYsize = 240;
break;
case 2:
pImg_YUV = IMG_420_CIF;
uImgXsize = 352, uImgYsize = 288;
break;
case 3:
pImg_YUV = IMG_420_VGA;
uImgXsize = 640, uImgYsize = 480;
break;
case 4:
pImg_YUV = IMG_420_WIDE;
uImgXsize = 720, uImgYsize = 480;
break;
case 5:
pImg_YUV = IMG_422_QCIF;
uImgXsize = 176, uImgYsize = 144;
break;
case 6:
pImg_YUV = IMG_422_QVGA;
uImgXsize = 320, uImgYsize = 240;
break;
case 7:
pImg_YUV = IMG_422_CIF;
uImgXsize = 352, uImgYsize = 288;
break;
case 8:
pImg_YUV = IMG_422_VGA;
uImgXsize = 640, uImgYsize = 480;
break;
case 9:
pImg_YUV = IMG_422_WIDE;
uImgXsize = 720, uImgYsize = 480;
break;
}
LoadFromFile(pImg_YUV, CODEC_MEM_ST);
}
else if (uSel == 2)
{
uImgResolution = RGB24;
uImgXsize = 352;
uImgYsize = 288;
pImg_RGB = IMG_CIF_CBAR;
LoadFromFile(pImg_RGB, CODEC_MEM_ST);
}
else
{
UART_Printf("\nSelect Image\n");
UART_Printf("[0] : RGB16 QCIF [176x144]\n");
UART_Printf("[1] : RGB16 QVGA [320x240]\n");
UART_Printf("[2] : RGB16 CIF [352x288]\n");
UART_Printf("[3] : RGB16 VGA [640x480]\n");
UART_Printf("[4] : RGB16 WIDE [720x480]\n");
UART_Printf("[5] : RGB24 QCIF [176x144]\n");
UART_Printf("[6] : RGB24 QVGA [320x240]\n");
UART_Printf("[7] : RGB24 CIF [352x288]\n");
UART_Printf("[8] : RGB24 VGA [640x480]\n");
UART_Printf("[9] : RGB24 WIDE [720x480]\n");
UART_Printf("Select number : ");
uSel_image=UART_GetIntNum();
if (uSel_image > 4)
uImgResolution = RGB24;
else
uImgResolution = RGB16;
switch (uSel_image % 5)
{
case 0:
uImgXsize = 176, uImgYsize = 144;
pImg_RGB = IMG_RGB_QCIF;
break;
case 1:
uImgXsize = 320, uImgYsize = 240;
pImg_RGB = IMG_RGB_QVGA;
break;
case 2:
uImgXsize = 352, uImgYsize = 288;
pImg_RGB = IMG_RGB_CIF;
break;
case 3:
uImgXsize = 640, uImgYsize = 480;
pImg_RGB = IMG_RGB_VGA;
break;
case 4:
uImgXsize = 720, uImgYsize = 480;
pImg_RGB = IMG_RGB_WIDE;
break;
}
uConvertAddr = uImgAddr + uImgXsize*uImgYsize*4;
LoadFromFile(pImg_RGB, uConvertAddr);
if(uImgResolution==RGB24)
ConvertBmpToRgb24bpp(uConvertAddr, uImgAddr, uImgXsize, uImgYsize);
else if(uImgResolution==RGB16)
ConvertBmpToRgb16bpp(uConvertAddr, uImgAddr, uImgXsize, uImgYsize);
}
}
static void TVENCT_SelectTVOutputFormat(void) // TV controller class
{
u32 uFormatNum, uSelFormat, uSelType;
u32 i;
TV_TYPE aTvOutFormat[] =
{
"NTSC-M", NTSC_M,
"NTSC-J", NTSC_J,
"PAL-B/D/G/H/I", PAL_BGHID,
// "PAL-N", PAL_N,
"PAL-M", PAL_M,
"PAL-Nc", PAL_NC
};
UART_Printf("\n");
UART_Printf("0. Composite Out(D) 1. S-Video Out \n");
UART_Printf("Select the source clock : ");
uSelType = UART_GetIntNum();
//uSelType = 0;
if(uSelType > 1)
uSelType = 0; //Default Composite out
eConnType = (eTV_CONN_TYPE)uSelType;
uFormatNum = sizeof(aTvOutFormat)/sizeof(TV_TYPE );
for (i = 0; i < uFormatNum; i++)
UART_Printf("[%d] : %s\n", i, aTvOutFormat[i].pDesc);
UART_Printf("\nSelect the signal type : ");
uSelFormat = (u32)UART_GetIntNum();
//uSelFormat = 0;
UART_Printf("\n");
if ( (uSelFormat <= uFormatNum) )
eSigType = aTvOutFormat[uSelFormat].eType;
if( (eSigType == NTSC_M) || (eSigType == NTSC_J) || (eSigType == PAL_M) || (eSigType == NTSC_443) )
uTvSizeFormat = TVSIZE_NTSC;
else
uTvSizeFormat = TVSIZE_PAL;
TVENC_SetTvConMode(eSigType, eConnType);
}
//////////
// Function Name : Scaler_SelectClockDivider
// Function Description : Set the Scaler Clock Divider
// Input : None
// Output : None
void Scaler_SelectClockDivider(void)
{
u32 uPostClockDivide;
UART_Printf("[Scaler_SelectClockDivider]\n");
UART_Printf("\n");
UART_Printf("Select the source clock [0x01 ~ 0x3F] : ");
uPostClockDivide = (u32)UART_GetIntNum();
POST_SetClockDivide(uPostClockDivide, &oSc);
}
void TVENCT_Scaler_Enc_FromExtAPI(void)
{
u32 uImageAddr;
uImageAddr = CODEC_MEM_ST;
GLIB_InitInstance(uImageAddr, 320, 240, RGB24);
GLIB_DrawPattern(320, 240);
TVENC_DisplayTVout(NTSC_M, eCOMPOSITE, 720, 480);
POST_SetScalerforTVout(320, 240, uImageAddr, RGB24, 720, 480, &oSc);
}
extern void ScalerT_SelectClockSource(void);
void TVENCT_Scaler_Enc(void) // post controller initialize
{
u32 uImgSz, uWidth, uHeight;
UART_Printf("Select Image Size\n");
UART_Printf("[0] : Original Image Size\n");
UART_Printf("[1] : Full Screen size\n");
UART_Printf("Select number : ");
uImgSz = UART_GetIntNum();
//uImgSz = 1;
if(uImgSz)
{
TVENCT_GetTVFullSize(&uWidth, &uHeight);
}
else
{
uWidth = uImgXsize;
uHeight = uImgYsize;
}
INTC_Enable(NUM_TVENC);
INTC_SetVectAddr(NUM_TVENC, Isr_FifoUnderrun);
TVENC_SetImageSize(uWidth*2, uHeight);
TVENC_TurnOnOff(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -