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

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

?? fileplayer.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 5 頁
字號:
	duration -= (hour * 3600 * 1000);	min = duration / (60 * 1000);	duration -= min * 60 * 1000;	sec = duration / 1000;	duration -= sec * 1000;	milisec = duration;	RMDBGLOG((ENABLE, ">>> Duration %ldh %ldm %lds %ldms\n", (RMuint32)hour, (RMuint32)min, (RMuint32)sec, (RMuint32)milisec));	RMDBGLOG((ENABLE, "\tCreation Data = %llu\n", Creation_Date));	RMDBGLOG((ENABLE, "\tFile Size = %llu %s %s\n", File_Size, ((Broadcast) ? "[Broadcast (play and send duration invalid!)]":""), ((Seekable) ? "[Seekable]":"")));	RMDBGLOG((ENABLE, "\tData Packets Count = %llu\n", Data_Packets_Count));	}static RMstatus detect_asf_duration(RMfile fileHandle, RMuint64 *duration){	struct detect_asf_context DetectContext = {0,};	RMstatus err = RM_OK;	RMuint64 position;	DetectContext.vASFDemux = NULL;	*duration = 0;	RMDBGLOG((ENABLE, "begin asf duration detection\n"));	RMDBGLOG((ENABLE, "create asf demux\n"));	err = RMCreateASFVDemux(&DetectContext.vASFDemux);	if (err != RM_OK) {		fprintf(stderr, "error creating demux\n");		return err;	}	err = RMASFVDemuxInit(DetectContext.vASFDemux, &DetectContext);	if (err != RM_OK) {		fprintf(stderr, "error during demux init\n");		return err;	}	err = RMASFVDemuxSetCallbacks(DetectContext.vASFDemux,				      NULL,				      detect_asf_duration_file_properties_callback,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL,				      NULL);	if (err != RM_OK) {		fprintf(stderr, "error registering callbacks\n");		return err;	}	/* Check current position only if seek is supported */	RMGetCurrentPositionOfFile(fileHandle, (RMint64*)&position);	RMDBGLOG((ENABLE, "current position %lld\n", position));	err = RMASFVDemuxBuildIndexWithHandle(DetectContext.vASFDemux, 					      fileHandle, 					      &DetectContext.packetSize, 					      &DetectContext.headerObjectSize);	/* seek to first packet, at position [headerSize+50] */	RMSeekFile(fileHandle, position, RM_FILE_SEEK_START);				/* Check current position only if seek is supported */	RMGetCurrentPositionOfFile(fileHandle, (RMint64*)&position);	RMDBGLOG((ENABLE, "current position %lld\n", position));	if (DetectContext.vASFDemux) {		RMDBGLOG((ENABLE, "delete demux\n"));		RMDeleteASFVDemux(DetectContext.vASFDemux);	}	*duration = DetectContext.Duration;	return RM_OK;}struct parse_avi_context {	RMaviPushHandle pAvi;	RMbool packed;	RMuint32 version;	RMuint32 build;};#define PARSE_AVI_BUF_SIZE 4096static void avi_demux_callback (RMuint8 chunkid[4], RMuint8 *chunk, RMuint32 chunkLength, RMuint32 flags, void *context){	RMuint32 i;	struct parse_avi_context *pContext = (struct parse_avi_context*)context;	if ((chunkid[2] == 'd') && ((chunkid[3] == 'c') || (chunkid[3] == 'b'))){		//RMDBGLOG((ENABLE, "video chunk, size %lu\n", chunkLength));		if (chunkLength > 3) {			for (i = 0; i < chunkLength - 3; i++) {				if ((chunk[i] == 'D') &&				    (chunk[i+1] == 'i') &&				    (chunk[i+2] == 'v') &&				    (chunk[i+3] == 'X')) {					int parsed, build, version;					char packed;					RMuint32 j = 0;					RMDBGPRINT((ENABLE, "\n"));					while((chunk[i+j] >= 32) && (chunk[i+j] <= 126)) {						RMDBGPRINT((ENABLE, "%c", chunk[i+j]));						j++;					}					RMDBGPRINT((ENABLE, "\n"));										parsed = sscanf((char *)&chunk[i], "DivX%dBuild%d%c", &version, &build, &packed);					if (parsed < 2)						parsed = sscanf((char *)&chunk[i], "DivX%db%d%c", &version, &build, &packed);					if ((parsed == 3) && (packed == 'p')) {						pContext->packed = TRUE;					}					pContext->version = (RMuint32)version;					pContext->build = (RMuint32)build;					RMDBGLOG((ENABLE, "parsed %lu, version %lu, build %lu, packed '%c'\n", (RMuint32)parsed, (RMuint32)version, (RMuint32)build, packed));				}			}		}	}			else if ((chunkid[2] == 'w') && (chunkid[3] == 'b')){		RMDBGLOG((DISABLE, "audio, size %lu\n", chunkLength));	}}static RMstatus parse_avi(RMfile fileHandle, struct parse_avi_context *avi_info){       	RMuint8 buf[PARSE_AVI_BUF_SIZE];	RMuint32 parsed_bytes = 0, max_parsed_bytes;	RMuint32 buf_size = PARSE_AVI_BUF_SIZE;	RMuint32 movi_offset, movi_size;		RMstatus err = RM_OK;	RMDBGLOG((ENABLE, "enter parse_avi\n"));	err = RMAviPushOpenExternal(fileHandle, &(avi_info->pAvi));	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error opening avi file\n"));		goto exit;	}	err = RMAviPushGetMoviOffset(avi_info->pAvi, &movi_offset);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get movi offset\n"));		goto exit;	}	err = RMAviPushGetMoviSize(avi_info->pAvi, &movi_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get movi size\n"));		goto exit;	}	err = RMSeekFile(fileHandle, movi_offset, RM_FILE_SEEK_START);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error seeking file to movi\n"));		goto exit;	}		RMAviPushInitDemuxMovi (avi_info->pAvi, avi_demux_callback, NULL);	max_parsed_bytes = RMmin(1024*1024, movi_size/4);	while(parsed_bytes < max_parsed_bytes){		RMuint32 count;		err = RMReadFile(fileHandle, buf, buf_size, &count);		if (RMFAILED(err)) {			break;		}		RMAviPushDemuxMovi(avi_info->pAvi, buf, count, (void*)avi_info);		parsed_bytes += count;			} exit:	if (avi_info->pAvi != NULL) {		err = RMAviPushClose(avi_info->pAvi);		avi_info->pAvi = NULL;	}	RMDBGLOG((ENABLE, "exit parse_avi\n"));	return err;	return RM_OK;}RMstatus rfp_open_file(struct mono_info *app_params, struct rfp_stream_info *stream_info, struct rfp_file *pfile){	/* the passed *stream_info could be NULL...  */	struct rfp_stream_info stream_info_loc;	struct playback_cmdline *play_opt = app_params->play_opt;	pfile->file = (RMfile) NULL;	if(stream_info == NULL){		stream_info = &stream_info_loc;	}	stream_info->system_type = RM_SYSTEM_UNKNOWN;	stream_info->audio_type = eAudioFormat_UNKNOWN;	stream_info->video_type = RM_VIDEO_UNKNOWN;	/* #### Begin CARDEA code #### */	{		if ( find_cardea_url(play_opt->filename) != NULL ) {			RMDBGLOG((ENABLE, "Playing cardea file, skip detection ... (only ASF supported).\n"));			stream_info->system_type = RM_SYSTEM_ASF;			return RM_OK;		}	}	/* #### End CARDEA code #### */	/* open the stream */	pfile->file = open_stream(play_opt->filename, RM_FILE_OPEN_READ, &app_params->stream_opts);	if (pfile->file == NULL) {		RMDBGLOG((ENABLE, "Cannot open file %s\n", play_opt->filename));		goto open_error;	}	return RM_OK; open_error:	rfp_close_file(pfile);	return RM_ERROR;}RMstatus rfp_close_file(struct rfp_file *pfile){	if (pfile->file)		RMCloseFile(pfile->file);	return RM_OK;}RMstatus rfp_detect(struct mono_info *app_params, 		    struct rfp_detect_options *detect_opt,		    enum rfp_application *app,		    struct rfp_stream_info *stream_info){	struct rfp_file rfpfile;	RMstatus err;	/* the passed *stream_info could be NULL...  */	struct rfp_stream_info stream_info_loc;#ifndef NDEBUG	struct playback_cmdline *play_opt = app_params->play_opt;#endif	if(stream_info == NULL){		stream_info = &stream_info_loc;	}	err = rfp_open_file(app_params, stream_info, &rfpfile);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot open File %s\n", play_opt->filename));		return err;	}		if (stream_info->system_type == RM_SYSTEM_ASF) {		*app = get_app_from_stream_info(stream_info);		/* In this case file is not open */		err = RM_OK;	}	else {		err = rfp_detect_open_file(rfpfile.file, app_params, detect_opt, app, stream_info);		if (RMFAILED(err)) {			RMDBGLOG((ENABLE, "Cannot detect file %s\n", play_opt->filename));		}				err = rfp_close_file(&rfpfile);		if (RMFAILED(err)) {			RMDBGLOG((ENABLE, "Cannot close file %s\n", play_opt->filename));		}	}		return err;	}RMstatus rfp_detect_open_file(RMfile file, 			      struct mono_info *app_params, 			      struct rfp_detect_options *detect_opt,			      enum rfp_application *app,			      struct rfp_stream_info *stream_info){	RMstatus err;	RMdetectorHandle detector = NULL;	RMFDetector_type type;	RMuint32 frequency = 0, channel_count = 0, bitrate = 0;	RMint64 file_size = 0;	RMbool detected;	RMint32 error = 0;	struct playback_cmdline *play_opt = app_params->play_opt;	struct video_cmdline *video_opt = app_params->video_opt;	struct audio_cmdline *audio_opt = app_params->audio_opt;	struct demux_cmdline *demux_opt = app_params->demux_opt;			/* give the stream and the filename to the detector */	detector = RMFDetectorCreate();	RMDBGLOG((LOCALDBG, "Created detector handle\n"));	RMFDetectOnOpenFile(detector, play_opt->filename, file,  &type);			switch(type){	case DETECTOR_AUDIO:		fprintf(stderr, "audio\n");		err = RMSizeOfOpenFile(file, &file_size);		if(RMFAILED(err)) {			RMDBGLOG((ENABLE, "Cannot get size of file %s\n", play_opt->filename));		}		/* this works because the detector has not been reset */		{			struct RM_Detection_Specific_Info specificInfo;			eAudioFormat_type detectedAudioType;			err = RMFGetDetectedAudioType(detector, &detectedAudioType);			if (err != RM_OK) {				RMDBGLOG((ENABLE, "error getting detected audio type\n"));			}			err = RMFGetAudioSpecificInfo(detector, detectedAudioType, &specificInfo);			if (err != RM_OK) {				RMDBGLOG((ENABLE, "error getting specific information!\n"));				ERROR_CLEANUP(-1);			}			switch (specificInfo.audioType) {			case eAudioFormat_PCM:				RMDBGLOG((ENABLE, "PCM\n"));				bitrate = specificInfo.data.wave.bitrate;				frequency = specificInfo.data.wave.sampleRate;				channel_count = specificInfo.data.wave.channels;				audio_opt->skip_first_n_bytes = specificInfo.data.wave.payloadOffset;				audio_opt->send_n_bytes = specificInfo.data.wave.payloadLength;				audio_opt->PcmCdaParams.BitsPerSample = specificInfo.data.wave.bitsPerSample; /*bitrate/(frequency*channel_count);*/				if(audio_opt->PcmCdaParams.BitsPerSample <=8)					audio_opt->SignedPCM = FALSE; 								audio_opt->SubCodec = 0;				/* if the detector could tell it is PCM, it must be from a WAVE file */				audio_opt->PcmCdaParams.MsbFirst = FALSE;				switch(channel_count){				case 1:					audio_opt->PcmCdaParams.ChannelAssign = PcmCda1_C;					audio_opt->OutputDualMode = DualMode_MixMono;					break;				case 2:					audio_opt->PcmCdaParams.ChannelAssign = PcmCda2_LR;					audio_opt->OutputDualMode = DualMode_Stereo;					break;				}				break;			case eAudioFormat_AC3:				RMDBGLOG((ENABLE, "AC3\n"));								bitrate = specificInfo.data.ac3.bitrate;				frequency = specificInfo.data.ac3.sampleRate;				channel_count = specificInfo.data.ac3.channels;				break;			case eAudioFormat_DTS:				RMDBGLOG((ENABLE, "DTS\n"));								bitrate = specificInfo.data.dts.bitrate;				frequency = specificInfo.data.dts.sampleRate;				channel_count = specificInfo.data.dts.channels;				break;			case eAudioFormat_MPEG1:			case eAudioFormat_MPEG2_LAYER1:			case eAudioFormat_MPEG2:			case eAudioFormat_MPEG2_LAYER2:			case eAudioFormat_MPEG1_LAYER3:			case eAudioFormat_MPEG2_LAYER3:				RMDBGLOG((ENABLE, "MPEG\n"));								if (!specificInfo.data.mpegAudio.isVBR)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕电影一区| 亚洲免费观看在线视频| 91麻豆蜜桃一区二区三区| 日韩高清不卡一区二区三区| 欧美国产视频在线| 91精品国产欧美一区二区 | 日本韩国欧美一区二区三区| 黑人精品欧美一区二区蜜桃| 一区二区久久久| 欧美国产精品v| 欧美成人伊人久久综合网| 欧美综合一区二区| 成人亚洲一区二区一| 久久草av在线| 亚洲成a人v欧美综合天堂 | 亚洲永久免费av| 国产精品久久久久久久久免费樱桃 | 久久机这里只有精品| 一区二区欧美精品| 亚洲人成在线播放网站岛国| 中文字幕的久久| 久久精品一区蜜桃臀影院| 日韩精品中文字幕一区| 欧美日本一区二区| 在线亚洲免费视频| 色成年激情久久综合| av在线播放不卡| 高清成人免费视频| 国产精品中文字幕一区二区三区| 日本网站在线观看一区二区三区| 午夜视频一区在线观看| 亚洲成av人片观看| 亚洲bt欧美bt精品777| 亚洲另类在线视频| 亚洲六月丁香色婷婷综合久久 | 秋霞电影一区二区| 日韩电影在线一区| 蜜臀av亚洲一区中文字幕| 肉色丝袜一区二区| 日本欧美一区二区三区乱码| 免费成人在线视频观看| 六月丁香婷婷色狠狠久久| 蜜桃av一区二区三区| 久久er99精品| 国产乱码精品一区二区三区五月婷| 国内精品久久久久影院薰衣草| 久草在线在线精品观看| 狠狠网亚洲精品| 成人免费毛片片v| 95精品视频在线| 日本久久一区二区| 欧美日韩免费一区二区三区| 欧美日韩国产一级片| 欧美福利一区二区| 日韩一级视频免费观看在线| 久久综合av免费| 中文在线免费一区三区高中清不卡| 国产女主播在线一区二区| 国产精品国产精品国产专区不蜜 | 亚洲欧美另类久久久精品2019| 亚洲人123区| 亚洲高清中文字幕| 久久精品二区亚洲w码| 懂色av一区二区三区免费观看| 91小视频在线观看| 欧美人与禽zozo性伦| 精品盗摄一区二区三区| 国产精品久久久久久久久免费相片| 亚洲国产成人在线| 一区二区三区毛片| 玖玖九九国产精品| 国产精品一区三区| 在线观看国产一区二区| 日韩美女在线视频| ㊣最新国产の精品bt伙计久久| 手机精品视频在线观看| 国产一二三精品| 91福利资源站| 精品国产乱码久久久久久久| 亚洲色欲色欲www在线观看| 日本成人在线看| 91免费版在线| 日韩精品一区二区三区视频播放 | 99精品桃花视频在线观看| 欧美三级韩国三级日本一级| 久久久国产精华| 亚洲一区二区不卡免费| 国产在线视频一区二区三区| 一本色道久久综合亚洲aⅴ蜜桃 | 国产亚洲午夜高清国产拍精品| 一区二区三区在线免费播放| 久久69国产一区二区蜜臀| 色8久久人人97超碰香蕉987| 久久免费精品国产久精品久久久久| 一区二区国产视频| 高清在线观看日韩| 日韩一区二区影院| 亚洲一区二区综合| 国产成+人+日韩+欧美+亚洲| 欧美日韩精品二区第二页| 国产午夜精品美女毛片视频| 日本亚洲三级在线| 在线视频一区二区三区| 久久精品人人做人人爽人人| 日韩 欧美一区二区三区| 91首页免费视频| 久久久国产精品午夜一区ai换脸| 青青草成人在线观看| 一本一道久久a久久精品综合蜜臀| 久久蜜臀中文字幕| 美女网站色91| 5858s免费视频成人| 亚洲精品亚洲人成人网| 成人av电影在线网| 国产色综合一区| 国产一区二区三区久久悠悠色av| 欧美日韩免费一区二区三区 | jlzzjlzz亚洲女人18| 精品国产制服丝袜高跟| 日韩精品电影一区亚洲| 在线视频欧美区| 亚洲精品日韩一| av电影天堂一区二区在线| 精品国产1区2区3区| 蜜臀久久99精品久久久久宅男| 欧美裸体一区二区三区| 夜夜嗨av一区二区三区四季av| 91麻豆免费视频| 亚洲精品va在线观看| 日本精品一区二区三区高清 | a亚洲天堂av| 国产精品水嫩水嫩| eeuss国产一区二区三区| 欧美激情中文字幕一区二区| 国产sm精品调教视频网站| 国产亚洲精品aa午夜观看| 国产精品一区二区你懂的| 久久久99免费| 成人三级伦理片| 国产精品免费aⅴ片在线观看| 菠萝蜜视频在线观看一区| 国产精品乱码久久久久久| 成人综合在线网站| 中文字幕在线不卡一区| 91老师片黄在线观看| 一区二区三区不卡视频在线观看| 欧美私人免费视频| 午夜电影一区二区三区| 欧美一级夜夜爽| 狠狠色丁香九九婷婷综合五月| 26uuu亚洲婷婷狠狠天堂| 风间由美中文字幕在线看视频国产欧美 | 67194成人在线观看| 久久99国产乱子伦精品免费| 久久一二三国产| 99久久精品国产麻豆演员表| 亚洲欧美偷拍三级| 欧美日韩国产另类一区| 毛片基地黄久久久久久天堂| xnxx国产精品| 色综合一个色综合| 日日摸夜夜添夜夜添精品视频| 精品国产第一区二区三区观看体验 | 亚洲卡通动漫在线| 91精品国产入口在线| 国产91精品一区二区麻豆亚洲| 亚洲蜜臀av乱码久久精品| 欧美精品久久一区二区三区| 国产综合久久久久久鬼色 | 午夜精品视频在线观看| 日韩亚洲欧美成人一区| 国产99久久精品| 亚洲第一精品在线| 久久午夜电影网| 91福利在线播放| 看电视剧不卡顿的网站| 亚洲视频电影在线| 日韩欧美精品三级| 色网综合在线观看| 久久精品久久久精品美女| 亚洲色欲色欲www| 欧美videossexotv100| 波多野结衣亚洲一区| 婷婷中文字幕综合| 欧美激情在线观看视频免费| 欧美日韩免费观看一区三区| 国产成人综合网| 日本特黄久久久高潮| 综合久久久久久久| 欧美成人激情免费网| 欧洲av在线精品| 国产成人av影院| 麻豆专区一区二区三区四区五区| 国产精品伦理在线| 欧美mv日韩mv| 在线不卡的av| 在线观看av一区二区| 高清av一区二区| 精品午夜一区二区三区在线观看| 一区二区三区高清不卡|