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

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

?? fileplayer.cpp

?? sigmadesign smp8623 gui source code ,bingo
?? CPP
?? 第 1 頁 / 共 4 頁
字號:
						break;					}				} else if(m_streamType == RMStreamInfoIsType_AVI) {					if(m_aviInfo.audioStreams > 1) {						status = RMInsertLastCoreQueue(remote_cmd_queue, (void *) KEY_CMD_CYCLE_AUDIO);						if(status != RM_OK)							break;						break;					}				}				asf_get_audio_stream_count(&nbAudioStreams);				RMDBGLOG((ENABLE, "number of streams %d, want to switch to %ld\n", nbAudioStreams, *(RMuint32*)val));				// get current				asf_get_current_audio_stream(&selectedAudioStream);				RMDBGLOG((ENABLE, "current stream %d\n", selectedAudioStream));				if(nbAudioStreams > 1){					if(val != NULL){						audioStream = *(RMuint32*)val;						if(audioStream >= (RMuint32)nbAudioStreams){								return RM_ERROR;						}						else{							// set next							audioStream = (selectedAudioStream == nbAudioStreams ? 1 : (selectedAudioStream + 1));						}						RMDBGLOG((ENABLE, "Switching audio stream %lu -> %lu\n", selectedAudioStream, audioStream));						status = RMInsertLastCoreQueue(remote_cmd_queue, (void *) KEY_CMD_CHANGE_AUDIO);						if(status != RM_OK)							break;						status = RMInsertLastCoreQueue(remote_param_queue, (void *) audioStream);						if(status != RM_OK)							break;						SendMessage(CURACAO_MESSAGE_AUDIOSTREAM_CHANGE, &audioStream);					}				}				else{					RMDBGLOG((ENABLE, "Cannot switch audio stream : only one audio stream.\n"));				}				break;			}			case RM_HW_NEXT_TRACK:				if(m_streamType == RMStreamInfoIsType_MPEG4) {					if(m_mp4Info.isNero) {						status = RMInsertLastCoreQueue(remote_cmd_queue, (void *) KEY_CMD_NERO_NEXT_CHAPTER);						if(status != RM_OK)							break;					}				}				break;			case RM_HW_PREV_TRACK:				if(m_streamType == RMStreamInfoIsType_MPEG4) {					if(m_mp4Info.isNero) {						status = RMInsertLastCoreQueue(remote_cmd_queue, (void *) KEY_CMD_NERO_PREV_CHAPTER);						if(status != RM_OK)							break;					}				}				break;			case RM_HW_SUB_TITLE:				if(m_streamType == RMStreamInfoIsType_MPEG4) {					// check here if memory is available for the spu as well					if(m_mp4Info.spuStreams >= 1 && osd_subt.pSPU_double_buffer_source) {						m_subpictureStream = (m_subpictureStream < m_mp4Info.spuStreams ? m_subpictureStream + 1 : 0);						status = RMInsertLastCoreQueue(remote_cmd_queue, (void *) KEY_CMD_NERO_CYCLE_SUBTITLE);						if(status != RM_OK)							break;						SendMessage(CURACAO_MESSAGE_SUBTITLESTREAM_CHANGE, &m_subpictureStream);						break;					}				}				break;			default:				status = RM_ERROR;				break;		}	}	}	else		status = RM_OK;	return status;}void* SubtThreadEntry(void *p){	RMfilePlayer * fileplayer = (RMfilePlayer *)p;	struct RUA *pRua = context.gui->m_pRua;//(RUA*) context.decoder->GetRUAInstance();	timespec time;//	RMuint64 n = 0;//	RMuint16 m = 0;//	while(fileplayer	typeMediaPlayerSate state;//	state = context.player->GetState();	time.tv_sec = (RMuint32)0;    time.tv_nsec = ((RMuint32)1000 % 1000000) * 1000;//	time.tv_sec = 1;//	time.tv_nsec = 1000 000 000;	printf("enter\n");	printf("use time :%d\n", (RMuint16) subs.data->sub_uses_time);	while(1){    	nanosleep(&time, NULL);		state = context.player->GetState();		if((state == STATE_PLAY) || (state == STATE_STEP) || (state == STATE_PAUSE) || (state == STATE_FAST_FORWARD) ||				(state == STATE_FAST_REWIND) || (state == STATE_SLOW_FORWARD)) {				if(state == STATE_PAUSE || subs.osd == TRUE)					continue;				else if(((RMem86xxDecoder*)(context.decoder))->m_pStcSource && fileplayer) {					RMuint64 timeframe;					RMuint32 tir;					RMstatus status;					status = DCCSTCGetTimeResolution(((RMem86xxDecoder*)(context.decoder))->m_pStcSource, DCC_Video, &tir);					if(status == RM_OK)						status = DCCSTCGetTime(((RMem86xxDecoder*)(context.decoder))->m_pStcSource, &timeframe, tir);					else						continue;				// = context.decoder->GetTimeDisplayedFrame(fileplayer->m_sampletype, &timeframe);					if(RMSUCCEEDED(status)) {						if(tir != 0 ){							if(subs.data->sub_uses_time)								timeframe *= 100;							subtitle* old = subs.vo_sub;							if(subs.data->sub_uses_time)							{			//					printf("time: %lu\n", (RMuint32) (timeframe/tir));								find_sub(subs.data, (RMint32) (timeframe /tir));							}							else							{								//ugly hack but should work								if(tir == 24000)									find_sub(subs.data, (RMint32) (timeframe / 1001));								else									find_sub(subs.data, (RMint32) (timeframe / 1000));							}							if((state == STATE_FAST_FORWARD) || (state == STATE_FAST_REWIND) || (state == STATE_SLOW_FORWARD)) {								find_sub(subs.data, (RMint32) (-1));								DrawSubtitles(pRua);							} else if(old != subs.vo_sub) {								DrawSubtitles(pRua);							}						}					}				}				else					continue;			}			else			{				find_sub(subs.data, (RMint32) (-1));				DrawSubtitles(pRua);				if(subs.data)				{					sub_free(subs.data);					subs.data = NULL;				}				printf("endplay\n");				break;			}		}	printf("leave\n");	return NULL;}void* PlaybackThreadEntry(void* p){#ifndef USE_SAME_THREAD	{//		struct timespec usleep_req = { 0, 100000000 };//		nanosleep(&usleep_req, 0);	}#endif	timespec usleep_req = { 2, 0 };	RMstatus err;	struct mono_info app_params;	struct player_options player_conf;	RMuint8 channels;	enum OutputSpdif_type mode;	RMfilePlayer * fileplayer = (RMfilePlayer *)p;	usleep_req.tv_sec = (RMuint32)0;	usleep_req.tv_nsec = ((RMuint32)100000 % 1000000) * 1000;	app_params.pRUA = (RUA *) context.decoder->GetRUAInstance();	app_params.pDCC = (DCC *) context.decoder->GetDCCInstance();	app_params.play_opt = &play_opt;	app_params.video_opt = &video_opt;	app_params.audio_opt = &audio_opt;	app_params.demux_opt = &demux_opt;	app_params.video_scaler = 0;	app_params.osd_scaler = 0;	player_conf.forceSD = FALSE;#ifdef WITH_DALLAS_DEMUX // dallas demux has problems playing mpeg files	player_conf.use_hwdemux = FALSE;#else	player_conf.use_hwdemux = TRUE;#endif	player_conf.use_avi_push = TRUE;	context.decoder->GetAudioOutputChannels(&channels);	// set wanted audio channels for some formats -- will be ignored if not applicable	audio_opt.WmaParams.OutputChannels = (channels == 6 ? Wmapro_6 : Wmapro_2);	audio_opt.Ac3Params.OutputLfe = (channels == 6 ? TRUE : FALSE);	audio_opt.Ac3Params.OutputChannels = (channels == 6 ? Ac3_LCRLsRs : Ac3_LR);//	audio_opt.AACParams.OutputChannels = (channels == 6 ? Aac_LCRLsRs : Aac_LR);	app_params.audio_opt->OutputChannels = (channels == 6 ? Audio_Out_Ch_LCRLsRs : Audio_Out_Ch_LR);	app_params.audio_opt->OutputChannelsExplicitAssign = TRUE;	RMDBGLOG((ENABLE, "Output Channels %s\n", channels == 6 ? "5.1" : "2"));	play_opt.video_delay_ms = 1000;	play_opt.audio_delay_ms = 1000;	if(context.gui->IsTv())	{		play_opt.start_ms = 1; //false set for delay this is sign to double MPEG TS check	}	else	{		play_opt.start_ms = 0;	}	video_opt.fifo_size = 4096 * 1024;	audio_opt.fifo_size = 4096 * 1024;	// set wanted spdif mode	context.decoder->GetSpdifMode(&mode);	audio_opt.Spdif = mode;	// init stream info	fileplayer->SetStreamInfo(NULL);//	context.gui->BeginWaitCursor();	start_leak();	err = play_file(&app_params, &player_conf);//	context.gui->EndWaitCursor();		printf("waiting for release of lock\n");	if(RMFAILED(err)){		RMDBGLOG((ENABLE, "Could not play file %d\n", err));		sleep(2);//#ifdef __ERRHANDLE		fileplayer->FlagDiscError();//#endif	}	((RMem86xxDecoder *) context.decoder)->ResetDCCLeaveDisplay();	context.decoder->ResetDCCInfo();	//end_leak();	fileplayer->SetEOS();	if(g_subthread)	{		struct timespec usleep_req = { 0, 100000000 };				RMWaitForThreadToFinish(g_subthread);				nanosleep(&usleep_req, 0);				g_subthread = NULL;	}//	end_leak((void*)"rmmmimplementation");	return NULL;}//#ifdef __ERRHANDLEvoid RMfilePlayer::FlagDiscError() {	SendMessage(CURACAO_MESSAGE_FILE_ERROR, NULL);}//#endifRMstatus RMfilePlayer::Open(RMascii *name){	RMstatus status = RM_ERROR;//	RMascii filename[512];//	RMascii** files;	m_eos = FALSE;	if(!m_initialized){		RMDBGLOG((FILEPLAYERDBG, "Open() : Already open or not initialized\n"));		return RM_ERROR;	}	init_playback_options(&play_opt);	init_video_options(&video_opt);	init_audio_options(&audio_opt);	static RMascii path[1024];	RMCopyAscii(path, name);	play_opt.filename = path;	RMDBGLOG((FILEPLAYERDBG, "About to Play %s\n", play_opt.filename));	m_stop_pending = FALSE;	m_about_to_play = TRUE;	RMASSERT(g_thread == NULL);	g_thread = RMCreateThread("PlaybackThread", PlaybackThreadEntry, this);	if(g_thread == NULL)		return RM_ERROR;//	fileplayer->SetSampleType();//	if(fileplayer->m_sampletype == VIDEO_SAMPLE)	{		timespec time;//		RMuint32 picture_rate = 0;//		RUAGetProperty(context.decoder->GetRUAInstance(), ((RMem86xxDecoder*)(context.decoder))->m_video_decoder, RMVideoDecoderPropertyID_FrameRate, &picture_rate, sizeof(RMuint32));		time.tv_sec = (RMuint32)300000 / 1000000;    	time.tv_nsec = ((RMuint32)300000 % 1000000) * 1000;    	nanosleep(&time, NULL);			RMuint32 tir = 0;			if(((RMem86xxDecoder*)(context.decoder))->m_pStcSource)				status = DCCSTCGetTimeResolution(((RMem86xxDecoder*)(context.decoder))->m_pStcSource, DCC_Video, &tir);			if(tir && RMSUCCEEDED(status))			{				printf("SUBTITLE TIME %lu\n", tir);				//files = sub_filenames(path, path);				//printf("SUBTITLE FILE %s\n", files[0]);				if(subs.subs_path)				{					tir /= 1000;					subs.data = sub_read_file(subs.subs_path, tir);					if(subs.data){						printf("SUBTITLE FILE %p %lu\n", subs.data, subs.data->sub_num);						RMASSERT(g_subthread == NULL);						g_subthread = RMCreateThread("SubThread", SubtThreadEntry, this);							//		if(g_subthread == NULL)							//			return RM_ERROR;					}//					int i = 0;//					do//					{//						RFREE(files[i]);//						files[i] = NULL;//					}while(files[++i] != 0);				}//				RFREE(files);			}	}	status = RM_OK;	return status;}void RMfilePlayer::SetEOS(){	printf("set eos\n");	m_eos = TRUE;	m_about_to_play = FALSE;	m_stop_pending = FALSE;}void RMfilePlayer::SetSampleType(){	RMuint64 time;	// attempt to use audio sample otherwise video sample	m_sampletype = VIDEO_SAMPLE;	if(RMFAILED(m_context->decoder->GetTimeDisplayedFrame(m_sampletype, &time)))		m_sampletype = AUDIO_SAMPLE;}RMstatus RMfilePlayer::Close(){	return Close(FALSE);}RMstatus RMfilePlayer::Close(RMbool playNextFile){	RMstatus status = RM_OK;#ifndef WITH_MONO	if(!m_initialized || !m_fileOpen){		RMDBGLOG((FILEPLAYERDBG, "Close() : Not open or not initialized\n"));		return RM_ERROR;	}	if(GetState() != STATE_STOP) {		status = RMFStopFile(m_ctrl_file);		if(status == RM_OK)			SetState(STATE_STOP, 0);	}	status = m_context->decoder->Close();	m_fileOpen = FALSE;#else // WITH_MONO	if(GetState() == STATE_CLOSE) {		RMDBGLOG((FILEPLAYERDBG, "Close() : Not open\n"));		// happens when user stops before the file actually gets played		if(m_about_to_play) {			m_about_to_play = FALSE;			m_stop_pending = TRUE;		}		if(m_stop_pending) {			return RM_ERROR_QUEUE_COMMAND;		} else			return RM_OK;	}	if(GetState() != STATE_STOP) {		status = InterpretCommand(RM_HW_STOP, NULL);		if(status != RM_OK) {			return RM_ERROR_QUEUE_COMMAND;		}	}#ifndef USE_SAME_THREAD	if (g_thread) {		RMWaitForThreadToFinish(g_thread);		g_thread = NULL;	}#endif	if (osd_subt.pSPU_double_buffer_source) {		RMDBGLOG((ENABLE, "close doubleBufferOSD\n"));		status = RMCloseSPU();		if (RMFAILED(status)) {			RMDBGLOG((ENABLE, "Cannot close SPU doubleBuffer source %d\n", status));		}	}#endif // WITH_MONO	m_stop_pending = FALSE;	RMDBGLOG((FILEPLAYERDBG, "Closing fileplayer\n"));	printf("alabala\n");	SetState(STATE_CLOSE, (void*) &playNextFile);	printf("alabala\n");	RMDBGLOG((FILEPLAYERDBG, "Fileplayer closed\n"));	m_eos = FALSE;	return status;}void RMfilePlayer::ProcessData(){#ifndef WITH_MONO	if(m_eos){		RMbool playNextFile = TRUE;		//m_context->gui->SendKey(RM_HW_STOP);		InterpretCommand(RM_HW_STOP, (void*)&playNextFile);		m_eos = FALSE;	}//	RMDBGLOG((ENABLE, "In process data (to = %lu)\n", m_context->remoteTimeout));#else	if(m_eos){		printf("EOS\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人亚洲综合a∨猫咪| 久久综合色之久久综合| 日韩一区二区三区电影在线观看| 国产亚洲欧美中文| 天天影视网天天综合色在线播放 | 亚洲色图另类专区| 国产综合色在线| 欧美精品乱码久久久久久按摩| 国产午夜精品一区二区三区视频| 日韩一区精品字幕| 在线日韩国产精品| 中文字幕一区二区三区不卡 | 麻豆一区二区99久久久久| 成人精品视频一区二区三区尤物| 国产亚洲一区二区三区四区| 亚洲国产乱码最新视频| a美女胸又www黄视频久久| 精品国产不卡一区二区三区| 三级成人在线视频| 欧美日韩一区二区电影| 亚洲欧美日韩在线播放| eeuss鲁片一区二区三区在线看| 精品久久久久香蕉网| 麻豆精品视频在线观看免费 | 99热99精品| 中文字幕永久在线不卡| 成人免费看黄yyy456| 国产三级欧美三级| 国产精品18久久久久| 久久久久国产成人精品亚洲午夜| 国产尤物一区二区| 久久久天堂av| 成人精品小蝌蚪| 国产精品理论片| 91在线观看成人| 亚洲欧美电影一区二区| 91福利视频在线| 亚欧色一区w666天堂| 91精品国产综合久久福利| 视频在线观看一区| 日韩精品一区二区三区在线播放| 欧美aⅴ一区二区三区视频| 日韩欧美一二三四区| 精品中文字幕一区二区| 欧美精彩视频一区二区三区| www.欧美.com| 亚洲午夜私人影院| 精品日本一线二线三线不卡| 国产高清不卡一区| 亚洲免费看黄网站| 日韩欧美你懂的| 国产成人av电影在线观看| 欧美国产日韩一二三区| 91福利在线观看| 久久精品国产第一区二区三区| 国产无人区一区二区三区| 91蜜桃免费观看视频| 青青草成人在线观看| 日本一区二区三区在线观看| 色婷婷精品久久二区二区蜜臂av| 日韩高清一区在线| 国产精品视频yy9299一区| 欧洲视频一区二区| 久久精品噜噜噜成人88aⅴ| 中文字幕不卡的av| 69av一区二区三区| 成人美女在线视频| 日日摸夜夜添夜夜添亚洲女人| 久久综合九色综合久久久精品综合| 91亚洲国产成人精品一区二三| 亚洲va中文字幕| 国产精品私房写真福利视频| 666欧美在线视频| 91在线视频网址| 九一九一国产精品| 亚洲成人免费看| 亚洲欧美在线视频观看| 91精品国产色综合久久ai换脸 | 国产suv精品一区二区三区| 亚洲亚洲精品在线观看| 国产欧美一区二区精品婷婷| 91精品国产美女浴室洗澡无遮挡| 处破女av一区二区| 韩国毛片一区二区三区| 婷婷综合另类小说色区| 国产精品传媒视频| 久久久久久久综合| 日韩一区二区三区在线| 在线观看亚洲一区| 99精品欧美一区二区三区小说 | 欧美aⅴ一区二区三区视频| 亚洲色图在线播放| 国产精品久久久久天堂| 久久这里只精品最新地址| 91精品国产日韩91久久久久久| 色香色香欲天天天影视综合网| 成人免费高清视频在线观看| 精品一区二区三区香蕉蜜桃| 视频一区视频二区中文字幕| 亚洲永久免费av| 日韩美女视频一区二区| 欧美经典一区二区| 国产欧美一区二区三区网站| 精品久久国产字幕高潮| 日韩欧美成人一区二区| 这里是久久伊人| 制服丝袜国产精品| 欧美电影影音先锋| 制服丝袜在线91| 91精品久久久久久久99蜜桃 | 欧美视频中文字幕| 欧美性大战久久久| 精品视频在线免费观看| 欧美久久久久久蜜桃| 欧美日韩精品免费| 欧美一级在线视频| 精品日韩在线一区| 欧美经典一区二区| 亚洲欧洲日韩女同| 夜夜精品视频一区二区| 亚洲福利一区二区| 日韩电影在线免费看| 美女网站色91| 国产乱码精品一区二区三| 豆国产96在线|亚洲| 99精品国产91久久久久久| 日本伦理一区二区| 91精品蜜臀在线一区尤物| 亚洲精品一区二区三区精华液 | 另类综合日韩欧美亚洲| 久久黄色级2电影| 国产成人免费在线视频| 99久久免费国产| 欧美日韩免费视频| 精品国产乱码久久久久久久久| 欧美经典一区二区三区| 亚洲精选视频在线| 日本美女视频一区二区| 极品少妇xxxx精品少妇| 99国产精品国产精品久久| 欧美日韩在线免费视频| 日韩一区二区三区观看| 国产精品卡一卡二卡三| 亚洲mv在线观看| 国产麻豆精品在线观看| 91久久精品午夜一区二区| 欧美一级欧美一级在线播放| 国产日韩欧美精品综合| 亚洲国产精品久久久久婷婷884| 麻豆成人av在线| 色一情一乱一乱一91av| 日韩精品在线一区| 亚洲激情图片小说视频| 激情av综合网| 欧美日韩国产高清一区二区三区| 久久这里只有精品视频网| 一区二区免费在线| 国产一区 二区 三区一级| 91蝌蚪porny九色| 精品成人a区在线观看| 亚洲精选视频免费看| 国产精品123区| 欧美精品在线一区二区三区| 国产午夜精品在线观看| 日本欧美在线看| 色中色一区二区| 精品久久人人做人人爽| 亚洲h在线观看| 91亚洲精华国产精华精华液| 26uuu亚洲综合色| 日韩av电影免费观看高清完整版 | 久久视频一区二区| 日韩在线观看一区二区| 9色porny自拍视频一区二区| 精品第一国产综合精品aⅴ| 亚洲国产成人tv| av电影天堂一区二区在线观看| 亚洲精品在线观看视频| 日韩成人一级片| 欧美区视频在线观看| 一区二区三区蜜桃| 91免费小视频| 亚洲欧美另类在线| 成人黄色在线看| 欧美激情一区三区| 国产激情偷乱视频一区二区三区| 欧美一区二区三区在线电影| 亚洲123区在线观看| 欧美怡红院视频| 亚洲一卡二卡三卡四卡无卡久久| 95精品视频在线| 亚洲品质自拍视频网站| 99久久久精品| 亚洲精品国产品国语在线app| 91社区在线播放| 亚洲黄色av一区| 在线国产电影不卡| 亚洲成人高清在线| 在线播放中文一区| 日本怡春院一区二区|