?? exolvidvbi.c
字號:
err = tmMemDbgSetup(1*1024*1024, 0); // first param is size of memory trace buffer // second param is level of detail, 0, 1, or 2 if (err) { printf("Failed to allocate memory for memory debug buffer. 0x%x\n", err); tmMain_EXIT (err); } tmMemDbgStart(); tmMemDbgWriteMessage("Setting marker check1:\n"); err = tmMemDbgMarkCheckpoint("check1"); if (err) printf("Failed to set first tmMemDbg check point. 0x%x\n", err); tmMemDbgWriteMessage("Starting:\n"); } #endif #endif #if defined(TMFL_NEED_TM_TRACE) #if TMFL_NEED_TM_TRACE == 1 printf("Initializing tmTfeTrace\n"); initTmTfeTrace(); #endif #endif 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;
ivp->VbiFormat=outputFormatVbi; 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; /*------------- 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((dbgexolVideo, 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 = 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 exolVideo application.\n"); tmMain_EXIT (0);} // main ()//-----------------------------------------------------------------------------// FUNCTION: doMainMenu://// DESCRIPTION: // RETURN: tmErrorCode_t//// NOTES: None//-----------------------------------------------------------------------------//tmErrorCode_t doMainMenu(exolVideoInstance_t* ivp){ tmErrorCode_t tmError = TM_OK; Bool exitNow; char ins[256]; int output=0; printf("\n\nFollow the prompts to choose input and output formats\n"); SelectInputFormat(ivp); for(;;) { printf("\n\nSelect Vbi setup \n"); printf("0 Exit \n"); printf("1 Enable Analogue VBI re-insertion \n"); printf("2 Enable 'Digital' VBI insertion \n"); printf("3 No Vbi \n"); gets(ins); output = 0; sscanf(ins, "%d", &output); switch(output) { default: case 0: exitNow = True; break; case 1 : printf("1 - Enabled Analogue VBI re-insertion \n"); ivp->VbiEnable=True; ivp->VbiInsertionEnabled=True; ivp->VbiSlicerEnable=True; ivp->InsertVbiData = False; exitNow = False; break; case 2 : printf("2 - Enabled 'Digital' VBI insertion\n"); ivp->VbiEnable=True; ivp->VbiInsertionEnabled=True; ivp->VbiSlicerEnable=False; ivp->InsertVbiData = True; exitNow = False; break; case 3: printf("0 - Vbi disabled \n"); ivp->VbiEnable=False; ivp->VbiInsertionEnabled=False; ivp->VbiSlicerEnable=False; ivp->InsertVbiData = False; exitNow = False; break; } tmosalTaskSleep(200); if(exitNow==False) { RunVip(ivp); } else { break; } } return tmError;}//-----------------------------------------------------------------------------// FUNCTION: SelectInputFormat://// DESCRIPTION: // RETURN: tmErrorCode_t//// NOTES: None//-----------------------------------------------------------------------------//void SelectInputFormat(exolVideoInstance_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);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -