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

📄 movie_main.c

📁 dm270 source code
💻 C
字号:
/*
    DM270 ARM Evaluation Software

    (c)Texas Instruments 2003
*/

#include <system/gio270.h>
#include <system/intc270.h>

#include <user/aic23.h>
#include <user/osd.h>

#include <demo/menu.h>
#include <demo/ui.h>

#include <appl/movie_main.h>
#include <appl/movie_play.h>
#include <appl/movie_rec.h>

#include <demo_gui/demo_gui.h>

MOVIE_CTRL MovieCtrl;

void MOVIE_init() {
	MOVIE_REC_init();
	MOVIE_PLAY_init();
	MOVIE_AIC23_stop();
}

void MOVIE_MAIN_MENU_run( MOVIE_MODE mode) {
	char ch;

	GUI_fileInfoPanelClear();
	GUI_controlPanelClear();
	GUI_controlPanelReset();
	GUI_controlPanelDraw();

    switch(mode) {
		case MOVIE_MPEG4_MODE:
			GUI_controlPanelMediaNameSet("MPEG4");
			break;
		case MOVIE_MJPEG_MODE:
	  	    GUI_controlPanelMediaNameSet("MJPEG");
			break;			
		default:
			return;
	}	


	while(1) {
		switch(mode) {
			case MOVIE_MPEG4_MODE:
				UART_sendString( UART0, mpeg4_main_menu);
				break;
			case MOVIE_MJPEG_MODE:
				UART_sendString( UART0, mjpeg_main_menu);
				break;				
			default:
				return;
		}

		ch = UI_getInput();

		switch(ch) {
			case '0':
				GUI_fileInfoPanelClear();
				GUI_controlPanelClear();
				GUI_controlPanelReset();
				return;
			case '1':
				GUI_controlPanelReset();
				GUI_controlPanelDraw();	
				GUI_controlPanelButtonStateSet(&BUTTON_RECORD_STOP);
				DraftPreview(TRUE);
				break;
			case '2':
				MOVIE_REC_MENU_run(mode);
				break;
			case '3':
				MOVIE_PLAY_MENU_run(mode);
				break;
			case 't' :
				MOVIE_test();
				break;
			default:
				break;
		}
	}
}

void MOVIE_REC_MENU_run(MOVIE_MODE mode) {
	char ch;

	GUI_controlPanelReset();
	GUI_controlPanelDraw();
	GUI_controlPanelButtonStateSet(&BUTTON_RECORD_STOP);

	while(1) {
		switch(mode) {
			case MOVIE_MPEG4_MODE:
				UART_sendString( UART0, mpeg4_record_menu);
				break;
			case MOVIE_MJPEG_MODE:
				UART_sendString( UART0, mjpeg_record_menu);
				break;				
			default:
				return;
		}

		ch = UI_getInput();

		switch(ch) {
			case '0':
				return;
			case '1':
				GUI_controlPanelReset();
				GUI_controlPanelDraw();	
				GUI_controlPanelButtonStateSet(&BUTTON_RECORD_STOP);
				DraftPreview(TRUE);
				break;
			case '2':
				GUI_controlPanelClear();
				GUI_controlPanelReset();
				GUI_controlPanelButtonStateSet(&BUTTON_RECORD_STOP);
				GUI_controlPanelDraw();	
				MOVIE_REC_run(mode);
				break;
			case '3':
				MOVIE_REC_CONFIG_run(mode);
				break;
			default:
				break;
		}
	}
}

void MOVIE_PLAY_MENU_run(MOVIE_MODE mode) {
	char ch;

	GUI_controlPanelReset();
	GUI_controlPanelDraw();
	GUI_controlPanelButtonStateSet(&BUTTON_PLAY_STOP);

	MOVIE_PLAY_START_run(mode, TRUE);
	while(1) {
		switch(mode) {
			case MOVIE_MPEG4_MODE:
				UART_sendString( UART0, mpeg4_playback_menu);
				break;
			case MOVIE_MJPEG_MODE:
				UART_sendString( UART0, mjpeg_playback_menu);
				break;				
			default:
				return;
		}

		
		ch = UI_getInput();

		switch(ch) {
			case '0':
				return;
			case '1':
				GUI_controlPanelReset();
				GUI_controlPanelDraw();	
				GUI_controlPanelButtonStateSet(&BUTTON_PLAY_STOP);
				DraftPreview(TRUE);
				break;
			case '2':
				GUI_controlPanelReset();
				GUI_controlPanelDraw();	
				GUI_controlPanelButtonStateSet(&BUTTON_PLAY_STOP);
				MOVIE_PLAY_run(mode);
				break;
			case '3':
				GUI_controlPanelReset();
				GUI_controlPanelButtonStateSet(&BUTTON_PLAY_NEXT);
				MOVIE_nextFile(mode);
				MOVIE_PLAY_run(mode);
				break;
			case '4':
				GUI_controlPanelReset();
				GUI_controlPanelButtonStateSet(&BUTTON_PLAY_PREV);
				MOVIE_prevFile(mode);
				MOVIE_PLAY_run(mode);
				break;
			case '5':
				GUI_controlPanelReset();
				GUI_controlPanelDraw();	
				GUI_controlPanelButtonStateSet(&BUTTON_PLAY_STOP);
				MOVIE_PLAY_CONTINOUS_run(mode);
				break;
		}
	}
}


void MOVIE_AIC23_init(BOOL encode) {

	// to enable Clock to 12.288Mhz OSC in U2 socket on DM270 EVM. This used as clock by AIC23
	{
		GIO_ConfigData gio2;

		gio2.dir    = GIO_OUTPUT;
		gio2.altUse = FALSE;

		GIO_setConfig( GIO2, &gio2 );
		GIO_setBit( GIO2 );
	}

	AIC23_selectMode(FALSE);

  	AIC23_reset();

	AIC23_L_lin_vol( 0,  0,  0x1F );

	AIC23_R_lin_vol( 0,  0,  0x1F );

	AIC23_L_hp_vol(  0,  1,  0x3F );

	AIC23_R_hp_vol(  0,  1,  0x3F );

	if(encode) {
		AIC23_A_path( 0, 0, 1, 1, 1, 0, 0);
	} else {
		AIC23_A_path( 0, 0, 1, 0, 0, 1, 0);
	}
	
	AIC23_D_path(  0,  1,  0 );

	AIC23_pow_ctrl( 0, 0, 0, 0, 0, 0, 0, 0);
	
	AIC23_D_audio_fmt( 0, 0, 0, 0, 3);

	AIC23_smpl_rate( 0, 0, 3, 0, 0);

	AIC23_D_interface( 1 );
}

void MOVIE_AIC23_stop() {

	AIC23_selectMode(FALSE);

	AIC23_reset();

	AIC23_pow_ctrl( 1, 1, 1, 1, 1, 1, 1, 1);
}

int MovieTestCount;
int MovieTestStop;

int MOVIE_test() {

	UART_sendString( UART0, "\r\n\n Testing MPEG4 Record/Playback\r\n" );

	MovieTestCount=0;
	MovieTestStop=0;

	while(!MovieTestStop) {
		
		GUI_controlPanelClear();
		GUI_controlPanelReset();
		GUI_controlPanelButtonStateSet(&BUTTON_RECORD_STOP);
		GUI_controlPanelDraw();	
		MOVIE_REC_run(MOVIE_MPEG4_MODE);

		GUI_controlPanelReset();
		GUI_controlPanelDraw();	
		GUI_controlPanelButtonStateSet(&BUTTON_PLAY_STOP);
		MOVIE_PLAY_run(MOVIE_MPEG4_MODE);
		
		MovieTestCount++;
		sprintf( UART_outBuff, "\r\n Iteration : %d", MovieTestCount);
		UART_sendString( UART0, UART_outBuff );
	}	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -