⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aviplay1.c

📁 dz3000_51.0.0.4.rar
💻 C
📖 第 1 页 / 共 3 页
字号:
					L2_SetDRAMAudDMACnt(0);

					if (((VidFrameTime-playAudTime)	>= 110)	|| (AudBufCnt <	200) )
						 FeedData =	1;
					if (AudBufCnt >	7000)
						 FeedData =	0;

			   }

		  }



	  }



	 if( ((FeedData	== 1) || (!PlayAudio_Flag))	&& (!AudDone) )
	 {

		  firstVidblock	= 1;

		  if(PlayAudio_Flag)
		  {
			   G_DOS_FileCurrCluster = lastAudCluster;
			   G_DOS_FileClusterIndex =	lastAudFileIdx;
		  }


		  if(!PlayAudio_Flag)
		  {
			   //yichang@0410 for non-audio	AVI
			   if(G_playObject.mediaType ==	K_PLAYBACK_TYPE_VIDONLY)
					AudDone	= 1;
			   else
			   {
					//Audio	playback initial
					L2_PlayAud(AudioAddr, 0x03,	0x40, 0x02);
					L2_SetEmbAudCodecVol(0x03);
					L2_SetDRAMAudDMACnt(0);
					AudBufIdx =	AudioAddr;
			   }

			   PlayAudio_Flag =	1;

			   //Timer start
			   L2_ConfigGTimer(5); //up	count and timebase 1 ms
			   L2_WriteGTimer(0);
			   L2_StartGTimer();


		  }



		  //for(i=0;i<4;i++)
		  for(i=0;i<1;i++)
		  {
			   if(AudDone)
					break;


			   NextAudIdx =	SearchAVIIndex(AVIIdxAddr, lastAudIdx, ChunkCnt, 1);
			   lastAudIdx =	NextAudIdx;

			   if(MediaType	== 1) //audio chuncks only,	scale up audio ICON
			   {
					lastAudIdx = NextAudIdx	= 0; //if audio	only, 0th idx == 01wb, else	0th	is 00dc

					G_playObject.mediaType = K_PLAYBACK_TYPE_WAV;
					CopyAudioIcon(1);	
			   }


			   if(NextAudIdx ||	(MediaType == 1)) //if audio only, 0th chunck == 01wb
			   {

					L1_PBAudioChunck(AVIIdxAddr,AudBufIdx,fHandle, NextAudIdx);

					AudBufIdx =	AudBufIdx+256;

					if(AudBufIdx ==	(AudioAddr + 4096))
						 AudBufIdx = AudioAddr;

					if(MediaType ==	1)
						 MediaType = 3;//avoid re-enter	last if(MediaType == 1)

			   }
			   else
			   {
					AudDone	= 1;

			   }
		  }


		  L2_ReadGTimer(&VidFrameTime);
		  playAudTime =	VidFrameTime;

		  FeedData = 0;


		  lastAudCluster = G_DOS_FileCurrCluster;
	  lastAudFileIdx = G_DOS_FileClusterIndex;


	 } //end if


   } //end while


	L2_StopGTimer();

	File_Close(fHandle,	name, K_DOS_ReadFile, 0);
	L2_SetDRAMAudDMACnt(1);
	do
	{
	   L2_ReadDRAMAudBufCnt(&AudBufCnt);

	}
	while (AudBufCnt > 0);
	L2_SetDRAMAudDMACnt(0);

	L2_StopAud();
	G_playObject.mediaType = K_PLAYBACK_TYPE_AVI;
	L2_WriteQTable(K_QWriteTable, K_Qxx, NULL);
	G_Image_QTableIndex	= XBYTE[0x2880];
	//DbgPrint("End	Play Video\n");

	//yichang@0626 test
	
//Davis:patch5.0.0.3_2005/Jun/30	L2_ConfigGPIOBit(40, 1);
//Davis:patch5.0.0.3_2005/Jun/30	L2_SetGPIOBit(40, 0);
	
	return L1K_SUCCESS;

}

//patch5.0@richie@avi window begin
//-----------------------------------------------------------------------------
//L1_SetAviDisplaySrcImgSize
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L1_SetAviDisplaySrcImgSize(USHORT	hsize, USHORT vsize, UCHAR type) USING_0
	{
		UCHAR imghzfac, imgvzfac;
		USHORT imggrp, dsphsize, dspvsize;
		UCHAR LCD_status = 0;
			//UCHAR tmp;
		//patch4.4@richie@tv begin
		//adjust for lcdtv start point
		UCHAR tmp1,tmp2;
		USHORT lcdtvX0,lcdtvY0;
		USHORT lcdtvX1,lcdtvY1;
		
		tmp1 = XBYTE[0x2D09];
		tmp2 = XBYTE[0x2D08];
		lcdtvX0 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
		tmp1 = XBYTE[0x2D0B];
		tmp2 = XBYTE[0x2D0A];
		lcdtvY0 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
		tmp1 = XBYTE[0x2D0D];
		tmp2 = XBYTE[0x2D0C];
		lcdtvX1 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
		tmp1 = XBYTE[0x2D0F];
		tmp2 = XBYTE[0x2D0E];
		lcdtvY1 = ( ((USHORT)tmp1 << 8) | ((USHORT)tmp2) );
	//printf("L2 lcdtv = (%d,%d) (%d,%d)\n",lcdtvX0,lcdtvY0,lcdtvX1,lcdtvY1);
	//printf("L2 width = %d,height = %d\n",(lcdtvX1 - lcdtvX0 + 1),(lcdtvY1 - lcdtvY0 + 1));
		//patch4.4@richie@tv end
	
	//		  tmp = MemStretch;
	//		  MemStretch = 0x01;
	
			if(hsize%16==0) 	imggrp = (hsize >> 4);
			else imggrp = (hsize >> 4) + 1;
	
			//patch5.2.1@cwh@Toppoly TC015TREB1; add G_DisplayType == 17 option
		if(type==0||type==2||type==4||type==6||type==17)	// NTSC display size
			//patch4.3@yichang@0612 to fit TV screen
					{
			//patch4.4@richie@tv begin
			//dsphsize = 640;dspvsize = 216;
			dsphsize = (lcdtvX1 - lcdtvX0 + 1); 	
					//patch4.4@yichang@tv begin 	
			dspvsize = (lcdtvY1 - lcdtvY0 + 1);   
					if((G_DSPVsize/dspvsize) != 2)
					{			  
							G_DSPVsize = 2 * dspvsize;
							vsize = G_DSPVsize;
					}
					//patch4.4@yichang@tv end
			//patch4.4@richie@tv end
			}				
			//{dsphsize = 720;dspvsize = 240;}				
			  //{dsphsize = 800;dspvsize = 600;}				
		else if(type==1||type==3||type==5||type==7) // PAL display size
			{
			//patch4.4@richie@tv begin
			//dsphsize = 720;dspvsize = 288;
			dsphsize = (lcdtvX1 - lcdtvX0 + 1);
			//patch4.4@yichang@tv begin
			dspvsize = (lcdtvY1 - lcdtvY0 + 1); 
					if((G_DSPVsize/dspvsize) != 2)			   
					{
							G_DSPVsize = 2 * dspvsize;
							vsize = G_DSPVsize;
					}
					//patch4.4@yichang@tv end
			//patch4.4@richie@tv end
			}				
		else if(type==8)	// UPS051
			{dsphsize = 288;dspvsize = 220;}
		else if(type==9)	// EPSON LCD panel
			{dsphsize = 312;dspvsize = 230;}
		else if(type==10)	// CASIO LCD panel
			{dsphsize = 356;dspvsize = 240;}
		else if(type==11)	// GiantPlus STN LCD panel
			{dsphsize = 240;dspvsize = 160;}
		else if(type==12)	// PrimeView TFT LCD panel
			{dsphsize = 640;dspvsize = 480;}
		else if(type==13)	// AU015AN02
			{dsphsize = 312;dspvsize = 220;}
		else if(type==14)		// STNLCD160
			//patch4.2@richie@0523
			{dsphsize = 161;dspvsize = 120;}
		else if(type==15)	// PrimeView TFT LCD panel
			{dsphsize = 800;dspvsize = 600;}
		else if(type==16)	// AU015BL01	//patch5.2.1@cwh@AU015BL01;2003/08/08
			{dsphsize = 520;dspvsize = 250;}
		// patch 5.2.1_28@mattwang@rename CASIO2G to CASIO2G1181 beg
		else if(type==18)	// Casio2G1181	//patch5.2.1@cwh@CASIO2G;2003/09/24
			{dsphsize = 480;dspvsize = 240;}
		// patch 5.2.1_28@mattwang@rename CASIO2G to CASIO2G1181 end
		// patch 5.2.1_28@mattwang@add CASIO2G1163 LCD pannel beg
		else if(type==19)	// Casio2G1163
			{dsphsize = 280;dspvsize = 220;}
		// patch 5.2.1_28@mattwang@add CASIO2G1163 LCD pannel end
		// patch 5.2.1_30@mattwang@add STNLCD128 LCD pannel beg
		else if(type==20)		// STNLCD128
			{dsphsize = 128;dspvsize = 128;}
		// patch 5.2.1_30@mattwang@add STNLCD128 LCD pannel end
		// patch 5.2.1_33@mattwang@add AU015AN04 LCD pannel beg
		else if(type==21)	// AU015AN04
			{dsphsize = 340;dspvsize = 220;}
		// patch 5.2.1_33@mattwang@add AU015AN04 LCD pannel end
	
		else LCD_status = 1;
	
	/*
	printf("dsphsize=%x\n",dsphsize);
	printf("dspvsize=%x\n",dspvsize);
	printf("hsize=%x\n",hsize);
	printf("vsize=%x\n",vsize);
	*/
	
		if ((dsphsize > hsize) && (dspvsize > vsize))
		{
	//patch5.2.1@richie@tv avi begin
			//patch5.2.1@cwh@Toppoly TC015TREB1; add G_DisplayType == 17 option
			if((type >= 8) && (type!=17))
			{
				if(type==16)		//patch5.2.1@cwh@AU015BL01;2003/08/08
					{
					XBYTE[0x2D19] = 0x20;
					XBYTE[0x2D1A] = 0x51;
					XBYTE[0x2D1B] = 0x00;
					XBYTE[0x2D1C] = 0x00;
					XBYTE[0x2D1D] = 0x00;
					XBYTE[0x2D1E] = 0x00;
					XBYTE[0x2D1F] = 0x14;
	
					L2_SetOSDSelWindow(0,	0, 520, 240, 10);
					}
				else if(type==18)		//patch5.2.1@cwh@CASIO2G;2003/09/24
					{
					XBYTE[0x2D19] = 0x1f;
					XBYTE[0x2D1A] = 0x55;
					XBYTE[0x2D1B] = 0x00;
					XBYTE[0x2D1C] = 0x00;
					XBYTE[0x2D1D] = 0x00;
					XBYTE[0x2D1E] = 0x00;
					XBYTE[0x2D1F] = 0x14;
	
					L2_SetOSDSelWindow(0, 0, 480, 240, 10);
					}
				// patch 5.2.1_28@mattwang@add CASIO2G1163 LCD pannel beg
				else if(type==19)
					{
					XBYTE[0x2D19] = 0x1f;
					XBYTE[0x2D1A] = 0x55;
					XBYTE[0x2D1B] = 0x00;
					XBYTE[0x2D1C] = 0x00;
					XBYTE[0x2D1D] = 0x00;
					XBYTE[0x2D1E] = 0x00;
					XBYTE[0x2D1F] = 0x14;
	
					L2_SetOSDSelWindow(0, 0, 480, 240, 10);
					}
				// patch 5.2.1_28@mattwang@add CASIO2G1163 LCD pannel end
				else
					{
					//set 
					XBYTE[0x2D19] = 0x20;
					XBYTE[0x2D1A] = 0x80;
					XBYTE[0x2D1B] = 0x00;
					XBYTE[0x2D1C] = 0x00;
					XBYTE[0x2D1D] = 0x00;
					XBYTE[0x2D1E] = 0x00;
					XBYTE[0x2D1F] = 0x14;
	
					L2_SetOSDSelWindow((dsphsize - hsize) / 2, 
						(dspvsize - vsize) / 2,
						(dsphsize - hsize) / 2 + hsize - 1,
	
						//patch5.1@ada@cut the error row at the bottom while playing 192 x 144 AVI begin
						//(dspvsize -	vsize) / 2 + vsize - 1, 10);	   
						(dspvsize - vsize) / 2 + vsize - 2, 10);	   
						//patch5.1@ada@cut the error row at the bottom while playing 192 x 144 AVI end
					}
				}
			//patch5.2.1@cwh@Toppoly TC015TREB1; add G_DisplayType == 17 option
			else if(type==0||type==2||type==4||type==6||type==17)
			{
				if((hsize==320)&&(vsize==240))
				{
				imgvzfac = ((ULONG)vsize*32)/dspvsize;
				imghzfac = ((ULONG)hsize*128)/dsphsize;
				XBYTE[0x2D19] = imgvzfac-1;
				XBYTE[0x2D1A] = imghzfac;
				XBYTE[0x2D1F] = imggrp;
				}
		else
				{
				XBYTE[0x2D19] = 0x1a;
				XBYTE[0x2D1A] = 0x2a;
				XBYTE[0x2D1B] = 0x00;
				XBYTE[0x2D1C] = 0x00;
				XBYTE[0x2D1D] = 0x00;
				XBYTE[0x2D1E] = 0x00;
				XBYTE[0x2D1F] = 0x14;
				L2_SetOSDSelWindow((dsphsize - hsize*3) /	2, 
					(dspvsize - vsize*1.2) / 2,
					(dsphsize - hsize*3) / 2 + hsize*3 - 1,
					(dspvsize - vsize*1.2) / 2 + vsize*1.2 - 2, 10);
				}
			}
			else if(type==1||type==3||type==5||type==7)
			{
				if((hsize==320)&&(vsize==240))
				{
				imgvzfac = ((ULONG)vsize*32)/dspvsize;
				imghzfac = ((ULONG)hsize*128)/dsphsize;
				XBYTE[0x2D19] = imgvzfac;
				XBYTE[0x2D1A] = imghzfac;
				XBYTE[0x2D1F] = imggrp;
				}
				else
				{
				XBYTE[0x2D19] = 0x15;
				XBYTE[0x2D1A] = 0x2a;
				XBYTE[0x2D1B] = 0x00;
				XBYTE[0x2D1C] = 0x00;
				XBYTE[0x2D1D] = 0x00;
				XBYTE[0x2D1E] = 0x00;
				XBYTE[0x2D1F] = 0x14;
				L2_SetOSDSelWindow((dsphsize - hsize*3) /	2, 
					(dspvsize - vsize*1.5) / 2,
					(dsphsize - hsize*3) / 2 + hsize*3 - 1,
					(dspvsize - vsize*1.5) / 2 + vsize*1.5 - 2, 10);
				}
			}
		}
		else
		{
			//patch5.2.1@cwh@Toppoly TC015TREB1; add G_DisplayType == 17 option
			if((type >= 8) && (type!=17))
		{
			imgvzfac = ((ULONG)vsize*32)/dspvsize;
			imghzfac = ((ULONG)hsize*128)/dsphsize;
			//printf("hsizec=%d, vsize=%d\n",hsize,vsize);	  
			//printf("dsphsize=%d, dspvsize=%d\n",dsphsize,dspvsize);	 
			//printf("imghzfac=%bx, imgvzfac=%bx\n",imghzfac,imgvzfac);    
			XBYTE[0x2D19] = imgvzfac;
			XBYTE[0x2D1A] = imghzfac;
			XBYTE[0x2D1F] = imggrp;
	
			L2_SetOSDSelWindow(0, 
					0,
					dsphsize - 1,
					dspvsize - 1, 10);		 
			}
				//patch5.2.1@cwh@Toppoly TC015TREB1; add G_DisplayType == 17 option
			else if(type==0||type==2||type==4||type==6||type==17)
			{
				imgvzfac = ((ULONG)vsize*32)/dspvsize;
				imghzfac = ((ULONG)hsize*128)/dsphsize;
				XBYTE[0x2D19] = imgvzfac-1;
				XBYTE[0x2D1A] = imghzfac;
				XBYTE[0x2D1F] = imggrp;
			}
			else if(type==1||type==3||type==5||type==7)
			{
			}
	//patch5.2.1@richie@tv avi end
		}
	
	
			//MemStretch = tmp;
		return(LCD_status);
	}

//patch5.0@richie@avi window end

//~patch3.2@yichang@0401 AVI playback on demo kit (re-write)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -