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

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

?? rifffile.java

?? Java編寫的一個mp3播放器源代碼,對于想做這方面工作的網友來說還是有很大的參考價值的
?? JAVA
字號:
/*
 * 11/19/04 1.0 moved to LGPL.
 * 02/23/99 JavaConversion by E.B
 * Don Cross, April 1993.
 * RIFF file format classes.
 * See Chapter 8 of "Multimedia Programmer's Reference" in
 * the Microsoft Windows SDK.
 *  
 *-----------------------------------------------------------------------
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU Library General Public License as published
 *   by the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU Library General Public License for more details.
 *
 *   You should have received a copy of the GNU Library General Public
 *   License along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *----------------------------------------------------------------------
 */

package javazoom.jl.converter;

import java.io.IOException;
import java.io.RandomAccessFile;


/**
 * Class to manage RIFF files
 */
public class RiffFile
{
   class RiffChunkHeader
   {
     	public int    ckID = 0;       // Four-character chunk ID
    	public int    ckSize = 0;     // Length of data in chunk
    	public RiffChunkHeader()
    	{}
   }
 
 
   // DDCRET
   public static final int	DDC_SUCCESS = 0;           // The operation succeded
   public static final int	DDC_FAILURE = 1;           // The operation failed for unspecified reasons
   public static final int	DDC_OUT_OF_MEMORY = 2;     // Operation failed due to running out of memory
   public static final int	DDC_FILE_ERROR = 3;        // Operation encountered file I/O error
   public static final int	DDC_INVALID_CALL = 4;      // Operation was called with invalid parameters
   public static final int	DDC_USER_ABORT = 5;        // Operation was aborted by the user
   public static final int	DDC_INVALID_FILE = 6;      // File format does not match
   
   // RiffFileMode
   public static final int	RFM_UNKNOWN = 0;      	   // undefined type (can use to mean "N/A" or "not open")
   public static final int	RFM_WRITE = 1;        	   // open for write
   public static final int	RFM_READ = 2;         	   // open for read

   private RiffChunkHeader   	riff_header;      // header for whole file
   protected int      			fmode;            // current file I/O mode
   protected RandomAccessFile 	file;             // I/O stream to use

   /**
    * Dummy Constructor
	*/
   public RiffFile()
   {
      file = null;
      fmode = RFM_UNKNOWN;
      riff_header = new RiffChunkHeader();
   
      riff_header.ckID = FourCC("RIFF");
   	  riff_header.ckSize = 0;
   }
 
   /**
    * Return File Mode.
	*/
   public int CurrentFileMode()
   {return fmode;}
   
   /**
    * Open a RIFF file.
	*/
   public int Open(String Filename, int NewMode)
   {
      int retcode = DDC_SUCCESS;
   
      if ( fmode != RFM_UNKNOWN )
      {
   	  	retcode = Close();
      }
   
      if ( retcode == DDC_SUCCESS )
      {
   	  	switch ( NewMode )
   	  	{
   		 case RFM_WRITE:
			try
			{	
				file = new RandomAccessFile(Filename,"rw");
				
			    try
				{
   				   // Write the RIFF header...
   				   // We will have to come back later and patch it!
				   byte[] br = new byte[8];
				   br[0] = (byte) ((riff_header.ckID >>> 24) & 0x000000FF);
				   br[1] = (byte) ((riff_header.ckID >>> 16) & 0x000000FF);
				   br[2] = (byte) ((riff_header.ckID >>> 8) & 0x000000FF);
				   br[3] = (byte) (riff_header.ckID & 0x000000FF);
				  
			       byte br4 = (byte) ((riff_header.ckSize >>> 24)& 0x000000FF);
				   byte br5 = (byte) ((riff_header.ckSize >>> 16)& 0x000000FF);
				   byte br6 = (byte) ((riff_header.ckSize >>> 8)& 0x000000FF);
				   byte br7 = (byte) (riff_header.ckSize & 0x000000FF);
				   
				   br[4] = br7;
				   br[5] = br6;
				   br[6] = br5;
				   br[7] = br4;
				   
					file.write(br,0,8);
				   fmode = RFM_WRITE;
				} catch (IOException ioe)
				  {
				    file.close();
				  	fmode = RFM_UNKNOWN;
		 		  }
			} catch (IOException ioe)
			  {
			     fmode = RFM_UNKNOWN;
   				 retcode = DDC_FILE_ERROR;
			  }
   			  break;
   
   		 case RFM_READ:
			try
			{	
				file = new RandomAccessFile(Filename,"r");
			    try
				{
   				   // Try to read the RIFF header...   				   
				   byte[] br = new byte[8];
				   file.read(br,0,8);
				   fmode = RFM_READ;
				   riff_header.ckID = ((br[0]<<24)& 0xFF000000) | ((br[1]<<16)&0x00FF0000) | ((br[2]<<8)&0x0000FF00) | (br[3]&0x000000FF);
				   riff_header.ckSize = ((br[4]<<24)& 0xFF000000) | ((br[5]<<16)&0x00FF0000) | ((br[6]<<8)&0x0000FF00) | (br[7]&0x000000FF);
				} catch (IOException ioe)
				  {
				    file.close();
				  	fmode = RFM_UNKNOWN;
		 		  }
			} catch (IOException ioe)
			  {
			 	 fmode = RFM_UNKNOWN;
   				 retcode = DDC_FILE_ERROR;
			  }
   			  break;
   		 default:
   			  retcode = DDC_INVALID_CALL;
   	  	}
      }
   	 return retcode;
   }
   
   /**
    * Write NumBytes data.
	*/
   public int Write(byte[] Data, int NumBytes )
   {
      if ( fmode != RFM_WRITE )
      {
   	  	return DDC_INVALID_CALL;
      }
	  try
  	  {   	
		file.write(Data,0,NumBytes);
	    fmode = RFM_WRITE;
 	  } 
	  catch (IOException ioe)
	  {
			return DDC_FILE_ERROR;
	  }
      riff_header.ckSize += NumBytes;
   	  return DDC_SUCCESS;
   }
   


   /**
    * Write NumBytes data.
	*/     
   public int Write(short[] Data, int NumBytes )
   {
      byte[] theData = new byte[NumBytes];
      int yc = 0;
      for (int y = 0;y<NumBytes;y=y+2)
      {
        theData[y] = (byte) (Data[yc] & 0x00FF);
        theData[y+1] =(byte) ((Data[yc++] >>> 8) & 0x00FF);
      }
      if ( fmode != RFM_WRITE )
      {
   	  	return DDC_INVALID_CALL;
      }
	  try
  	  {   	
		file.write(theData,0,NumBytes);
	    fmode = RFM_WRITE;
 	  } 
	  catch (IOException ioe)
	   {
	  	return DDC_FILE_ERROR;
	   }
	  riff_header.ckSize += NumBytes;
   	  return DDC_SUCCESS;
   }

   /**
    * Write NumBytes data.
	*/
   public int Write(RiffChunkHeader Triff_header, int NumBytes )
   {
	  byte[] br = new byte[8];
	  br[0] = (byte) ((Triff_header.ckID >>> 24) & 0x000000FF);
	  br[1] = (byte) ((Triff_header.ckID >>> 16) & 0x000000FF);
	  br[2] = (byte) ((Triff_header.ckID >>> 8) & 0x000000FF);
	  br[3] = (byte) (Triff_header.ckID & 0x000000FF);

	  byte br4 = (byte) ((Triff_header.ckSize >>> 24)& 0x000000FF);
	  byte br5 = (byte) ((Triff_header.ckSize >>> 16)& 0x000000FF);
	  byte br6 = (byte) ((Triff_header.ckSize >>> 8)& 0x000000FF);
	  byte br7 = (byte) (Triff_header.ckSize & 0x000000FF);
	  
	  br[4] = br7;
	  br[5] = br6;
	  br[6] = br5;
	  br[7] = br4;	  
	  
      if ( fmode != RFM_WRITE )
      {
   	  	return DDC_INVALID_CALL;
      }
	  try
  	  {   	
		file.write(br,0,NumBytes);
	    fmode = RFM_WRITE;
 	  } catch (IOException ioe)
		 {
			return DDC_FILE_ERROR;
		 }
      riff_header.ckSize += NumBytes;
   	  return DDC_SUCCESS;
   }

   /**
    * Write NumBytes data.
	*/
   public int Write(short Data, int NumBytes )
   {
      short theData = (short) ( ((Data>>>8)&0x00FF) | ((Data<<8)&0xFF00) );
      if ( fmode != RFM_WRITE )
      {
   	  	return DDC_INVALID_CALL;
      }
	  try
  	  {   	
		file.writeShort(theData);
	    fmode = RFM_WRITE;
 	  } catch (IOException ioe)
		 {
			return DDC_FILE_ERROR;
		 }
      riff_header.ckSize += NumBytes;
   	  return DDC_SUCCESS;
   }
   /**
    * Write NumBytes data.
	*/
   public int Write(int Data, int NumBytes )
   {
    short theDataL = (short) ((Data>>>16)&0x0000FFFF);
    short theDataR = (short) (Data&0x0000FFFF);
    short theDataLI = (short) ( ((theDataL>>>8)&0x00FF) | ((theDataL<<8)&0xFF00) );
    short theDataRI = (short) ( ((theDataR>>>8)&0x00FF) | ((theDataR<<8)&0xFF00) );
    int theData = ((theDataRI<<16)&0xFFFF0000) | (theDataLI&0x0000FFFF);
      if ( fmode != RFM_WRITE )
      {
   	  	return DDC_INVALID_CALL;
      }
	  try
  	  {   	
		file.writeInt(theData);
	    fmode = RFM_WRITE;
 	  } catch (IOException ioe)
		 {
			return DDC_FILE_ERROR;
		 }
      riff_header.ckSize += NumBytes;
   	  return DDC_SUCCESS;
   }



   /**
    * Read NumBytes data.
	*/   
   public int Read (byte[] Data, int NumBytes)
   {
      int retcode = DDC_SUCCESS;
  	  try
	  {
   		  file.read(Data,0,NumBytes);
      } catch (IOException ioe)
		    {
			   retcode = DDC_FILE_ERROR;
			}   
      return retcode;
   }
   
   /**
    * Expect NumBytes data.
	*/
   public int Expect(String Data, int NumBytes )
   {
      byte	target = 0;
	  int	cnt = 0;
   	  try
 	  {
	  	   while ((NumBytes--) != 0)
      	   {
    	 		target = file.readByte();
				if (target != Data.charAt(cnt++)) return DDC_FILE_ERROR;
		   }			
      } catch (IOException ioe)
 		 {
 		   return DDC_FILE_ERROR;
		 }   
   		return DDC_SUCCESS;
   }
   
   /**
    * Close Riff File.
	* Length is written too.
	*/
   public int Close()
   {
     int retcode = DDC_SUCCESS;
   
      switch ( fmode )
      {
   	  	case RFM_WRITE:
	  	  try
		  {
			file.seek(0);
	  	    try
			{
				byte[] br = new byte[8];
				br[0] = (byte) ((riff_header.ckID >>> 24) & 0x000000FF);
				br[1] = (byte) ((riff_header.ckID >>> 16) & 0x000000FF);
				br[2] = (byte) ((riff_header.ckID >>> 8) & 0x000000FF);
				br[3] = (byte) (riff_header.ckID & 0x000000FF);
			    
				br[7] = (byte) ((riff_header.ckSize >>> 24)& 0x000000FF);
				br[6] = (byte) ((riff_header.ckSize >>> 16)& 0x000000FF);
				br[5] = (byte) ((riff_header.ckSize >>> 8)& 0x000000FF);
				br[4] = (byte) (riff_header.ckSize & 0x000000FF);
				file.write(br,0,8);	
				file.close();
			} catch (IOException ioe)
			    {
				   retcode = DDC_FILE_ERROR;
				}
		  } catch (IOException ioe)
		    {
			   retcode = DDC_FILE_ERROR;
			}
   		   break;
   
   	  	case RFM_READ:
   	  	   try
		   {
   		        file.close();
   		   } catch (IOException ioe)
		    {
			   retcode = DDC_FILE_ERROR;
			}
   		   break;
      }
      file = null;   
      fmode = RFM_UNKNOWN;
   	  return retcode;
   }

   /**
    * Return File Position.
	*/
   public long CurrentFilePosition()
   {
   	  long	position;
 	  try
	  {
   	      position = file.getFilePointer();
   	  } catch (IOException ioe)
	    {
	      position = -1;
	    }
      return position;
   }

   /**
    * Write Data to specified offset.
	*/
   public int Backpatch (long FileOffset, RiffChunkHeader Data, int NumBytes )
   {
      if (file == null)
      {
   	  	return DDC_INVALID_CALL;
      }
 	  try
	  {
   	      file.seek(FileOffset);
   	  } catch (IOException ioe)
	    {
	      return DDC_FILE_ERROR;
	    }   
   	  return Write ( Data, NumBytes );
   }

   public int Backpatch (long FileOffset, byte[] Data, int NumBytes )
   {
      if (file == null)
      {
   	  	return DDC_INVALID_CALL;
      }
 	  try
	  {
   	      file.seek(FileOffset);
   	  } catch (IOException ioe)
	    {
	      return DDC_FILE_ERROR;
	    }   
   	  return Write ( Data, NumBytes );
   }


   /**
    * Seek in the File.
	*/
   protected int Seek(long offset)
   {
      int rc;
 	  try
	  {
   	      file.seek(offset);
		  rc = DDC_SUCCESS;
   	  } catch (IOException ioe)
	    {
	      rc = DDC_FILE_ERROR;
	    }
   	  return rc;
   }

   /**
    * Error Messages.
	*/
   private String DDCRET_String(int retcode)
   {
   	 switch ( retcode )
   	 {
	  case DDC_SUCCESS:          return "DDC_SUCCESS";
	  case DDC_FAILURE:          return "DDC_FAILURE";
	  case DDC_OUT_OF_MEMORY:    return "DDC_OUT_OF_MEMORY";
	  case DDC_FILE_ERROR:       return "DDC_FILE_ERROR";
	  case DDC_INVALID_CALL:     return "DDC_INVALID_CALL";
	  case DDC_USER_ABORT:       return "DDC_USER_ABORT";
	  case DDC_INVALID_FILE:     return "DDC_INVALID_FILE";
     }
     return "Unknown Error";   
   }

   /**
    * Fill the header.
	*/
   public static int FourCC(String ChunkName)
   {
      byte[] p = {0x20,0x20,0x20,0x20};
	  ChunkName.getBytes(0,4,p,0);
	  int ret = (((p[0] << 24)& 0xFF000000) | ((p[1] << 16)&0x00FF0000) | ((p[2] << 8)&0x0000FF00) | (p[3]&0x000000FF));
      return ret;
   }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区18| 国产精品理论在线观看| 久久只精品国产| 亚洲夂夂婷婷色拍ww47| 久久se精品一区精品二区| av不卡免费电影| 欧美本精品男人aⅴ天堂| 亚洲精品视频自拍| 国产99久久久精品| 欧美一区二区免费| 亚洲激情在线激情| 不卡一区二区中文字幕| 久久毛片高清国产| 日韩不卡一区二区三区| 色综合久久88色综合天天6 | 欧美午夜影院一区| 中文字幕va一区二区三区| 久久99精品久久久| 欧美高清视频www夜色资源网| 亚洲欧洲精品一区二区三区不卡| 六月丁香婷婷久久| 欧美久久久久久久久久| 亚洲一区二区美女| 日本韩国欧美在线| 艳妇臀荡乳欲伦亚洲一区| av福利精品导航| 国产精品久久久久影院老司 | 久久一区二区视频| 免费欧美在线视频| 欧美一级黄色片| 全国精品久久少妇| 欧美一区二区三区性视频| 日韩精彩视频在线观看| 欧美无砖专区一中文字| 一区二区三区 在线观看视频| 色呦呦一区二区三区| 一区二区日韩电影| 欧美日韩在线三级| 日韩va欧美va亚洲va久久| 欧美日精品一区视频| 日日夜夜免费精品| 日韩欧美亚洲国产另类| 久久99国产精品久久99果冻传媒| 日韩美女视频一区二区在线观看| 日本不卡中文字幕| 久久久久青草大香线综合精品| 国产精品一二二区| 亚洲欧洲一区二区在线播放| 91亚洲精华国产精华精华液| 亚洲综合在线视频| 这里是久久伊人| 国产真实精品久久二三区| 国产亚洲一区二区三区在线观看 | 欧美日韩极品在线观看一区| 麻豆精品视频在线观看免费| 精品国产乱码久久久久久蜜臀| 韩国理伦片一区二区三区在线播放| 久久久久国产精品厨房| 91美女精品福利| 日韩福利电影在线观看| 久久久久国产精品麻豆ai换脸| 色呦呦日韩精品| 奇米色一区二区| 国产精品欧美一级免费| 欧美亚洲一区三区| 韩国成人在线视频| 悠悠色在线精品| 2020日本不卡一区二区视频| 不卡一卡二卡三乱码免费网站| 五月婷婷另类国产| 久久久久久久久久美女| 欧美三电影在线| 成人免费视频免费观看| 亚洲成av人片在线观看无码| 久久香蕉国产线看观看99| 色妹子一区二区| 国产麻豆精品在线观看| 亚洲一二三区不卡| 中文字幕免费在线观看视频一区| 欧美系列在线观看| 波多野结衣在线aⅴ中文字幕不卡| 亚洲国产裸拍裸体视频在线观看乱了| 久久色在线视频| 欧美日韩成人在线| 99re视频这里只有精品| 久久av中文字幕片| 日本在线观看不卡视频| 亚洲精品中文在线影院| 久久久久久电影| 日韩精品一区二区三区swag| 欧美性猛片xxxx免费看久爱| 成人黄色在线网站| 国产一区二三区| 人妖欧美一区二区| 亚洲妇女屁股眼交7| 国产精品成人一区二区艾草| 精品国产一区二区三区av性色| 欧美色手机在线观看| 成人性生交大片免费看视频在线 | 欧美激情资源网| 久久综合色婷婷| 欧美一区二区三区人| 欧美色国产精品| 色琪琪一区二区三区亚洲区| 99视频精品在线| 欧美日韩高清影院| 99re这里只有精品视频首页| 成人av免费在线观看| 国产成人日日夜夜| 精品亚洲porn| 极品少妇xxxx精品少妇偷拍| 久久精品99国产精品| 免费观看在线色综合| 无码av免费一区二区三区试看| 一个色妞综合视频在线观看| 亚洲人成在线观看一区二区| 国产精品成人午夜| 亚洲日本丝袜连裤袜办公室| 日韩理论片中文av| 亚洲日本va午夜在线影院| 自拍偷拍国产精品| 一区二区三区在线视频免费| 亚洲美女视频在线观看| 一区二区三区在线视频免费| 亚洲高清中文字幕| 日本不卡一二三| 蓝色福利精品导航| 国产成人精品亚洲777人妖| 丁香激情综合国产| 91视视频在线直接观看在线看网页在线看| 99精品黄色片免费大全| 色一情一乱一乱一91av| 欧美色爱综合网| 日韩免费福利电影在线观看| 国产亚洲短视频| 中文字幕字幕中文在线中不卡视频| 亚洲免费在线看| 婷婷综合在线观看| 国产在线播放一区二区三区| 99riav一区二区三区| 欧美群妇大交群中文字幕| 精品久久久久久久人人人人传媒| 久久久99精品久久| 一区二区三区丝袜| 久久er99热精品一区二区| 欧美丝袜第三区| 日韩一级片在线播放| 国产欧美日韩在线观看| 亚洲精品成人悠悠色影视| 日韩成人dvd| 91在线视频在线| 日韩一区二区电影在线| 亚洲欧洲成人精品av97| 日韩精品91亚洲二区在线观看| 国产91丝袜在线播放0| 欧美色欧美亚洲另类二区| 久久影音资源网| 夜夜嗨av一区二区三区网页| 国产一区二区三区电影在线观看| 91看片淫黄大片一级| 日韩三级中文字幕| 亚洲欧美另类在线| 黄色资源网久久资源365| 91麻豆精东视频| 26uuu国产在线精品一区二区| 亚洲精品网站在线观看| 国产盗摄女厕一区二区三区| 欧洲人成人精品| 中文字幕精品一区二区精品绿巨人| 午夜在线电影亚洲一区| 粗大黑人巨茎大战欧美成人| 欧美高清dvd| 亚洲精品乱码久久久久久黑人| 国产一区二区三区观看| 欧美一区二区成人6969| 一区二区在线观看视频| 国产成人免费视频网站| 日韩一区二区三区观看| 亚洲国产精品视频| 972aa.com艺术欧美| 亚洲国产精品黑人久久久| 免费的国产精品| 欧美日韩在线播| 亚洲欧美一区二区不卡| 成人精品视频一区二区三区尤物| 精品嫩草影院久久| 蜜臀va亚洲va欧美va天堂| 欧美性色综合网| 亚洲综合无码一区二区| 91影院在线观看| 国产精品丝袜黑色高跟| 国产成人在线视频播放| 91精品国产综合久久小美女| 亚洲成人av资源| 欧美日韩激情在线| 日本免费新一区视频| 欧美一级欧美三级在线观看| 日韩影视精彩在线| 91精品国产色综合久久 | 亚洲欧美另类久久久精品2019|