📄 exolvidpip.c
字号:
exEnableDbgFlags(0); // // default values: Test pattern as source, NTSC out. // So users don't need a video source for first tests. // ivp->InternalTestPattern=1; // default to show test pattern ivp->InputVideoAdapter=vaaCVBS; // input video adapter for VIP ivp->OutputVideoAdapter=tmVencAna_Yc; // output adapter & standard ivp->VideoEncUnit=0; // Video Encoder (denc) unit ivp->AnalogVideoEncoder=True; ivp->InputFormat=defFormatNTSC; ivp->OutputFormat=defFormatNTSC;
tmError = tmVideoMode_GetModeByName ( "ntsc", &ivp->OutputVideoMode); if (tmError != TM_OK) printf("Whoa! tmVideoMode_GetModeByName failed:0x%X\n",tmError); ivp->DestinationWindow[0]=False; ivp->DestinationWindow[1]=False; ivp->SourceWindow[0]=False; ivp->SourceWindow[1]=False; ivp->timeout = 0; ivp->hInstMemSpace=0;
tmError = tmosalEventCreate (&ivp->endOfTask, tmosalEventAutoClear );
DBG_ASSERT2((tmError == TM_OK),("tmosalEventCreate failed: 0x%X\n",tmError));
/*------------- Create memspace for this application --------------------*/ tmError = tmmlCreate (&ivp->hInstMemSpace, 20 * 1024 * 1024, tmmlMmspNormal); DBG_ASSERT2((tmError == TM_OK),("tmmlCreate failed:0x%X\n",tmError)); if (tmError != TM_OK) { printf("Whoa! tmmlCreate failed:0x%X\n",tmError); tmMain_EXIT(tmError); } /*-------------------------- Setup 90khz Clock -----------------------------*/ DBG_PRINT((dbgexolVidPip, DBG_LEVEL_1, "Init. clock ... " )); tmError = tsaClockOpen( &(ivp->hClock.clock) ); DBG_ASSERT2((tmError == TM_OK),("tsaClockOpen failed:0x%X\n",tmError)); if (tmError != TM_OK) { printf("Whoa! tsaClockOpen failed:0x%X\n",tmError); tmMain_EXIT(tmError); } tmError = tsaClockGetInstanceSetup( ivp->hClock.clock, &(ivp->pClockSetup) ); DBG_ASSERT2((tmError == TM_OK),("tsaClockGetInstanceSetup failed:0x%X\n",tmError)); if (tmError != TM_OK) { printf("Whoa! tsaClockGetInstanceSetup failed:0x%X\n",tmError); tmMain_EXIT(tmError); } ivp->pClockSetup->frequency = 90000; tmError = tsaClockInstanceSetup( ivp->hClock.clock, ivp->pClockSetup ); DBG_ASSERT2((tmError == TM_OK),("tsaClockInstanceSetup failed:0x%X\n",tmError)); if (tmError != TM_OK) { printf("Whoa! tsaClockInstanceSetup failed:0x%X\n",tmError); tmMain_EXIT(tmError); } tmError = tsaClockStart( ivp->hClock.clock ); DBG_ASSERT2((tmError == TM_OK),("tsaClockStart failed:0x%X\n",tmError)); if (tmError != TM_OK) { printf("Whoa! tsaClockStart failed:0x%X\n",tmError); tmMain_EXIT(tmError); } /*----------------------- Display main menu -----------------------------*/ doMainMenu(ivp); /*----------------------------- Stop Clock ------------------------------*/
tmError = tmosalEventDestroy (ivp->endOfTask);
DBG_ASSERT2((tmError == TM_OK),("tmosalEventDestroy failed: 0x%X\n",tmError));
tmError = tsaClockStop( ivp->hClock.clock ); DBG_ASSERT2((tmError == TM_OK),("tsaClockStop failed:0x%X\n",tmError)); tmError = tsaClockClose( ivp->hClock.clock ); DBG_ASSERT2((tmError == TM_OK),("tsaClockClose failed:0x%X\n",tmError)); tmError = tmmlDelete(ivp->hInstMemSpace); DBG_ASSERT2((tmError == TM_OK),("tmmlDelete failed:0x%X\n",tmError)); #if defined(TMFL_NEED_TM_TRACE) #if TMFL_NEED_TM_TRACE == 1 printf("Closing TFE trace\n"); err = tmTfeTraceCloseAndSave(); if (err) printf("Couldn't save trace file\n"); else printf("All function trace info has been saved in the current working directory, files TRACEFILE and TRACEFILE_TASKS\n"); #endif #endif #if defined(TMFL_NEED_MEM_DEBUG) #if TMFL_NEED_MEM_DEBUG == 1 tmMemDbgWriteMessage("Final check begin:\n"); tmMemDbgDumpLeaks("check1"); tmMemDbgWriteMessage("now dump stats:\n"); tmMemDbgDumpStats(); tmMemDbgWriteMessage("dump tasks again:\n"); tmMemDbgDumpTasks(); tmMemDbgWriteMessage("final dump:\n"); tmMemDbgDump(); //tmMemDbgStop(); #endif #endif printf("Exiting exolVidPip application.\n"); tmMain_EXIT (0);} // main ()//-----------------------------------------------------------------------------// FUNCTION: doMainMenu://// DESCRIPTION: // RETURN: tmErrorCode_t//// NOTES: None//-----------------------------------------------------------------------------//tmErrorCode_t doMainMenu(exolVidPipInstance_t* ivp){ tmErrorCode_t tmError = TM_OK; printf("\n\nFollow the prompts to choose input and output formats\n"); SelectInputFormat(ivp); RunVip(ivp);
return tmError;}//-----------------------------------------------------------------------------// FUNCTION: SelectInputFormat://// DESCRIPTION: // RETURN: tmErrorCode_t//// NOTES: None//-----------------------------------------------------------------------------//void SelectInputFormat(exolVidPipInstance_t* ivp){ int input=0; int adapter=0; char ins[256]; int i; char *adapterTypeName ; ptmbslVdecAnaConfig_t config ; tmErrorCode_t err ;
int output=0;
tmErrorCode_t tmError=TM_OK;
String VideoModeName=Null;
Bool validMode = False; printf("\nSelect Input/Output video format\n"); printf("1 -NTSC \n"); printf("2 -PAL\n"); gets(ins); input = 0; sscanf(ins, "%d", &input); switch(input) { default: printf("%d: Unknown format... Try again\n", input); case 1 : printf("-NTSC Packed 4:2:2\n"); ivp->InputFormat=defFormatNTSC; ivp->InputFormat.dataSubtype=vdfUYVY; ivp->InputFormat.imageStride=ivp->InputFormat.imageWidth*2; ivp->InputFormat.imageUVStride=0;
VideoModeName="ntsc";
ivp->OutputFormat=defFormatNTSC;
validMode = True;
break; case 2 : printf("-PAL Packed 4:2:2\n"); ivp->InputFormat=defFormatPAL; ivp->InputFormat.dataSubtype=vdfUYVY; ivp->InputFormat.imageStride=ivp->InputFormat.imageWidth*2; ivp->InputFormat.imageUVStride=0;
VideoModeName="pal";
ivp->OutputFormat=defFormatPAL;
validMode = True;
break; }
if (validMode)
{
tmError = tmVideoMode_GetModeByName (VideoModeName, // I: mode name
&ivp->OutputVideoMode); // O: receives mode
if (tmError != TM_OK)
printf("Whoa! tmVideoMode_GetModeByName returned error 0x%x\n", tmError);
}
printf("\n\nSelect Input video adapter (source)\n"); printf("1 -testPattern 1\n"); printf("2 -testPattern 2\n"); err = tmbslVdecAnaGetInterface (tmUnit0, &config); if (err != TM_OK) { printf("tmbslVdecAnaGetInterface error %08x\n", err) ; return ; } for (i = 0; i < config->vDec.numAdapters; i++) { switch (config->vDec.adapterTable[i].adapterType) { case vaaGeneric: adapterTypeName = "vaaGeneric" ; break ; case vaaNone: adapterTypeName = "vaaNone" ; break ; case vaaCVBS: adapterTypeName = "vaaCVBS" ; break ; case vaaSvideo: adapterTypeName = "vaaSvideo" ; break ; case vaaExt1: adapterTypeName = "vaaExt1" ; break ; case vaaSCART: adapterTypeName = "vaaSCART" ; break ; case vaaVGA: adapterTypeName = "vaaVGA" ; break ; default: adapterTypeName = "unknown" ; break ; } printf("%-2d -%-9s %d\n", i+3, adapterTypeName, config->vDec.adapterTable[i].adapterIndex) ; } gets(ins); adapter = 0; sscanf(ins, "%d", &adapter); switch (adapter) { case 1: ivp->InternalTestPattern = 1; printf("Choose internal test pattern 1 as source.\n"); break; case 2: printf("Choose internal test pattern 2 as source.\n"); ivp->InternalTestPattern = 2; break; default: i = adapter - 3 ; if (i >= config->vDec.numAdapters) { printf("Unknown adapter... No change. Try again\n"); break; } ivp->InternalTestPattern = 0; switch (config->vDec.adapterTable[i].adapterType) { case vaaSvideo: ivp->InputVideoAdapter=vaaSvideo; break ; case vaaNone: printf("Map Input adapter vaaNone to CVBS\n"); case vaaCVBS: ivp->InputVideoAdapter=vaaCVBS; break ; case vaaGeneric: case vaaExt1: case vaaSCART: case vaaVGA: default: printf("Input adapter type not supported here.\n"); break ; } ivp->InputVideoAdapterType = config->vDec.adapterTable[i].adapterType; ivp->InputVideoAdapterIndex = config->vDec.adapterTable[i].adapterIndex; // I don't see where the previous two are passed to VdecAna printf("chose board specific adapter %d (selection %d)\n", i, adapter); break; }
printf("\n\nSelect video output adapter\n");
printf("1 -CVBS \n");
printf("2 -Y/C (S-Video)\n");
gets(ins);
output = 0;
sscanf(ins, "%d", &output);
switch(output)
{
default:
case 1 :
printf("1 -CVBS \n");
ivp->OutputVideoAdapter=tmVencAna_Cvbs;
break;
case 2 :
printf("-Y/C (S-Video)\n");
ivp->OutputVideoAdapter=tmVencAna_Yc;
break;
}
printf("\n\nSelect Window setup \n");
printf("0 Single Window \n");
printf("1 PIP - Analog in Analog\n");
gets(ins);
output = 0;
sscanf(ins, "%d", &output);
switch(output)
{
default:
case 0:
ivp->pipWindow = False;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -