⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exolvidpip.c

📁 1500 video test demo,please note.
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -