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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? play_video.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* * * Copyright (c) Sigma Designs, Inc. 2002. All rights reserved. * *//**	@file dcc_demo.c	@brief sample application to access the Mambo chip and test DMA transfers		@author Julien Soulier   	@ingroup dccsamplecode*//*  ****************************************************************************************  This file is part of libsamples library, therefore no static variables should be defined  *****************************************************************************************/#include "sample_os.h"//#define SEND_IBC#define ALLOW_OS_CODE 1#include "../dcc/include/dcc.h"#include "../rmlibcw/include/rmfile.h"#include "common.h"#include "bcc.h"#define COMMON_TIMEOUT_US    (TIMEOUT_10MS)#define DMA_BUFFER_SIZE_LOG2 15#define DMA_BUFFER_COUNT     32#define REPACK_SIZE (4096)#define VIDEO_FIFO_SIZE (1024*1024)#define XFER_FIFO_COUNT (1024) // 32#define KEYFLAGS (SET_KEY_DISPLAY | SET_KEY_PLAYBACK | SET_KEY_DEBUG)#define ALLOW_OS_CODE 1#define MAXHEADERSIZE 4095#define RM_DEVICES_STC 0x1#define RM_DEVICES_VIDEO 0x2#define DEBUG	ENABLE#define START_IN_IFRAME_MODE 0#ifdef	SEND_IBC#define HARDCODE_BYTECOUNT	0x100000#endif#if 0#define SENDDBG ENABLE#else#define SENDDBG DISABLE#endif#define ENABLE_MONITOR 0#define FORCE_IFRAME_FWD_COMMAND 1/* 0 the decoder will remember the seqHeader,    1 we must store it locally and resend it (trickmodes not supported) */#define STORE_SEQ_HEADER_LOCALLY 0 struct video_context {	struct RUABufferPool *pDMA;	RMbool FirstSystemTimeStamp;	RMuint32 FirstPTS;	struct dcc_context *dcc_info;	struct RM_PSM_Context *PSMcontext;	RMfile f_bitstream;	RMint64 fileSize;	RMbool video_decoder_initialized;	RMbool initVideo;	RMbool trickMode;	RMbool iframeMode;	RMbool ResyncTimer;	RMuint64 lastSTC;	RMuint64 lastVideoPTS;	RMuint64 lastDecoded;	RMbool highSpeedIFrameMode;	RMuint32 highSpeedIFrameSpeed;	RMbool bcc_enabled;	struct bcc *pbcc;	RMuint32 prebuf_level;	RMuint32 byte_counter;	RMbool monitor;	RMuint32 bitrate;	RMuint64 meanBitrate;	RMuint32 meanCount;	RMuint64 last_video_pts;	RMuint32 NTimes;	struct timeval last;	struct playback_cmdline *play_opt;	struct video_cmdline *video_opt;	struct display_cmdline *disp_opt;	void **dmabuffer_array;	RMuint32 dmabuffer_index;};#define GET_DATA_FIFO_INFO(pRUA, ModuleId)				\	{								\		struct DataFIFOInfo DataFIFOInfo;			\		RMreal fullness;					\		RUAGetProperty(pRUA, ModuleId, RMGenericPropertyID_DataFIFOInfo, &DataFIFOInfo, sizeof(DataFIFOInfo)); \		fullness = (RMreal)((100./DataFIFOInfo.Size)*DataFIFOInfo.Readable); \		fprintf(stderr, "Data %lx: st=%08lx sz=%ld wr=%ld rd=%ld --> f : %.02f\n", ModuleId, DataFIFOInfo.StartAddress,	\			DataFIFOInfo.Size, DataFIFOInfo.Writable,  DataFIFOInfo.Readable, fullness); \	}								\#define GET_XFER_FIFO_INFO(pRUA, ModuleId)				\	{								\		struct XferFIFOInfo_type XferFIFOInfo;			\		RMreal fullness;					\		RUAGetProperty(pRUA, ModuleId, RMGenericPropertyID_XferFIFOInfo, &XferFIFOInfo, sizeof(XferFIFOInfo)); \		fullness = (RMreal)((100./XferFIFOInfo.Size)*XferFIFOInfo.Readable); \		fprintf(stderr, "XFER %lx: st=%08lx sz=%ld wr=%ld rd=%ld er=%lx --> f : %.02f	\n", ModuleId, XferFIFOInfo.StartAddress, \			XferFIFOInfo.Size, XferFIFOInfo.Writable,  XferFIFOInfo.Readable, XferFIFOInfo.Erasable, fullness); \	}#define MONITOR_INTERVAL_US 250000static void monitor(struct video_context *context, RMbool alwaysShow){		/* the bitrate reading of this probe is accurate only if the blocking call is RUASendData */	struct timeval now;		static int first = 1;	RMuint64 elapsed; 		RMuint64 ptime; 		struct dcc_context *dcc_info = context->dcc_info;	gettimeofday(&now, NULL);	elapsed = (now.tv_sec - context->last.tv_sec) * 1000000;			elapsed += (now.tv_usec - context->last.tv_usec);	if (elapsed > MONITOR_INTERVAL_US || first || alwaysShow){		RMuint64 bitrate = (RMuint64)context->bitrate * 1000000;		bitrate /= elapsed;		context->meanBitrate += bitrate;		context->meanCount++;		DCCSTCGetTime(dcc_info->pStcSource, &ptime, 90000);					fprintf(stderr, "\n*****************************\n");					fprintf(stderr, "STC = %llu (%llu secs)\n", ptime, (ptime/90000));		/* sample code to get fifo info */		fprintf(stderr, "Video :\n"); 					GET_DATA_FIFO_INFO(dcc_info->pRUA, dcc_info->video_decoder);		GET_XFER_FIFO_INFO(dcc_info->pRUA, dcc_info->video_decoder);					fprintf(stderr, "bitrate: mean %llu bit/sec, pseudo-instantaneus %llu bit/sec (%lu bytes/%llu us)\n", 			context->meanBitrate / context->meanCount,			bitrate, 			context->bitrate >> 3, 			elapsed);		fprintf(stderr, "*****************************\n");					gettimeofday(&context->last, NULL);		first = 0;		context->bitrate = 0;		fflush(stderr);			}					        	return;}static RMuint32 trickBuffersToSend = 0;static RMuint32 trickSizeToSend = 0;static RMuint32 trickBuffersSent = 0;static struct RM_PSM_Actions actions;#define PROCESS_KEY(release, getkey)					\do	{								\		RMDBGLOG((DISABLE, "process_key\n"));			\		if (getkey) {						\		        FSMstate = RM_PSM_GetState(context.PSMcontext, &(context.dcc_info));			\                        if ((FSMstate == RM_PSM_Stopped) || (FSMstate == RM_PSM_Paused)) {			\			        switch (context.play_opt->disk_ctrl_state) {						\			        case DISK_CONTROL_STATE_DISABLE:						\			        case DISK_CONTROL_STATE_SLEEPING:						\				        break;									\			        case DISK_CONTROL_STATE_RUNNING:						\						if(context.play_opt->disk_ctrl_callback && context.play_opt->disk_ctrl_callback(DISK_CONTROL_ACTION_SLEEP) == RM_OK) \					        context.play_opt->disk_ctrl_state = DISK_CONTROL_STATE_SLEEPING;	\				        break;									\			        }										\		        }						\			err = process_command(context.PSMcontext, &(context.dcc_info), &actions); \			if (RMFAILED(err)) {				\				fprintf(stderr, "Error while processing key %d\n", err); \				goto cleanup;				\			}						\		}							\		if (((RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_Slow) || \		     (RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_Fast) || \		     (RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_NextPic)) && \		    (actions.cmdProcessed) && (!context.trickMode)) {	\			RMDBGLOG((ENABLE, ">> trick mode\n"));		\			if (release) {					\				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\			context.trickMode = TRUE;			\			context.FirstSystemTimeStamp = TRUE;		\		}							\		if (actions.toDoActions & RM_PSM_FLUSH_VIDEO) {		\			RMDBGLOG((ENABLE, "flushVIDEO\n"));		\			Stop(&context, RM_DEVICES_VIDEO);		\			context.video_decoder_initialized = FALSE;	\			context.initVideo = TRUE;			\			actions.toDoActions &= ~RM_PSM_FLUSH_VIDEO;	\		}							\		if (actions.toDoActions & RM_PSM_FIRST_PTS) {		\			RMDBGLOG((ENABLE, "firstPTS\n"));		\			context.FirstSystemTimeStamp = TRUE;		\			actions.toDoActions &= ~RM_PSM_FIRST_PTS;	\		}							\		if (actions.toDoActions & RM_PSM_RESYNC_TIMER) {	\			RMDBGLOG((ENABLE, "resyncTimer\n"));		\			context.ResyncTimer = TRUE;			\			SyncTimerWithDecoderPTS(&context);		\			actions.toDoActions &= ~RM_PSM_RESYNC_TIMER;	\		}							\		if (actions.performedActions & RM_PSM_VIDEO_STOPPED) {	\			RMDBGLOG((ENABLE, "video stopped\n"));		\			context.video_decoder_initialized = FALSE;	\			context.initVideo = TRUE;			\			actions.performedActions &= ~RM_PSM_VIDEO_STOPPED; \			/* needed for no dram copy version on standalone */ \			err = RUAResetPool(pDMA);			\			if (RMFAILED(err)) {				\				RMDBGLOG((ENABLE, "Error cannot reset dmapool\n")); \				goto cleanup;				\			}						\		}							\		if (actions.performedActions & RM_PSM_STC_STOPPED) {	\			RMDBGLOG((ENABLE, "stc stopped\n"));		\			actions.performedActions &= ~RM_PSM_STC_STOPPED; \		}							\		if (actions.toDoActions & RM_PSM_DEMUX_IFRAME) {	\			RMDBGLOG((ENABLE, "demuxIFrame\n"));		\			Play(&context, RM_DEVICES_VIDEO, DCCVideoPlayIFrame); \			context.iframeMode = TRUE;			\			actions.toDoActions &= ~RM_PSM_DEMUX_IFRAME;	\		}							\		if (actions.toDoActions & RM_PSM_DEMUX_NORMAL) {	\			RMDBGLOG((ENABLE, "demuxNormal\n"));		\			context.iframeMode = FALSE;			\			RMDBGLOG((ENABLE, "flushing fifos\n")); \			Stop(&context, RM_DEVICES_VIDEO);		\			context.video_decoder_initialized = FALSE;	\			context.initVideo = TRUE;			\			Play(&context, RM_DEVICES_VIDEO, DCCVideoPlayFwd); \			context.highSpeedIFrameMode = FALSE;		\			actions.toDoActions &= ~RM_PSM_DEMUX_NORMAL;	\		}							\		if ((RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_Playing) && \		    (context.trickMode))	{			\			RMDBGLOG((ENABLE, "got play after trickmode\n")); \			if (release) {					\				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\			context.trickMode = FALSE;			\		}							\		if ((RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_Stopped) && (actions.cmdProcessed)) { \			RMDBGLOG((ENABLE,"Got stop command\n"));	\			if (release) {					\				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\			context.trickMode = FALSE;			\			context.iframeMode = FALSE;			\			context.highSpeedIFrameMode = FALSE;		\			context.video_decoder_initialized = FALSE;	\			context.initVideo = TRUE;			\			context.byte_counter = 0;			\			goto mainloop_no_seek;				\		}							\		if ((actions.cmd == RM_QUIT) && (!actions.cmdProcessed)) { \			RMDBGLOG((ENABLE, "Got quit command\n"));	\			if (release) {					\				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\			goto cleanup;					\		}							\		if ((actions.cmd == RM_STOP_SEEK_ZERO) && (!actions.cmdProcessed)) { \			RMDBGLOG((ENABLE,"Got stop seek zero command\n")); \			Stop(&context, RM_DEVICES_VIDEO | RM_DEVICES_STC); \			RM_PSM_SetState(context.PSMcontext, &(context.dcc_info), RM_PSM_Stopped); \			if (release) {					\				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\			context.trickMode = FALSE;			\			context.iframeMode = FALSE;			\			context.highSpeedIFrameMode = FALSE;		\			context.video_decoder_initialized = FALSE;	\			/*context.initVideo = TRUE;*/			\			goto mainloop;					\		}							\		if ((actions.cmd == RM_SEEK) && (!actions.cmdProcessed)){ \			RMDBGLOG((ENABLE,"Got seek command\n"));	\			if (release) {					\				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\			if (dcc_info.seek_supported)			\				seek(&context, context.dcc_info->seek_time); \			else						\				fprintf(stderr, "Unsuported command\n"); \			context.trickMode = FALSE;			\			context.iframeMode = FALSE;			\			context.highSpeedIFrameMode = FALSE;		\			RM_PSM_SetState(context.PSMcontext, &(context.dcc_info), RM_PSM_Playing); \			goto mainloop_no_seek;				\		}							\		computeSpeed(&context);					\		if (context.monitor)					\			monitor(&context, FALSE);			\} while(0)static RMstatus SyncTimerWithDecoderPTS(struct video_context *pSendContext){	RMuint64 stc;	RMuint32 timeScale;	RMuint64 currentSTC;	RMstatus err;		err = RUAGetProperty(pSendContext->dcc_info->pRUA, pSendContext->dcc_info->SurfaceID, RMGenericPropertyID_CurrentDisplayPTS, &stc, sizeof(stc));	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get video PTS\n"));		return err;	}		DCCSTCGetTimeResolution(pSendContext->dcc_info->pStcSource, DCC_Video, &timeScale);		if (timeScale == 90000)		stc *= 2;		DCCSTCGetTime(pSendContext->dcc_info->pStcSource, &currentSTC, timeScale);		RMDBGLOG((ENABLE, "resync STC(%llu) to %llu, timeScale %lu\n", currentSTC, stc, timeScale));		DCCSTCSetTime(pSendContext->dcc_info->pStcSource, stc, timeScale);		pSendContext->ResyncTimer = FALSE;		return RM_OK;} static RMstatus computeSpeed(struct video_context *pSendContext);static RMuint64 round_int_div(RMuint64 numerator, RMuint32 divisor) {	RMuint64 temp;	temp = numerator / divisor;	if ((numerator % divisor) * 2 > divisor)		temp++;	return temp;}#ifndef WITH_MONOstatic void show_usage(char *progname){	show_playback_options();	show_display_options();	show_video_options();	fprintf(stderr, "--------------------------------\n");	fprintf(stderr, "Minimum cmd line: %s <file name>\n", progname);	fprintf(stderr, "--------------------------------\n");	exit(1);}static void parse_cmdline(struct video_context *pSendContext, int argc, char *argv[]){	int i;	RMstatus err;	if (argc < 2) 		show_usage(argv[0]);		i = 1;	while ((argc > i)) {		if (argv[i][0] != '-') {			if (pSendContext->play_opt->filename == NULL) {				pSendContext->play_opt->filename = argv[i];

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区在线精品| 国产在线精品国自产拍免费| 欧美草草影院在线视频| 91九色最新地址| 91麻豆高清视频| 国产精品性做久久久久久| 日本va欧美va欧美va精品| 亚洲国产精品自拍| 亚洲国产日韩av| 五月天亚洲婷婷| 天天射综合影视| 日韩电影免费一区| 日本在线不卡视频| 亚洲1区2区3区视频| 天天色天天操综合| 奇米色一区二区| 蜜桃91丨九色丨蝌蚪91桃色| 美腿丝袜亚洲综合| 国产一区二区三区在线观看精品| 国产精品亚洲视频| 国产伦精一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 国产成人无遮挡在线视频| 国产成人免费av在线| 国产在线播精品第三| av亚洲精华国产精华精华 | 91精品免费在线| 日韩一区二区三区免费看| 精品国免费一区二区三区| 不卡的av在线播放| 欧美精彩视频一区二区三区| 国产欧美综合色| 亚洲欧美视频在线观看视频| 亚洲主播在线观看| 激情小说欧美图片| 91在线视频播放地址| 91精品在线一区二区| 国产精品三级视频| 日韩国产精品久久久| 国产精华液一区二区三区| 色综合天天综合狠狠| 欧美日韩国产在线观看| 精品国产欧美一区二区| 亚洲精品免费播放| 国产一区二区不卡在线| 欧美最新大片在线看| 亚洲国产精品99久久久久久久久| 五月天丁香久久| 成人妖精视频yjsp地址| 欧美军同video69gay| 亚洲色图19p| 国产一区二区精品久久91| 欧美日韩一区在线| 欧美丝袜丝交足nylons| 午夜激情一区二区| 91猫先生在线| 久久久久久免费| 香蕉影视欧美成人| 一本一本大道香蕉久在线精品| 欧美一级生活片| 一区二区三区四区五区视频在线观看 | 国产精品一级在线| 欧美日韩亚洲综合在线| 亚洲欧美自拍偷拍色图| 国产麻豆精品一区二区| 欧美高清一级片在线| 一区二区三区四区五区视频在线观看| 国产精品夜夜嗨| 欧美精品一区二区在线播放| 天堂精品中文字幕在线| 欧美熟乱第一页| 成人免费毛片片v| 色哟哟精品一区| 中文字幕一区av| 麻豆免费看一区二区三区| 色8久久人人97超碰香蕉987| 国产午夜亚洲精品午夜鲁丝片| 午夜精品福利一区二区三区蜜桃| 99视频精品在线| 中文字幕一区二| av影院午夜一区| 国产精品天美传媒| 国产成人啪免费观看软件 | 666欧美在线视频| 一区二区三区四区在线| 成人一级片网址| 欧美国产禁国产网站cc| 成人福利视频在线| 国产精品国产精品国产专区不蜜| 久久av中文字幕片| 久久影院视频免费| 久久不见久久见免费视频7| 日韩vs国产vs欧美| 精品欧美久久久| 中文字幕在线观看不卡| 国产一区二区在线观看免费| 日韩一级在线观看| 精品久久人人做人人爽| 一区二区国产视频| 欧美日韩日日摸| 男女视频一区二区| 精品国产91九色蝌蚪| 国产精品一区一区| 国产调教视频一区| 色综合天天做天天爱| 亚洲伦理在线精品| 51精品视频一区二区三区| 久久超碰97人人做人人爱| 91精品国产一区二区人妖| 国产激情视频一区二区在线观看| 国产精品久久国产精麻豆99网站| 在线观看www91| 天天色天天爱天天射综合| 国产在线精品一区二区不卡了 | 青草国产精品久久久久久| 欧美精品久久一区二区三区| 寂寞少妇一区二区三区| 亚洲精品视频在线观看网站| 91精品国产欧美一区二区成人 | 欧美在线不卡视频| 一区二区成人在线视频 | 国产亚洲成av人在线观看导航| 国内精品在线播放| 在线观看亚洲精品| 日韩欧美成人激情| 99久久久免费精品国产一区二区| 在线观看国产一区二区| 国产精品美女久久久久aⅴ| 色欧美片视频在线观看| 樱花影视一区二区| 国产精品人妖ts系列视频| 欧美成人女星排名| 欧美伦理电影网| 成人v精品蜜桃久久一区| 亚洲午夜精品在线| 亚洲精品一区二区三区蜜桃下载| 一区二区三区精品视频| 日韩三级免费观看| 中文字幕视频一区| 精品99一区二区| 一本到不卡免费一区二区| 国产精品久久久久久久浪潮网站| 日韩午夜在线观看视频| 色狠狠一区二区三区香蕉| 国产美女娇喘av呻吟久久| 美女在线视频一区| 91精品在线免费| 一区二区三区鲁丝不卡| 欧美日韩dvd在线观看| 日韩二区三区四区| 91久久国产最好的精华液| 自拍偷拍亚洲欧美日韩| 国产成人丝袜美腿| 五月天丁香久久| 国产精品日韩成人| 在线综合+亚洲+欧美中文字幕| 欧美日韩精品一区二区天天拍小说| 久久成人久久爱| 国产一级精品在线| 国产精品99久久久久久有的能看 | 日韩欧美在线一区二区三区| 99视频有精品| 国产精品一级在线| 日本大胆欧美人术艺术动态| 丝袜a∨在线一区二区三区不卡| 国产欧美日韩在线视频| 91精品国产一区二区三区香蕉| 成人永久免费视频| 亚洲国产精品一区二区尤物区| 欧美日韩精品一区二区天天拍小说 | 日韩精品亚洲专区| 亚洲欧美激情视频在线观看一区二区三区| 欧美在线免费观看亚洲| 国产成人av电影| 91蝌蚪porny| 欧美日韩成人综合在线一区二区| 91.xcao| 久久亚洲精华国产精华液| 国产精品国产三级国产专播品爱网| 亚洲天堂网中文字| 日韩中文字幕区一区有砖一区| 亚洲色图制服丝袜| 奇米综合一区二区三区精品视频| 国产精品白丝在线| 中文字幕日韩一区| 欧美日韩精品三区| 日韩欧美国产麻豆| 婷婷中文字幕综合| 国产在线一区二区综合免费视频| 精品黑人一区二区三区久久| 亚洲综合偷拍欧美一区色| 日韩视频不卡中文| 成人亚洲一区二区一| 91免费看视频| 国内久久婷婷综合| 国产成人免费9x9x人网站视频| 亚洲欧美一区二区三区久本道91| 欧美性猛片xxxx免费看久爱| 欧美日韩色一区| 久久免费视频一区|