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

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

?? play_vdemux.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*/// utilizing mono so the main function can easily be attached as a thread function// assuming software demux support only one demux task#include <pthread.h>#include "sample_os.h"#define ENABLE_SPU_OP 1#define ALLOW_OS_CODE 1#include "../dcc/include/dcc.h"#include "../dcc/src/dcc_common.h"#include "common.h"#include "psfdemux_common.h"#include "play_psfdemux_helper.h"#include "main_apps.h"#include "../rmvdemux/include/rmvdemuxapi.h"#include "play_vdemux.h"#define PTS_DISCONTINUITY_DETECTION	/* defined for files with pts discontinuities */#define GETBUFFER_TIMEOUT_US (TIMEOUT_10MS)#define SENDDATA_TIMEOUT_US  (TIMEOUT_10MS)#define DMA_BUFFER_SIZE_LOG2 15#define DMA_BUFFER_COUNT     32#define REPACK_SIZE (4096)#define VIDEO_FIFO_SIZE (1792*1024)#define AUDIO_FIFO_SIZE (128*1024)#define SPU_FIFO_SIZE   (256*1024)#define XFER_FIFO_COUNT (32)#define VIDEO_PTS_FIFO_COUNT (512) /* ~8 sec fifo for 60 frames/sec */#define VIDEO_INBAND_FIFO_COUNT (16)#define RM_DEVICES_STC 0x1#define RM_DEVICES_VIDEO 0x2#define RM_DEVICES_AUDIO 0x4#define KEYFLAGS (SET_KEY_DISPLAY | SET_KEY_PLAYBACK | SET_KEY_AUDIO | SET_KEY_DEBUG)#define PTS_DISCONTINUITY_RANGE	0x20000	// ~1.4sec#if 0  #define SENDDBG ENABLE#else  #define SENDDBG DISABLE#endif#if 0#define KEYDBG ENABLE#else#define KEYDBG DISABLE#endif#define WAIT_KEY()						\{								\	RMascii key;						\	fprintf(stderr, "press key to continue\n");	        \	while ( !(RMGetKeyNoWait(&key)) );			\}							#define GET_XFER_FIFO_INFO(pRUA, ModuleId)										\{															\	struct XferFIFOInfo_type XferFIFOInfo;										\	fprintf(stderr, "( %lx: 0x%08lx %ld %ld %ld %ld ) ", ModuleId, XferFIFOInfo.StartAddress,          		\		    XferFIFOInfo.Size, XferFIFOInfo.Writable,  XferFIFOInfo.Readable, XferFIFOInfo.Erasable);		\	RUAGetProperty(pRUA, ModuleId, RMGenericPropertyID_XferFIFOInfo, &XferFIFOInfo, sizeof(XferFIFOInfo));		\}														// copy from dcc_multiple_audio.cstruct DCCMultipleAudioSource {	struct RUA *pRUA;	struct DCC *pDCC;	RMuint32 instances;  //number of decoders opened	struct DCCAudioSourceHandle AudioSourceHandles[MAX_AUDIO_DECODER_INSTANCES];	RMuint32 nextInstance;};// hardcode the thread filename for now//char alt_filename[] = "/media/transport/mpeg2/svt1.ts";RMascii alt_filename[2048] = { 0, };// software demux thread idpthread_t software_demux_tid;RMbool software_demux_in_action;RMuint64 start_time_stamp;RMuint64 start_file_position;// mirror the task variables from static struct context_per_task  *Tasks;static RMuint32 task_count;static RMuint32 output_count_per_task;// software demux keeps its own copy of dcc_info// while command line options structures are shared with the hardware demux modulestatic struct dcc_context dcc_info = {0,};extern RMbool manutest; // should be removedstatic RMbool enable_spu = FALSE;static RMuint32 NTimes = 0;static RMuint32 file_offset = 0;static RMuint32 trickBuffersToSend = 0;static RMuint32 trickSizeToSend = 0;static RMuint32 trickBuffersSent = 0;static struct playback_cmdline *play_opt;static struct video_cmdline *video_opt;static struct audio_cmdline *audio_opt;static struct demux_cmdline *demux_opt;static RMuint32 manutest_res = 0;static struct display_cmdline *disp_opt;struct demux_context {	struct RUA *pRUA;	struct RUABufferPool *pDMA;	RMbool FirstSystemTimeStamp;	RMbool ResumeFromTrickMode;	RMuint32 audio_byte_counter;	RMuint32 video_byte_counter;	RMbool repack_sample;	RMuint8 *audio_repack_buf;	RMuint8 *video_repack_buf;	RMuint8 *spu_repack_buf;	RMuint32 audio_repack_offset;	RMuint32 video_repack_offset;	RMuint32 spu_repack_offset;	RMuint32 audio_repack_size;	RMuint32 video_repack_size;	RMuint32 spu_repack_size;	RMuint64 audio_repack_pts;	RMuint64 video_repack_pts;	RMuint64 spu_repack_pts;	RMbool audio_repack_pts_valid;	RMbool video_repack_pts_valid;	RMbool spu_repack_pts_valid;	RMbool enable_spu;	struct dcc_context *dcc_info;	struct RM_PSM_Context   *PSMcontext;	RMbool isTrickMode;	RMbool isIFrameMode;	RMbool initVideo;	RMbool initAudio;	RMbool waitForValidAudioPTS;	RMbool waitForValidVideoPTS;	RMuint32 cmd;	RMuint32 audio_first_access_unit_pointer;	// a value of 0 is invalid - see DVD VI.5.2.4	RMbool audio_first_access_unit_pointer_valid;		RMuint32 start_90khz;	RMint64 file_size;	// test user data receive	struct ReceiveObject_type *pReceive;	struct RUABufferPool *pDmaUserData;	struct RUAEvent EventUserData;	FILE *f_record;	RMuint32 f_record_size;	RMbool ignoreCallback;	RMbool fakePrevPts;	RMuint32 prebufferedBytes;	RMint64 realFirstPTS;};static RMstatus SyncTimerWithDecoderPTS(struct demux_context *pSendContext);#define REPACK_AUDIO  1#define REPACK_VIDEO  2#define REPACK_SPU    4#define REPACK_ALL    7static void release_repacked_buffers(void *context, RMuint32 flag){	struct demux_context *pSendContext = (struct demux_context *) context;		if ((flag & REPACK_VIDEO) & (pSendContext->video_repack_buf != NULL)) {		RUAReleaseBuffer(pSendContext->pDMA, pSendContext->video_repack_buf);		pSendContext->video_repack_buf = (RMuint8 *) NULL;		pSendContext->video_repack_offset = 0;		pSendContext->video_repack_size = 0;		pSendContext->video_repack_pts = 0;		pSendContext->video_repack_pts_valid = FALSE;	}	if ((flag & REPACK_AUDIO) && (pSendContext->audio_repack_buf != NULL)) {		RUAReleaseBuffer(pSendContext->pDMA, pSendContext->audio_repack_buf);		pSendContext->audio_repack_buf = (RMuint8 *) NULL;		pSendContext->audio_repack_offset = 0;		pSendContext->audio_repack_size = 0;		pSendContext->audio_repack_pts = 0;		pSendContext->audio_repack_pts_valid = FALSE;	}	if ((flag & REPACK_SPU) && (pSendContext->spu_repack_buf != NULL)) {		RUAReleaseBuffer(pSendContext->pDMA, pSendContext->spu_repack_buf);			pSendContext->spu_repack_buf = (RMuint8 *) NULL;		pSendContext->spu_repack_offset = 0;		pSendContext->spu_repack_size = 0;		pSendContext->spu_repack_pts = 0;		pSendContext->spu_repack_pts_valid = FALSE;	}}static struct RM_PSM_Actions actions;#define PROCESS_KEY(release, getkey)					\do {								        \	RMDBGLOG((KEYDBG, "processkey(%lu, %lu)\n", release, getkey));		\	if (getkey) {							\		PlaybackStatus = RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)); \		if ((PlaybackStatus == RM_PSM_Stopped) || (PlaybackStatus == RM_PSM_Paused)) { \			switch (play_opt->disk_ctrl_state) {		\			case DISK_CONTROL_STATE_DISABLE:		\			case DISK_CONTROL_STATE_SLEEPING:		\				break;					\			case DISK_CONTROL_STATE_RUNNING:		\				if(play_opt->disk_ctrl_callback && play_opt->disk_ctrl_callback(DISK_CONTROL_ACTION_SLEEP) == RM_OK) \					play_opt->disk_ctrl_state = DISK_CONTROL_STATE_SLEEPING; \				break;					\			}						\		}							\		err = process_command(&PSMContext, &(context.dcc_info), &actions); \		if (RMFAILED(err)) {					\			fprintf(stderr, "Error processing key %d\n", err); \			goto cleanup;					\		}							\	}								\	if (actions.toDoActions & RM_PSM_FLUSH_VIDEO) {			\		RMDBGLOG((ENABLE, "flushVIDEO\n"));			\		Stop(&context, RM_DEVICES_VIDEO, DCCStopMode_LastFrame); \		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.performedActions & RM_PSM_VIDEO_STOPPED) {		\		RMDBGLOG((ENABLE, "video stopped\n"));			\		context.initVideo = TRUE;				\		actions.performedActions &= ~RM_PSM_VIDEO_STOPPED;	\	}								\	if (actions.performedActions & RM_PSM_AUDIO_STOPPED) {		\		RMDBGLOG((ENABLE, "audio stopped\n"));			\		if (release) {						\			if (context.repack_sample) {			\				RMDBGLOG((ENABLE, "release audio buffers\n")); \				release_repacked_buffers(&context, REPACK_AUDIO); \			}						\			else  {						\				RMDBGLOG((ENABLE, "release a buffer\n")); \				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\		}							\		context.initAudio = TRUE;				\		context.waitForValidAudioPTS = TRUE;			\		actions.performedActions &= ~RM_PSM_AUDIO_STOPPED;	\	}								\	if ((actions.cmd == RM_QUIT) && (!actions.cmdProcessed)) {	\		RMDBGLOG((ENABLE, "quit\n"));				\		actions.cmdProcessed = TRUE;				\		if (manutest == TRUE)                                   \		        manutest_res = RM_QUIT;                         \		if (release) {						\			if (context.repack_sample) {			\				RMDBGLOG((ENABLE, "release audio buffers\n")); \				release_repacked_buffers(&context, REPACK_ALL); \			}						\			else  {						\				RMDBGLOG((ENABLE, "release a buffer\n")); \				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\		}							\		goto cleanup;						\	}								\	if ((manutest == TRUE) && (actions.cmd == RM_MANU_QUIT_OK) && (!actions.cmdProcessed)) { \		if (manutest == TRUE)                                   \		        manutest_res = RM_MANU_QUIT_OK;                 \		if (release) {						\			if (context.repack_sample) {			\				RMDBGLOG((ENABLE, "release audio buffers\n")); \				release_repacked_buffers(&context, REPACK_ALL); \			}						\			else  {						\				RMDBGLOG((ENABLE, "release a buffer\n")); \				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\		}							\		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.isTrickMode)) {		\		RMDBGLOG((ENABLE, ">> trick mode all frames\n"));	\		context.isTrickMode = TRUE;				\	}								\	if ((RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_Playing) && \	    (context.isTrickMode) &&					\	    (actions.cmdProcessed)) {					\		RMDBGLOG((ENABLE, ">> resume from trickmode\n"));	\		context.isTrickMode = FALSE;				\	}								\	if (actions.toDoActions & RM_PSM_DEMUX_NORMAL) {		\		RMDBGLOG((ENABLE, "demuxNormal\n"));			\		context.isTrickMode = FALSE;				\		Play(&context, RM_DEVICES_VIDEO, DCCVideoPlayFwd);	\		actions.toDoActions &= ~RM_PSM_DEMUX_NORMAL;		\	}								\	if (actions.toDoActions & RM_PSM_DEMUX_IFRAME) {		\		RMDBGLOG((ENABLE, "demuxIFrame\n"));			\		Play(&context, RM_DEVICES_VIDEO | RM_DEVICES_STC, DCCVideoPlayIFrame);	\		context.isIFrameMode = TRUE;				\		if (context.ignoreCallback)				\			context.ignoreCallback = FALSE;			\		actions.toDoActions &= ~RM_PSM_DEMUX_IFRAME;		\	}								\	if (actions.toDoActions & RM_PSM_RESYNC_TIMER) {		\		RMDBGLOG((ENABLE, "resyncTimer\n"));			\		SyncTimerWithDecoderPTS(&context);			\		actions.toDoActions &= ~RM_PSM_RESYNC_TIMER;		\	}								\	if ((RM_PSM_GetState(context.PSMcontext, &(context.dcc_info)) == RM_PSM_Stopped) && (actions.cmdProcessed)) { \		RMDBGLOG((ENABLE,"Got stop command\n"));		\		if (release) {						\			if (context.repack_sample) {			\				RMDBGLOG((ENABLE, "release audio buffers\n")); \				release_repacked_buffers(&context, REPACK_ALL); \			}						\			else  {						\				RMDBGLOG((ENABLE, "release a buffer\n")); \				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\		}							\		context.isIFrameMode = FALSE;				\		context.FirstSystemTimeStamp = TRUE;			\		goto mainloop_no_seek;					\	}								\	if ((actions.cmd == RM_STOP_SEEK_ZERO) && (!actions.cmdProcessed)) {	\		RMDBGLOG((ENABLE,"Got stop seek zero command\n"));	\		Stop(&context, RM_DEVICES_VIDEO | RM_DEVICES_AUDIO | RM_DEVICES_STC, DCCStopMode_BlackFrame); \		RM_PSM_SetState(context.PSMcontext, &(context.dcc_info), RM_PSM_Stopped); \		context.isIFrameMode = FALSE;				\		context.FirstSystemTimeStamp = TRUE;				\		actions.cmdProcessed = TRUE;				\		if (release) {						\			if (context.repack_sample) {			\				RMDBGLOG((ENABLE, "release audio buffers\n")); \				release_repacked_buffers(&context, REPACK_ALL); \			}						\			else  {						\				RMDBGLOG((ENABLE, "release a buffer\n")); \				RUAReleaseBuffer(pDMA, buf);		\				buf = NULL;				\			}						\		}							\		goto mainloop;						\	}								\	if ((actions.cmd == RM_SEEK) && (!actions.cmdProcessed)) {	\		RMDBGLOG((ENABLE, "got seek command\n"));		\

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网址在线看| 精品国产电影一区二区| 精品久久久久久久一区二区蜜臀| 国产精品久久一卡二卡| 天堂精品中文字幕在线| 91视频国产资源| 欧美经典一区二区| 奇米色777欧美一区二区| 99精品国产99久久久久久白柏| 精品久久久久一区二区国产| 亚洲sss视频在线视频| 91免费国产视频网站| 国产欧美日韩中文久久| 韩国精品主播一区二区在线观看| 欧美日精品一区视频| 亚洲久本草在线中文字幕| 成人免费视频免费观看| 国产亚洲福利社区一区| 蜜臀av国产精品久久久久| 88在线观看91蜜桃国自产| 亚洲一区二区免费视频| 色婷婷久久久综合中文字幕| 中文字幕一区二区三区乱码在线| 国产a精品视频| 亚洲国产岛国毛片在线| 国产精品白丝jk黑袜喷水| 亚洲精品一区二区三区福利| 久久国产精品无码网站| 精品国产乱子伦一区| 极品瑜伽女神91| 精品国产不卡一区二区三区| 久久99久国产精品黄毛片色诱| 日韩欧美电影在线| 久久精品国产999大香线蕉| 欧美大度的电影原声| 另类综合日韩欧美亚洲| 26uuu欧美| 成人国产亚洲欧美成人综合网| 国产精品久久久久久亚洲伦| 色综合久久九月婷婷色综合| 亚洲最色的网站| 91精品国产91热久久久做人人| 全国精品久久少妇| 久久综合九色综合97婷婷女人| 国产精品一区二区视频| 欧美激情一区二区| 一本色道**综合亚洲精品蜜桃冫| 亚洲一区二区三区爽爽爽爽爽| 制服.丝袜.亚洲.中文.综合| 麻豆91免费看| 欧美激情综合五月色丁香小说| 91免费精品国自产拍在线不卡 | 久久99精品国产.久久久久久| 日韩你懂的在线观看| 国产福利一区二区三区视频| 亚洲视频一区二区在线观看| 欧美精品乱码久久久久久按摩 | 午夜视频一区在线观看| 精品三级在线观看| 91在线观看下载| 天堂蜜桃91精品| 中文字幕精品一区| 欧美日本韩国一区二区三区视频| 麻豆91免费看| 亚洲卡通欧美制服中文| 日韩三级中文字幕| 99免费精品在线| 久久99国产精品免费| 亚洲天堂精品视频| 精品美女一区二区三区| 91在线无精精品入口| 美国十次了思思久久精品导航| 一色桃子久久精品亚洲| 日韩精品中文字幕在线不卡尤物| 91片在线免费观看| 久草热8精品视频在线观看| 一区二区欧美国产| 久久精品人人做人人综合| 欧美私模裸体表演在线观看| 国产精品乡下勾搭老头1| 丝袜美腿一区二区三区| 亚洲图片欧美激情| 欧美国产日韩在线观看| 精品少妇一区二区| 9191国产精品| 欧美性大战久久| av在线免费不卡| 国产精品一区二区久激情瑜伽| 日韩国产一二三区| 亚洲夂夂婷婷色拍ww47| 另类专区欧美蜜桃臀第一页| 不卡高清视频专区| 视频一区二区国产| 一卡二卡欧美日韩| 国产精品国产三级国产aⅴ入口 | 91猫先生在线| 成人综合激情网| 久久疯狂做爰流白浆xx| 免费一区二区视频| 亚洲国产综合91精品麻豆 | 国产午夜精品一区二区三区四区 | 六月丁香综合在线视频| 天堂成人国产精品一区| 亚洲va国产va欧美va观看| 亚洲一区免费观看| 一区二区欧美国产| 亚洲一区二区三区美女| 亚洲成人久久影院| 亚洲va欧美va人人爽午夜| 不卡的av电影| 国产美女视频91| 久久精品免费观看| 激情五月婷婷综合网| 免费观看日韩av| 老鸭窝一区二区久久精品| 老司机精品视频一区二区三区| 日韩国产欧美一区二区三区| 日韩二区三区在线观看| 麻豆精品一二三| 国产乱子轮精品视频| 国产91在线观看| 成年人国产精品| 色激情天天射综合网| 欧美色倩网站大全免费| 91精品久久久久久久99蜜桃 | 在线欧美一区二区| 欧美日韩另类一区| 欧美一区二区三区婷婷月色| 欧美一二三在线| 2023国产精品自拍| 国产精品久久二区二区| 亚洲欧美自拍偷拍色图| 91成人在线免费观看| 精品亚洲欧美一区| 国产成人午夜精品影院观看视频 | 91精品国产一区二区三区| 日韩欧美国产成人一区二区| 国产日产欧产精品推荐色| 中文字幕亚洲视频| 日韩电影一区二区三区四区| 国模少妇一区二区三区| 色婷婷av一区二区三区gif| 欧美日本乱大交xxxxx| 国产亚洲福利社区一区| 亚洲卡通动漫在线| 激情六月婷婷久久| 91蝌蚪porny九色| 4438x成人网最大色成网站| 国产日韩视频一区二区三区| 亚洲精品v日韩精品| 国产自产v一区二区三区c| 91女厕偷拍女厕偷拍高清| 国产激情一区二区三区| 国内精品国产三级国产a久久| 国产酒店精品激情| 日本精品一区二区三区四区的功能| 欧美日韩不卡在线| 国产欧美日产一区| 日韩av一区二区三区四区| 成人网页在线观看| 日韩欧美国产三级| 一区二区三区不卡视频| 国产.欧美.日韩| 91精品国产欧美日韩| 国产精品久久久久永久免费观看 | 高清国产一区二区| 欧美精品日韩一区| 亚洲精品中文字幕在线观看| 国产成人亚洲综合a∨婷婷 | 国产欧美一区二区在线观看| 亚洲小说欧美激情另类| 久久久激情视频| 日韩一区二区免费在线电影 | 日韩欧美中文字幕精品| 亚洲精品视频一区二区| 国产一区二区在线看| 欧美日韩国产综合久久| 亚洲日穴在线视频| 国产中文字幕精品| 69堂精品视频| 亚洲第一主播视频| 91丝袜美腿高跟国产极品老师 | 日韩一区二区三区免费观看| 亚洲精品高清视频在线观看| 白白色亚洲国产精品| 国产欧美久久久精品影院| 国产一区日韩二区欧美三区| 日韩欧美色综合网站| 美女视频黄免费的久久| 在线成人午夜影院| 亚洲在线观看免费视频| 91国偷自产一区二区三区观看 | 欧美国产日本韩| 国内精品久久久久影院色| 欧美大片在线观看一区| 美洲天堂一区二卡三卡四卡视频| 91精品国产一区二区三区蜜臀| 亚洲va国产va欧美va观看| 欧美精品久久久久久久久老牛影院| 亚洲国产一区二区三区|