亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? movie_rec.c

?? dm270 source code
?? C
?? 第 1 頁 / 共 3 頁
字號:

	MEM_FILE_write( &MovieCtrl.IndexFile, (char*)&MovieCtrl.FrameCount, sizeof(Uint32) );					
	
	return E_PASS;
}

void MOVIE_REC_FULLSCREEN_run(MOVIE_MODE mode) {
	if(mode==MOVIE_MJPEG_MODE)
		return;

	if(MovieCtrl.MovieFullScreen) {
		MovieCtrl.MovieFullScreen = FALSE;
		OSDSetMode( OSD_VID_WIN0, VID_320x240, NULL);
	} else {
		MovieCtrl.MovieFullScreen = TRUE;
		OSDSetMode( OSD_VID_WIN0, VID_FLD_320x240, NULL);
	}
}

void MOVIE_REC_CONFIG_run(MOVIE_MODE mode) {
	switch(mode) {
		case MOVIE_MJPEG_MODE:
			MJPEG_REC_CONFIG_run();
			break;
		case MOVIE_MPEG4_MODE:
			MPEG4_REC_CONFIG_run();
			break;
	}

}

static char mjpeg_record_config_menu[] = {
	"\r\n"
	"\r\n =========================="
	"\r\n MJPEG Record Configuration"
	"\r\n =========================="
	"\r\n"
	"\r\n Current configuration is:"
	"\r\n Frame-size   : %dx%d"
	"\r\n Image format : %s"
	"\r\n Frame-rate   : %d"
	"\r\n QTFF         : %s"
	"\r\n"
	"\r\n 0 : Previous Menu"
	"\r\n 1 : Modify Frame-size"
	"\r\n 2 : Modify Image Format"
	"\r\n 3 : Modify Frame-rate" 
    "\r\n 4 : Enable/disable QT File Format" 
	"\r\n"
	"\r\n Enter choice : "
};

void MJPEG_REC_CONFIG_run() {

	char ch;
	Uint16 width, height;
	char   image_format[16]="";
	char   buf[16]="";

	while(1) {

		if(MjpegRecStartCmd.ImageSize==MJPEG_REC_640x480) {
			width  = 640;
			height = 480;
		} else 
		if(MjpegRecStartCmd.ImageSize==MJPEG_REC_720x480) {
			width  = 720;
			height = 480;
		} else 
		if(MjpegRecStartCmd.ImageSize==MJPEG_REC_320x240) {
			width  = 320;
			height = 240;
		} 
		if(MjpegRecStartCmd.EncFormat==MOVIE_ENC_IMAGE_FORMAT_YUV420) {
			strcpy( image_format, "YUV420" );
		} 
		if(MjpegRecStartCmd.EncFormat==MOVIE_ENC_IMAGE_FORMAT_YUV422) {
			strcpy( image_format, "YUV422" );
		} 
		if(MovieCtrl.QtFileFormat) {
			strcpy( buf, "YES" );
		} else {
			strcpy( buf, "NO" );
		}	

		sprintf( UART_outBuff, mjpeg_record_config_menu,
				width, height,
				image_format,
				MjpegRecStartCmd.FrameRate,
				buf
			);

		UART_sendString( UART0, UART_outBuff );

		ch = UI_getInput();

		switch(ch) {
			case '0':
				return;
			case '1':
				UART_sendString( UART0, 
					"\r\n"
					"\r\n"
					"\r\n Select frame-size [1: 320x240, 2: 640x480, 3: 720x480] : "
					);				
				ch = UI_getInput();
				switch(ch) {
					case '1':
						MjpegRecStartCmd.ImageSize = MJPEG_REC_320x240;
						break;
					case '2':
						MjpegRecStartCmd.ImageSize = MJPEG_REC_640x480;
						break;
					case '3':
						MjpegRecStartCmd.ImageSize = MJPEG_REC_720x480;
						break;
				}
				break;
			case '2':
				UART_sendString( UART0, 
					"\r\n"
					"\r\n"
					"\r\n Select image format [1: YUV420, 2: YUV422] : "
					);				
				ch = UI_getInput();
				switch(ch) {
					case '1':
						MjpegRecStartCmd.EncFormat = MOVIE_ENC_IMAGE_FORMAT_YUV420;
						break;
					case '2':
						MjpegRecStartCmd.EncFormat = MOVIE_ENC_IMAGE_FORMAT_YUV422;
						break;
				}
				break;
			case '3':
				UART_sendString( UART0, 
					"\r\n"
					"\r\n"
					"\r\n Select frame-rate [1: 15fps, 2: 20fps, 3: 25fps, 4: 30fps] : "
					);				
				ch = UI_getInput();
				switch(ch) {
					case '1':
						MjpegRecStartCmd.FrameRate = 15;						
						break;
					case '2':
						MjpegRecStartCmd.FrameRate = 20;
						break;
					case '3':
						MjpegRecStartCmd.FrameRate = 25;						
						break;
					case '4':
						MjpegRecStartCmd.FrameRate = 30;
						break;
				}
				break;
			case '4':
				UART_sendString( UART0, 
					"\r\n"
					"\r\n"
					"\r\n QT File Format [1: Enable, 2: Disable] : "
					);				
				ch = UI_getInput();
				switch(ch) {
					case '1':
						MovieCtrl.QtFileFormat = TRUE;
						break;
					case '2':
						MovieCtrl.QtFileFormat = FALSE;						
						break;
				}
				break;
			default:
				break;
		}
	}

}


void MPEG4_REC_CONFIG_run() {
	static char mpeg4_record_config_menu[] = {
		"\r\n"
		"\r\n =========================="
		"\r\n MPEG4 Record Configuration"
		"\r\n =========================="
		"\r\n"
		"\r\n Current configuration is:"
		"\r\n Frame-size   : %dx%d"
		"\r\n Audio format : %s"
		"\r\n Frame-rate   : %d"
		"\r\n QTFF         : %s"
		"\r\n"
		"\r\n 0 : Previous Menu"
		"\r\n 1 : Modify Audio Format"
        "\r\n 2 : Enable/disable QT File Format" 
		"\r\n"
		"\r\n Enter choice : "
	};

	char ch;
	Uint16 width, height;
	char   audio_format[8]="";
	char   buf[8]="";

	while(1) {

		if(Mpeg4RecStartCmd.ImageSize==MPEG4_REC_320x240) {
			width  = 320;
			height = 240;
		} else 
		if(Mpeg4RecStartCmd.ImageSize==MPEG4_REC_352x288) {
			width  = 352;
			height = 288;
		} else 
		if(Mpeg4RecStartCmd.ImageSize==MPEG4_REC_176x144) {
			width  = 176;
			height = 144;
		} 
		if(Mpeg4RecStartCmd.AudioFormat==MOVIE_AUDIO_FORMAT_G726) {
			strcpy( audio_format, "G726" );
		} 
		if(Mpeg4RecStartCmd.AudioFormat==MOVIE_AUDIO_FORMAT_G711) {
			strcpy( audio_format, "G711" );
		} 
		if(MovieCtrl.QtFileFormat) {
			strcpy( buf, "YES" );
		} else {
			strcpy( buf, "NO" );
		}

		sprintf( UART_outBuff, mpeg4_record_config_menu,
				width, height,
				audio_format,
				Mpeg4RecStartCmd.FrameRate,
				buf
			);

		UART_sendString( UART0, UART_outBuff );

		ch = UI_getInput();

		switch(ch) {
			case '0':
				return;
			case '1':
				UART_sendString( UART0, 
					"\r\n"
					"\r\n"
					"\r\n Select audio format [1: G711, 2: G726] : "
					);				
				ch = UI_getInput();
				switch(ch) {
					case '1':
						Mpeg4RecStartCmd.AudioFormat = MOVIE_AUDIO_FORMAT_G711;
						break;
					case '2':
						Mpeg4RecStartCmd.AudioFormat = MOVIE_AUDIO_FORMAT_G726;
						MovieCtrl.QtFileFormat = FALSE;
						break;
				}
				break;
			case '2':
				UART_sendString( UART0, 
					"\r\n"
					"\r\n"
					"\r\n QT File Format [1: Enable, 2: Disable] : "
					);				
				ch = UI_getInput();
				switch(ch) {
					case '1':
						MovieCtrl.QtFileFormat = TRUE;
						Mpeg4RecStartCmd.AudioFormat = MOVIE_AUDIO_FORMAT_G711;
						break;
					case '2':
						MovieCtrl.QtFileFormat = FALSE;						
						break;
				}
				break;
			default:
				break;
		}
	}

}

void MOVIE_REC_qtffCreate(MOVIE_MODE mode) {
	Uint32 moovSize;
	char   *moovAddr;
	Uint32 moovOffset;
	char fname[40];

	UART_sendString( UART0, "\r\n Creating QTFF wrapper. Please wait ... " );
    MovieCtrl.prmQT.Videosize = MovieCtrl.CurVideoFileSize;
    MovieCtrl.prmQT.Scount    = MovieCtrl.FrameCount;
    MovieCtrl.prmQT.Ssize     = (Uint32*)(MovieCtrl.IndexFile.base_addr+4);

	switch(mode) {
		case MOVIE_MPEG4_MODE:
			MovieCtrl.prmQT.Ssize[0] -= MovieCtrl.prmQT.ChunkOffset;
			break;
	}

	MovieCtrl.prmQT.audioPrmQT.IncludeAudio  = 1;
	MovieCtrl.prmQT.audioPrmQT.AudioDataSize = MovieCtrl.CurAudioFileSize;

	// Make multiple of 4 bytes
	MovieCtrl.CurAudioFileSize += 4-(MovieCtrl.CurAudioFileSize+4)&0x3;
	// flush audio to file
	UART_sendString( UART0, "\r\n Writing Audio. Please wait ... " );
	FILE_write( MovieCtrl.FS_VideoFile, (char*)MovieCtrl.AudioFile.base_addr, MovieCtrl.CurAudioFileSize );
	UART_sendString( UART0, "Done" );

	UART_sendString( UART0, "\r\n Writing QT MOOV atom. Please wait ... " );
	moovAddr = (char*)MovieCtrl.AudioFile.base_addr;
	moovSize = QTMakeMovieAtom(&MovieCtrl.prmQT, (Uint8*)moovAddr);
	FILE_write( MovieCtrl.FS_VideoFile, moovAddr, moovSize );
	UART_sendString( UART0, "Done" );


	UART_sendString( UART0, "\r\n Updating QT MDAT atom size. Please wait ... " );
	moovOffset=MovieCtrl.CurAudioFileSize+MovieCtrl.CurVideoFileSize+QT_CHUNK_OFFSET;
	moovOffset=byte_swap32(moovOffset);
	
	switch(mode) {
		case MOVIE_MPEG4_MODE:
			if( GenFileName(fname, MovieCtrl.Mpeg4FileIndex, MPEG4_FILE) != E_PASS ) {
				UART_sendString( UART0, "\r\n  E_DEVICE : File Access");
				return;
			}
			break;
		case MOVIE_MJPEG_MODE:
			if( GenFileName(fname, MovieCtrl.MjpegFileIndex, MJPEG_FILE) != E_PASS ) {
				UART_sendString( UART0, "\r\n  E_DEVICE : File Access");
				return;
			}
			break;
		default:
			return;
	}

	#ifdef _Pr_KERNEL_
	FILE_seek( MovieCtrl.FS_VideoFile, 0, SEEK_SET);
	#else
	FILE_close(MovieCtrl.FS_VideoFile, FILEIO_NO_FAT_CACHE_FLUSH);
	FILE_open( fname, "ab", 0 );
	#endif

	FILE_write( MovieCtrl.FS_VideoFile, (char*)&moovOffset, 4 );
	FILE_close(MovieCtrl.FS_VideoFile, 0);

	UART_sendString( UART0, "Done" );
	UART_sendString( UART0, "\r\n QTFF wrapper creation completed." );
}

/* Used QT File Format */

/*-----------------------------------------------------------------------------\
@RoutineName :: GetMovieFrameRate

@Description ::
    Gets the desired Movie Frame Rate
    This routine should typically query the system and retrieve the frame rate.
    For now the frame rate is hard coded in the const MJPEG_FRAMERATE

@Parameters  ::
    Uint32   videoDataFormat     ::  Video Data Format .. H263 or MJPEG

@Return      ::
    Movie Frame Rate

\-----------------------------------------------------------------------------*/
Uint32 GetMovieFrameRate( Uint32 videoDataFormat ) {
     return MovieCtrl.FrameRate;
}

/*-----------------------------------------------------------------------------\
@RoutineName :: GetMovieWidth

@Description ::
    Gets the desired Movie display width
    This routine should typically query the system and retrieve the width
    For now the width is hard coded in the const MOVIE_IMAGE_WIDTH

@Parameters  ::
    Uint32 videoDataFormat       ::  Video Data Format .. H263 or MJPEG or MPEG-4

@Return      ::
    Movie width in pixels

\-----------------------------------------------------------------------------*/
Uint16  GetMovieWidth( Uint32 videoDataFormat ){
	Uint16 width;

    switch( videoDataFormat ) {
        case QT_MJPEGA_FORMAT:
			if(MjpegRecStartCmd.ImageSize==MJPEG_REC_640x480) {
				width  = 640;
			} else 
			if(MjpegRecStartCmd.ImageSize==MJPEG_REC_720x480) {
				width  = 720;
			} else 
			if(MjpegRecStartCmd.ImageSize==MJPEG_REC_320x240) {
				width  = 320;
			} 			
            return width;
        case QT_H263_FORMAT:
            return 320;
        case QT_MP4_FORMAT:
            return 320;
        default:
            return 320;
    }
}

/*-----------------------------------------------------------------------------\
@RoutineName :: GetMovieHeight

@Description ::
    Gets the desired Movie display height
    This routine should typically query the system and retrieve the height
    For now the height is hard coded in the const MOVIE_IMAGE_HEIGHT

@Parameters  ::
    Uint32 videoDataFormat       ::  Video Data Format .. H263 or MJPEG or MPEG-4

@Return      ::
    Movie height in pixels
\-----------------------------------------------------------------------------*/
Uint16  GetMovieHeight(Uint32 videoDataFormat ) {
	Uint16 height;

    switch( videoDataFormat ) {
        case QT_MJPEGA_FORMAT:
			if(MjpegRecStartCmd.ImageSize==MJPEG_REC_640x480) {
				height = 480;
			} else 
			if(MjpegRecStartCmd.ImageSize==MJPEG_REC_720x480) {
				height = 480;
			} else 
			if(MjpegRecStartCmd.ImageSize==MJPEG_REC_320x240) {
				height = 240;
			} 			
            return height;
        case QT_H263_FORMAT:
            return 240;
        case QT_MP4_FORMAT:
            return 240;
        default:
            return 240;
    }
}

/*-----------------------------------------------------------------------------\
@RoutineName :: GetMovieKeyFrameInterval

@Description ::
    Gets the desired Movie Key Frame Interval
    Key Frames in a movie are those frames which do not depend on previous frames.
    eg. I frames in MPEG

@Parameters  ::
    Uint32 videoDataFormat       ::  Video Data Format .. H263 or MJPEG or MPEG-4

@Return      ::
    Movie Key frame interval

\-----------------------------------------------------------------------------*/
Uint16  GetMovieKeyFrameInterval(Uint32 videoDataFormat ) {
    switch( videoDataFormat ) {
        case QT_MJPEGA_FORMAT:
            return 1;
        case QT_H263_FORMAT:
            return 1;
        case QT_MP4_FORMAT:
            return 1;
        default:
            return 1;
    }
}

/* End of routines required QT File Format */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合久久av| 337p粉嫩大胆噜噜噜噜噜91av | 波多野结衣中文字幕一区二区三区 | 欧美一级理论片| 日韩av在线发布| 精品欧美乱码久久久久久| 狠狠色综合色综合网络| 久久久精品影视| www.色综合.com| 亚洲国产wwwccc36天堂| 91精品啪在线观看国产60岁| 久久黄色级2电影| 国产精品三级电影| 精品视频一区三区九区| 美腿丝袜亚洲一区| 国产亚洲精品福利| 欧美在线免费观看视频| 久久69国产一区二区蜜臀| 中文文精品字幕一区二区| 色婷婷精品大视频在线蜜桃视频| 婷婷综合五月天| 国产欧美一区二区精品久导航| 91小视频免费观看| 色婷婷综合视频在线观看| 日韩av不卡在线观看| 国产日韩三级在线| 欧美日韩视频在线一区二区| 九九视频精品免费| 亚洲蜜桃精久久久久久久| 日韩西西人体444www| 99久久国产综合色|国产精品| 午夜久久久久久久久久一区二区| 国产色爱av资源综合区| 欧美性猛交xxxx乱大交退制版| 国产乱码字幕精品高清av| 一区av在线播放| 国产视频一区在线播放| 在线播放国产精品二区一二区四区| 国产在线精品视频| 亚洲成人av在线电影| 国产精品久久久99| 日韩精品中文字幕一区| 在线视频中文字幕一区二区| 国产精品亚洲人在线观看| 天天色天天爱天天射综合| 国产精品你懂的| 精品国产污污免费网站入口| 欧美日韩一级二级| 一本久久a久久免费精品不卡| 麻豆国产精品一区二区三区| 一区二区三区欧美日韩| 中文字幕的久久| 日韩精品一区二区三区老鸭窝 | 欧美一区二区成人6969| 91麻豆精品一区二区三区| 国产二区国产一区在线观看| 免费人成网站在线观看欧美高清| 亚洲午夜免费电影| 日韩伦理免费电影| 国产精品久久免费看| 精品久久久久久最新网址| 538prom精品视频线放| 在线看国产日韩| 91蝌蚪porny| av电影在线不卡| 波多野结衣中文字幕一区二区三区| 国产伦精品一区二区三区免费| 日本91福利区| 美女mm1313爽爽久久久蜜臀| 日韩电影在线一区二区| 偷拍一区二区三区| 日韩和欧美的一区| 午夜视频一区在线观看| 午夜欧美在线一二页| 午夜精品免费在线观看| 一区二区欧美视频| 亚洲第一福利一区| 日本欧美加勒比视频| 免费欧美在线视频| 狠狠色伊人亚洲综合成人| 经典一区二区三区| 国产成人精品一区二区三区网站观看 | 一区二区三区自拍| 一区二区三区四区高清精品免费观看 | 成人av电影在线| 99免费精品视频| 91视频xxxx| 欧美日韩欧美一区二区| 777午夜精品视频在线播放| 日韩一区二区三区四区五区六区| 日韩精品一区二区三区中文不卡| 日韩精品一区国产麻豆| 国产欧美日韩在线看| 自拍偷拍国产精品| 一区二区三区国产豹纹内裤在线| 午夜精品一区二区三区免费视频 | 激情图区综合网| 成人爽a毛片一区二区免费| 成人app在线| 欧美日韩在线精品一区二区三区激情 | 蜜桃传媒麻豆第一区在线观看| 久久97超碰色| 99久久婷婷国产综合精品电影| 欧美最新大片在线看| 欧美一级日韩不卡播放免费| 久久久久久久久久久久电影 | 日韩成人免费看| 国产麻豆视频一区二区| 91网站在线观看视频| 欧美日韩第一区日日骚| 国产婷婷色一区二区三区在线| 亚洲靠逼com| 久久99最新地址| 色婷婷综合久色| 26uuu欧美日本| 一二三区精品视频| 激情欧美日韩一区二区| 色综合亚洲欧洲| 91精品国产91热久久久做人人| 日本一区二区三区四区| 午夜激情综合网| 国产99久久久国产精品潘金网站| 在线观看日韩电影| 久久久久久97三级| 亚洲福利视频导航| 成人久久18免费网站麻豆| 91精品国产丝袜白色高跟鞋| 亚洲欧洲色图综合| 久久99精品久久久久久| 在线精品视频一区二区三四| 久久色视频免费观看| 午夜天堂影视香蕉久久| 成人91在线观看| 2023国产精品| 日本美女一区二区三区| 色综合久久天天| 国产亚洲视频系列| 日韩精品一区第一页| 色婷婷av一区二区三区软件| 久久九九影视网| 久久精品国产精品青草| 在线看日韩精品电影| 欧美国产视频在线| 国产乱子伦视频一区二区三区 | 免费的成人av| 欧美午夜影院一区| 中文字幕一区二区三区在线不卡 | 成人免费在线播放视频| 国内精品伊人久久久久av影院| 91精品视频网| 视频一区中文字幕国产| 91黄视频在线观看| 中文字幕一区二区三| 国产成人午夜视频| 欧美精品一区二区在线播放| 日韩成人一级片| 91麻豆精品91久久久久同性| 性感美女久久精品| 欧美日韩久久久久久| 亚洲成人免费在线| 欧美亚洲一区二区三区四区| 亚洲精品中文在线| 97超碰欧美中文字幕| 中文字幕乱码一区二区免费| 国产不卡一区视频| 国产日韩欧美在线一区| 国产麻豆视频一区二区| 久久久99久久| 国产成人精品综合在线观看 | 精品91自产拍在线观看一区| 免费亚洲电影在线| 日韩免费在线观看| 精品一二线国产| 久久久九九九九| 99国产精品久久久久久久久久| 椎名由奈av一区二区三区| 91在线云播放| 午夜一区二区三区视频| 欧美电影在线免费观看| 秋霞影院一区二区| 2023国产一二三区日本精品2022| 国产成人免费视频一区| 国产精品欧美一区二区三区| 色综合久久天天综合网| 亚洲超丰满肉感bbw| 日韩一区二区三区四区| 国产精品18久久久久久久久久久久| 国产亚洲va综合人人澡精品| 不卡一二三区首页| 五月天亚洲婷婷| 久久这里只有精品6| 99久久er热在这里只有精品66| 亚洲高清免费视频| 精品处破学生在线二十三| 成人app软件下载大全免费| 亚洲一区二区三区免费视频| 在线不卡免费av| 成人免费毛片片v| 婷婷六月综合网| 久久午夜国产精品|