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

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

?? play_mp4.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 5 頁
字號:
														e.ModuleID = pSendContext->dcc_info->video_decoder;							e.Mask = RUAEVENT_XFER_FIFO_READY;							RUAWaitForMultipleEvents(pSendContext->pRUA, &e, 1, COMMON_TIMEOUT_US, NULL);							RMDBGLOG((ENABLE, "waiting to send video startcode\n"));						}						else {							RMDBGLOG((ENABLE, "waiting to send video startcode\n"));							return status;						}					}				}								status = dump_data_into_file(pSendContext->play_opt, 							     RMVDEMUX_VIDEO, 							     videoDMAStartCodeBuffer, 							     4, 							     pSendContext->video_Info.TimeStamp, 							     (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO), 							     pSendContext->video_Info.FirstAccessUnitPointer);				if (RMFAILED(status)) {					RMDBGLOG((ENABLE, "Cannot dump data %d\n", status));					return status;				}								pSendContext->h264sendStartCode = FALSE;								// required for prebuffering routine				pSendContext->videoDataSent += 4;				pSendContext->startCodeDMABufferOffset += 4;				if (pSendContext->startCodeDMABufferOffset + DMABUFFER_UNUSED_BLOCK_SIZE >= sizeBuffer) {					RMDBGLOG((DBG, "release buffer 0x%lx startcode %lu\n", (RMuint32)pSendContext->startCodeDMABuffer, pSendContext->startCodeDMABufferOffset));					RUAReleaseBuffer(pSendContext->pDMA, pSendContext->startCodeDMABuffer);					pSendContext->startCodeDMABuffer = NULL;					pSendContext->startCodeDMABufferOffset = 0;				}				RMDBGLOG((H264_SC_DBG, "sent startcode\n"));				if (pSendContext->SendVideoData) {					RMDBGLOG((SENDDBG, "sent H264 video startcode : frameCount %lu totalBytes %lu pts %lld ( 0x%llx ) %s\n",						  pSendContext->videoFrameCount,						  pSendContext->videoDataSent,						  pSendContext->video_Info.TimeStamp,						  pSendContext->video_Info.TimeStamp,						  (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO) ? "valid":""));									}				// dont send pts with subsequent packets				pSendContext->video_Info.ValidFields = 0;				pSendContext->video_Info.TimeStamp = 0;			}					// read avcPkt size			if (pSendContext->h264readPacketSize) {								while (sample->size) {					*(pSendContext->h264PktLenBuf) = *(sample->buf);										pSendContext->h264PktLenBuf++;										sample->size--;					sample->buf++;										pSendContext->h264LengthSize--;					if (!pSendContext->h264LengthSize)						break;				}								if (!pSendContext->h264LengthSize) {					pSendContext->h264readPacketSize = FALSE;										RMGetH264LengthSize(pSendContext->mp4tV, &(pSendContext->h264LengthSize));										pSendContext->h264PktLenBuf -= pSendContext->h264LengthSize;										switch (pSendContext->h264LengthSize) {					case 2:						pSendContext->h264PktLen = RMbeBufToUint16(pSendContext->h264PktLenBuf);						break;					case 3:						pSendContext->h264PktLen = RMbeBufToUint24(pSendContext->h264PktLenBuf);						break;					case 4:						pSendContext->h264PktLen = RMbeBufToUint32(pSendContext->h264PktLenBuf);						break;					default:						RMDBGLOG((ENABLE, "ERROR! unhandled h264LengthSize %lu\n", pSendContext->h264LengthSize));						return RM_ERROR;					}					RMDBGLOG((H264_SC_DBG, "read h264 packet size %lu (0x%lx)\n", pSendContext->h264PktLen, pSendContext->h264PktLen));					pSendContext->h264BytesLeft = pSendContext->h264PktLen;				}				if (!sample->size) {					RMDBGLOG((ENABLE, "get new sample\n"));					return RM_OK; 				}			}							// send the rest of the buffer			sizeToSend = RMmin(pSendContext->h264BytesLeft, sample->size);					if (pSendContext->SendVideoData) {				status = RUASendData(pSendContext->pRUA, 						     pSendContext->dcc_info->video_decoder, 						     pSendContext->pDMA, 						     sample->buf, 						     sizeToSend, 						     &pSendContext->video_Info, 						     sizeof(pSendContext->video_Info));								if (status != RM_OK) {					if (status == RM_PENDING) {						RMDBGLOG((ENABLE, "video transfer pending\n"));						pSendContext->videoTransferPending = TRUE;					}					return status;				}				pSendContext->videoTransferPending = FALSE;			}						status = dump_data_into_file(pSendContext->play_opt, 						     RMVDEMUX_VIDEO, 						     sample->buf, 						     sizeToSend, 						     pSendContext->video_Info.TimeStamp, 						     (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO), 						     pSendContext->video_Info.FirstAccessUnitPointer);			if (RMFAILED(status)) {				RMDBGLOG((ENABLE, "Cannot dump data %d\n", status));			}						pSendContext->h264BytesLeft -= sizeToSend;			sample->size -= sizeToSend;			sample->buf  += sizeToSend;						// required for prebuffering routine			pSendContext->videoDataSent += sizeToSend;			RMDBGLOG((H264_SC_DBG, "send payload (%5lu/%5lu), sampleSize %5lu, bytesLeft %5lu\n",				  sizeToSend,				  pSendContext->h264PktLen,				  sample->size,				  pSendContext->h264BytesLeft));						if (!pSendContext->h264BytesLeft) {				pSendContext->h264sendStartCode = TRUE;				pSendContext->h264readPacketSize = TRUE;			}			if (pSendContext->SendVideoData) {				RMDBGLOG((SENDDBG, "sent a video packet (flags %lu) frameCount %lu size %ld / %lu (total %lu ) pts %lld ( 0x%llx ) %s\n", 					  pSendContext->videosample.flags,					  pSendContext->videoFrameCount,					  sizeToSend,					  pSendContext->videoSampleSize, 					  pSendContext->videoDataSent,					  pSendContext->video_Info.TimeStamp,					  pSendContext->video_Info.TimeStamp,					  (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO) ? "valid":""));							}		}		return RM_OK;	}	// else, just send the packets coming from the MP4 parser	if (pSendContext->SendVideoData) {		status = RUASendData(pSendContext->pRUA, 				     pSendContext->dcc_info->video_decoder, 				     pSendContext->pDMA, 				     pSendContext->videosample.buf, 				     pSendContext->videosample.size, 				     &pSendContext->video_Info, 				     sizeof(pSendContext->video_Info));				if (status != RM_OK) {			if (status == RM_PENDING) {				RMDBGLOG((ENABLE, "video transfer pending\n"));				pSendContext->videoTransferPending = TRUE;			}			return status;		}		pSendContext->videoTransferPending = FALSE;	}		status = dump_data_into_file(pSendContext->play_opt, 				     RMVDEMUX_VIDEO, 				     pSendContext->videosample.buf, 				     pSendContext->videosample.size, 				     pSendContext->video_Info.TimeStamp, 				     (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO), 				     pSendContext->video_Info.FirstAccessUnitPointer);	if (RMFAILED(status)) {		RMDBGLOG((ENABLE, "Cannot dump data %d\n", status));	}		{		RMuint8 picType = 0xFF;		// check MPEG4 picture type, 0=I;1=P;2=B;3=S		if ((pSendContext->videosample.size > 5) && (!pSendContext->isH264)) {			RMuint8 *dummy = pSendContext->videosample.buf;			RMuint8 byte;			if ((dummy[0] == 0) &&			    (dummy[1] == 0) &&			    (dummy[2] == 1) &&			    (dummy[3] == 0xb6)) {				byte = dummy[4];				byte &= 0xC0;				byte >>= 6;				picType = byte;			}		}				if (pSendContext->SendVideoData) {			RMDBGLOG((SENDDBG, "sent a packet video %s dma 0x%08X, sample 0x%08X, size %ld, total %lu, pts %lld(0x%llx) %s\n", 				  (picType == 0) ? "(picType: I)": ((picType == 1) ? "(picType: P)": ((picType == 2) ? "(picType: B)":"")),				  pSendContext->pDMA, 				  pSendContext->videosample.buf, 				  pSendContext->videosample.size, 				  pSendContext->videoDataSent,				  pSendContext->video_Info.TimeStamp,				  pSendContext->video_Info.TimeStamp,				  (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO) ? "valid":""));					}	}		// required for prebuffering routine	pSendContext->videoDataSent += pSendContext->videosample.size;	return RM_OK;}static RMstatus send_MP4_video(struct SendMP4DataContext * pSendContext){	RMstatus status;	RMuint64 pts;	RMbool notEOS = TRUE;	//enum RM_PSM_State PlaybackStatus = RM_PSM_GetState(pSendContext->PSMcontext, &(pSendContext->dcc_info));		if (pSendContext->videoTransferPending)		goto send_data;	pSendContext->videosample.buf = pSendContext->videoDMABuffer + pSendContext->videoDMABufferOffset;		pSendContext->videosample.size = (1<<pSendContext->dmaBufferSizeLog2) - pSendContext->videoDMABufferOffset;		if (pSendContext->play_opt->disk_ctrl_state == DISK_CONTROL_STATE_SLEEPING)		RMDBGLOG((ENABLE, "trying to read from a suspended drive!!\n"));	if (pSendContext->isIFrameMode && pSendContext->IFrameDirection > 0) {		notEOS = RMGetNextMP4RandomAccessSample(pSendContext->mp4tV, &(pSendContext->videosample), pSendContext->videosample.size);	}	else if (pSendContext->isIFrameMode && pSendContext->IFrameDirection < 0) {		notEOS = RMGetPrevMP4RandomAccessSample(pSendContext->mp4tV, &(pSendContext->videosample), pSendContext->videosample.size);	}	else		notEOS = RMGetNextMP4Sample(pSendContext->mp4tV, &(pSendContext->videosample), pSendContext->videosample.size);		if (!notEOS) {		RMDBGLOG((ENABLE,"Failed to get Video sample -> end of video stream\n"));		pSendContext->videoEOS = TRUE;		return RM_EOS;	}		RMDBGLOG((DISABLE, "got video sample of size %ld\n", pSendContext->videosample.size));	pSendContext->videoSampleSize = pSendContext->videosample.size;	pSendContext->video_Info.TimeStamp = 0;	pSendContext->video_Info.ValidFields = 0;	if (pSendContext->videosample.flags & MP4_AU_START) {		pSendContext->videoFrameCount++;	}	//RMDBGLOG((ENABLE, "[%lu] sample size %lu flags %lu\n", pSendContext->videoFrameCount, pSendContext->videoSampleSize, pSendContext->videosample.flags));	if (pSendContext->videosample.flags & MP4_CTS_VALID) {				pSendContext->video_Info.ValidFields = TIME_STAMP_INFO;				pts = RMuint64from2RMuint32(pSendContext->videosample.CTS_MSB, pSendContext->videosample.CTS_LSB);		pSendContext->video_Info.TimeStamp = pts;		if (pSendContext->video_vop_tir != pSendContext->VideoCTSTimeScale) {			pSendContext->video_Info.TimeStamp = round_int_div(pts * pSendContext->video_vop_tir, pSendContext->VideoCTSTimeScale);			RMDBGLOG((DISABLE, "video pts scaling! old %lld => %lld thru a factor %ld/%ld\n",				  pts,				  pSendContext->video_Info.TimeStamp,				  pSendContext->video_vop_tir,				  pSendContext->VideoCTSTimeScale));		} 		else			RMDBGLOG((DISABLE, "setting pts to %llu\n", pts));		if (pSendContext->videosample.DTS_MSB != pSendContext->videosample.CTS_MSB) {			RMuint64 dts;			RMuint64 cts;			/*			  this is a hack for some h264 mov files which contain "invalid" pts			  bug #5606			*/			dts = (RMuint64)pSendContext->videosample.DTS_MSB;			dts <<= 32;			dts |= pSendContext->videosample.DTS_LSB;			cts = (RMuint64)pSendContext->videosample.CTS_MSB;			cts <<= 32;			cts |= pSendContext->videosample.CTS_LSB;			RMDBGLOG((DISABLE, "dont send invalid pts. DTSh %08lx DTSl %08lx = %09llx CTSh %08lx CTSl %08lx = %09llx lastPTS %llx scale %lu\n",				  pSendContext->videosample.DTS_MSB,				  pSendContext->videosample.DTS_LSB,				  dts,				  pSendContext->videosample.CTS_MSB,				  pSendContext->videosample.CTS_LSB,				  cts,				  pSendContext->lastVideoPTS,				  pSendContext->video_vop_tir));			pSendContext->video_Info.TimeStamp = 0;			pSendContext->video_Info.ValidFields = 0;		} 					if (pSendContext->video_Info.TimeStamp)			pSendContext->lastVideoPTS = (1000 * pSendContext->video_Info.TimeStamp) / pSendContext->video_vop_tir;	}	if (!pSendContext->SendVideoPts) {		pSendContext->video_Info.TimeStamp = 0;		pSendContext->video_Info.ValidFields = 0;	}	RMDBGLOG((DISABLE, "[%lu] sample size %lu flags %lu pts 0x%llx valid %lu\n", 		  pSendContext->videoFrameCount, 		  pSendContext->videoSampleSize, 		  pSendContext->videosample.flags,		  pSendContext->video_Info.TimeStamp,		  pSendContext->video_Info.ValidFields));	// happens only once	if (!pSendContext->video_ptsScalingMsg) {		if (pSendContext->video_vop_tir != pSendContext->VideoCTSTimeScale) {			RMDBGLOG((ENABLE, ">>>video pts scaling! thru a factor %ld/%ld\n",				  pSendContext->video_vop_tir,				  pSendContext->VideoCTSTimeScale));		}		else			RMDBGLOG((ENABLE, ">>> no video pts scaling required\n"));		pSendContext->video_ptsScalingMsg = TRUE;	}					if (pSendContext->FirstSystemTimeStamp) {		if (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO) {			RMuint64 dummyPTS = pSendContext->video_Info.TimeStamp;			RMDBGLOG((ENABLE, "FirstSystemTimeStamp from video = %lld (0x%llX) at %ld/sec = %llu s\n",				  dummyPTS,				  dummyPTS,				  pSendContext->video_vop_tir,				  dummyPTS / pSendContext->video_vop_tir));							pSendContext->FirstSystemTimeStamp = FALSE;			RMDBGLOG((ENABLE, "setting timers\n"));			DCCSTCSetTime(pSendContext->dcc_info->pStcSource, dummyPTS, pSendContext->video_vop_tir);#if PLAY_TIMERS			if ((PlaybackStatus != RM_PSM_Prebuffering) && (PlaybackStatus != RM_PSM_Paused) && (PlaybackStatus != RM_PSM_Stopped))				DCCSTCPlay(pSendContext->dcc_info->pStcSource);#endif		} 		else {			if (pSendContext->forceTimersToZero) {				RMDBGLOG((ENABLE, ">>> no pts, force timers to zero\n"));				DCCSTCSetTime(pSendContext->dcc_info->pStcSource, 0, pSendContext->video_vop_tir);#if PLAY_TIMERS				if ((PlaybackStatus != RM_PSM_Prebuffering) && (PlaybackStatus != RM_PSM_Paused) && (PlaybackStatus != RM_PSM_Stopped))					DCCSTCPlay(pSendContext->dcc_info->pStcSource);#endif				pSendContext->FirstSystemTimeStamp = FALSE;			}			else {				RMDBGLOG((ENABLE, "waiting for first time stamp to be detected, timer not set!!!, video skipped\n"));				return RM_OK;			}		}	}			RMDBGLOG((DISABLE, "about to send a packet video dma 0x%08X, sample 0x%08X, size %ld, pts %lld(0x%llx) %s\n", 		  pSendContext->pDMA, 		  pSendContext->videosample.buf, 		  pSendContext->videosample.size, 		  pSendContext->video_Info.TimeStamp,		  pSendContext->video_Info.TimeStamp,		  (pSendContext->video_Info.ValidFields & TIME_STAMP_INFO) ? "valid":""));	pSendContext->videoDMABufferOffset += pSendContext->videosample.size; send_data:	if (pSendContext->videosample.size != 0) {		status = send_video_payload(pSendContext);		if (status != RM_OK)			return status;	}	else {		RMDBGLOG((ENABLE, "got video sample of size 0!\n"));	}			return RM_OK;}#define SPU_SAMPLES_QUEUE_SIZE 10	#ifdef WITH_MONOstatic void flush_spu_fifo(struct SendMP4DataContext * pSendContext){	struct spu_fifo_entry_type *buf_info = NULL;	RMuint32 rd1, rd2;	RMuint32 size1;	RMDBGLOG((SPU_DBG, "flush_spu_fifo\n"));#ifndef

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美激情四射| 亚洲国产成人一区二区三区| 色综合久久中文综合久久牛| 国产成人av一区二区三区在线观看| 五月天激情综合网| 亚洲一区二区av电影| 一区二区三区在线免费| 精品写真视频在线观看| 亚洲国产成人精品视频| 亚洲成人午夜影院| 日韩av电影免费观看高清完整版| 亚洲成人免费在线观看| 亚洲成精国产精品女| 日韩欧美不卡一区| 男男成人高潮片免费网站| 美美哒免费高清在线观看视频一区二区 | 一本大道综合伊人精品热热| 97精品国产97久久久久久久久久久久 | 国产精品剧情在线亚洲| 欧美高清在线精品一区| 亚洲乱码国产乱码精品精98午夜| 一区二区三区欧美亚洲| 亚洲一区二三区| 三级影片在线观看欧美日韩一区二区 | 欧美电影在线免费观看| 久久99精品视频| 国产永久精品大片wwwapp| 国产成人亚洲综合a∨猫咪| 成人综合在线视频| 色狠狠综合天天综合综合| 91精品国产91久久久久久一区二区| 日韩欧美国产1| 欧美激情一二三区| 亚洲电影激情视频网站| 国产一区二区三区视频在线播放| 成人手机在线视频| 亚洲国产精品久久久久秋霞影院| 日韩**一区毛片| 懂色av一区二区三区蜜臀| 在线免费不卡视频| 欧美精品一区二区三区蜜桃| 亚洲色图一区二区三区| 男女性色大片免费观看一区二区| 成人av在线播放网址| 91精品国产91热久久久做人人| 欧美高清在线视频| 久久99蜜桃精品| 欧美日韩一本到| 中文字幕不卡在线观看| 毛片av中文字幕一区二区| 色婷婷久久久综合中文字幕| 久久久精品国产免费观看同学| 激情小说亚洲一区| 欧美精选在线播放| 1000部国产精品成人观看| 久草在线在线精品观看| 欧美嫩在线观看| 一区二区三区中文免费| av电影天堂一区二区在线观看| 久久色.com| 国产精品一二三四| 久久婷婷国产综合国色天香| 日本vs亚洲vs韩国一区三区二区| 欧美日精品一区视频| 亚洲最色的网站| 97aⅴ精品视频一二三区| 亚洲国产精品二十页| 顶级嫩模精品视频在线看| 久久久91精品国产一区二区精品| 久久99日本精品| 久久久99久久| 成人精品小蝌蚪| 最新日韩av在线| 日本高清不卡在线观看| 国产一区二区不卡| 欧美午夜精品一区二区三区| 亚洲色大成网站www久久九九| proumb性欧美在线观看| 中文字幕视频一区二区三区久| 国产91对白在线观看九色| 久久久久久久免费视频了| 国产福利精品导航| 国产精品国产三级国产普通话蜜臀 | 亚洲一区二区欧美日韩| 欧美美女直播网站| 久久99国产精品久久99果冻传媒| 日韩精品专区在线| 久久国产精品72免费观看| 精品电影一区二区| 成人av中文字幕| 一区二区三区影院| 777奇米成人网| 国产精品中文字幕一区二区三区| 欧美激情一区二区| 色伊人久久综合中文字幕| 午夜久久久久久久久 | 在线欧美小视频| 狂野欧美性猛交blacked| 国产亚洲欧美一区在线观看| 91免费版在线| 乱一区二区av| 最新热久久免费视频| 91精品国产高清一区二区三区蜜臀| 久久99国产精品尤物| 亚洲欧美影音先锋| 91麻豆精品国产91久久久更新时间| 韩国女主播成人在线观看| 91在线观看免费视频| 久草热8精品视频在线观看| 亚洲男人的天堂在线观看| 成人黄色软件下载| 26uuuu精品一区二区| 粉嫩av一区二区三区在线播放| 亚洲国产精品久久人人爱蜜臀| 久久精品一区二区| 欧美三级视频在线| 成人v精品蜜桃久久一区| 蜜臀99久久精品久久久久久软件| 亚洲天堂免费在线观看视频| 精品欧美一区二区在线观看 | 91激情五月电影| 国产东北露脸精品视频| 免费的成人av| 亚洲福利视频一区二区| 中文幕一区二区三区久久蜜桃| 日韩一区二区不卡| 欧美日韩久久久| 91成人网在线| 91行情网站电视在线观看高清版| 成人小视频免费在线观看| 国产美女久久久久| 久久超碰97人人做人人爱| 日韩国产在线观看| 欧美色涩在线第一页| 欧美伊人久久大香线蕉综合69| 91亚洲永久精品| 99久久精品免费观看| 不卡av免费在线观看| 成人h动漫精品| 91蝌蚪porny| 91成人在线精品| 欧美三级电影在线观看| 欧美久久久久中文字幕| 69久久夜色精品国产69蝌蚪网| 欧美另类高清zo欧美| av在线综合网| 成人动漫视频在线| 99久久精品免费看| 99久久综合狠狠综合久久| 成人av在线网站| 色婷婷一区二区三区四区| 欧美网站一区二区| 91精品国产丝袜白色高跟鞋| 26uuuu精品一区二区| 国产日本亚洲高清| 亚洲人成网站影音先锋播放| 亚洲美女视频在线| 亚洲国产一区在线观看| 日韩中文欧美在线| 国产麻豆视频一区二区| 成人激情图片网| 欧美午夜电影网| ww久久中文字幕| 国产精品护士白丝一区av| 亚洲成人av免费| 国产1区2区3区精品美女| www.色精品| 欧美日韩成人在线| 精品国产乱码久久| 欧美性感一类影片在线播放| 欧美日韩免费电影| 精品国产乱码久久久久久久久| 国产精品人人做人人爽人人添 | 91精品欧美综合在线观看最新| 欧美精品一区二区三区四区| 中文字幕亚洲电影| 久久国产精品99精品国产| 91精彩视频在线观看| 久久亚洲一区二区三区明星换脸 | 中文字幕视频一区| 国产一区二区三区免费播放| 精品视频一区三区九区| 国产欧美一区二区精品忘忧草| 午夜精品成人在线| 91蝌蚪porny| 欧美国产97人人爽人人喊| 免费久久99精品国产| 91久久精品网| 中文字幕第一区第二区| 麻豆高清免费国产一区| 欧美在线色视频| 亚洲男人的天堂在线观看| 国产91丝袜在线播放0| 精品国产一区久久| 人人狠狠综合久久亚洲| 欧美三级三级三级爽爽爽| 玉足女爽爽91| 一本在线高清不卡dvd| 国产精品久久久久久久久搜平片| 欧美日韩1区2区|