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

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

?? audioplayer.java

?? 自編的Applet錄音機源碼
?? JAVA
字號:
package sunstudio.record.au.audio.play;

import java.io.*;
import java.util.*;
import sunstudio.util.*;

public class AudioPlayer extends InputStream implements Runnable{

	private boolean pause=false;
	private InputStream input;
	Thread td=null;
	sun.audio.AudioPlayer player=sun.audio.AudioPlayer.player;
	boolean isover=false;
    protected static final int DFLT_SIZE=4096;
    protected int putPTR;
    protected int getPTR;
    protected int waitingPuts;
    protected int waitingGets;
    protected int emptyBytes;
    protected int usedBytes;
    protected Object putMonitor;
    protected Object getMonitor;
    protected byte data[];
    protected int moduloMask_;
    protected boolean atEOF;
    protected boolean gaveEOF;
    protected boolean flushed_;
	private Vector b1=new Vector();
	
	public AudioPlayer(){
		super();
		putMonitor=new Object();
		getMonitor=new Object();
        gaveEOF=false;
        flushed_=false;
        data=new byte[4096];
        moduloMask_=4096-1;
        emptyBytes=4096;
        atEOF=false;
	}
	public void addAudioPlayListener(AudioPlayListener l){b1.addElement(l);}
	synchronized void notifyListener(int evtType,byte[] wavedata){
		AudioPlayEvent evt=new AudioPlayEvent(evtType,wavedata);
		for(Enumeration enu=b1.elements();enu.hasMoreElements();)
			((AudioPlayListener)enu.nextElement()).onAudioPlayEvent(evt);
	}
////////////////////////////////////////////////////
	public void run(){
		try{
			byte[] tmpp=new byte[800];
			int readCount=0;
			while((readCount=SystemTool.readBytes(input,800,tmpp))>-1)write(tmpp,0,800);
			notifyListener(AudioPlayEvent.PLAY_OVER,null);
		}catch(Exception e){
			clearData();
			notifyListener(AudioPlayEvent.PLAY_ERR,null);
		}
		stop_play();
	}
	public void suspend_play(){
		pause=true;
	}
	public void resume_play(){
		if(!pause)return;
		pause=false;
	}
    public void stop_play(){
		try{
			clearData();
			if(td!=null){
				td.stop();
				td=null;
			}
		}catch(Exception e){e.printStackTrace();}	
		try{
			player.stop(this);
		}catch(Exception e){}
		synchronized(putMonitor){
			try{
				if(waitingPuts>0)putMonitor.notifyAll();
			}catch(Exception e){e.printStackTrace();}
		}
		synchronized(getMonitor){
			try{
				if(waitingGets>0)getMonitor.notifyAll();
			}catch(Exception e){e.printStackTrace();}
		}
    }
	public void clearData(){
        gaveEOF=false;
        flushed_=false;
        int j=4096;
		synchronized(data){
			data=null;
			data=new byte[j];
		}
        moduloMask_=j-1;
        emptyBytes=j;
        atEOF=false;
	}
    public void start_play(InputStream inp){
		input=inp;
		try{
			stop_play();
			pause=false;
			isover=false;
			player.start(this);
			td=null;
			td=new Thread(this);
			td.start();
		}catch(Exception e){}
    }	
	int innerRead()throws Exception{
		/*int rt=-1;
		while(true){
			if(!readOver){
				rt=input.read();
				c++;
				readOver=(c==processlen);
				return rt;
			}else{
				if(c==processlen){
					rt=input.read();
					if(rt==-1)return -1;//READ_STREAM_OVER
					c=0;
					readOver=(rt==0);
				}else{
					c++;
					return rt(c-1);
				}
			}
		}*/
		return input.read();
	}
	int innerRead(byte abyte0[], int i, int j)throws Exception{
        if(j<=0)return 0;
        int k=innerRead();
        if(k==-1)return -1;
        abyte0[i]=(byte)k;
        int i1=1;
        try{
            while(i1<j){
                int l=innerRead();
                if(l==-1)break;
                if(abyte0!=null)abyte0[i+i1]=(byte)l;
                i1++;
            }
        }catch(IOException _ex){}
        return i1;
	}
    public static int Au2Wave(byte byte0){
        byte0^=0xff;
        int i=((byte0&0xf)<<3)+132;
        i<<=(byte0&0x70)>>4;
		return (i-132)*((byte0&0x80)==0?-1:1);
        //if((byte0&0x80)==0)return 132-i;
        //else return i-132;
    }
	public static byte Wave2Au(int wv){
		int i2=Math.abs(wv);
		if(i2>32635)i2=32635;
		i2+=132;
        int x=ULAW_LUT[i2>>7];
        int y=i2>>x+3&0xf;
		i2=(x<<4|y)^(wv>0?0xff:0x7f);
		return (byte)i2;
	}
	////////////////////////////////////////////////////////////////////////
    private void put(byte byte0){
		synchronized(putMonitor){
            /*if(atEOF)return;
            emptyBytes--;
            data[putPTR]=byte0;
            putPTR=(putPTR + 1) % data.length;
			*/
			synchronized(getMonitor){
				usedBytes++;
				isover=true;
				if(waitingGets>0)getMonitor.notify();
			}
		}
    }
    private void put(byte abyte0[],int i,int j){
        int k=j;
        synchronized(putMonitor){
            while(emptyBytes<j&&!atEOF) {
                waitingPuts++;
                try{
                    putMonitor.wait();
                }catch(InterruptedException _ex){}
                waitingPuts--;
            }
            if(atEOF)return;
            emptyBytes-=j;
            if(putPTR+j>data.length){
                k=data.length-putPTR;
                System.arraycopy(abyte0,i,data,putPTR,k);
                i+=k;
                putPTR=0;
                k=j-k;
            }
            System.arraycopy(abyte0,i,data,putPTR,k);
            putPTR+=k;
        }
        synchronized(getMonitor){
            usedBytes+=j;
            if(waitingGets>0)getMonitor.notify();
        }
    }
    private int take(byte abyte0[],int i,int j){
        synchronized(getMonitor){
            while(usedBytes<j && !atEOF && !flushed_){
				if(isover)return -2;//update for play over
                waitingGets++;
                try{
                    getMonitor.wait();
                }catch(InterruptedException _ex){}
		        waitingGets--;
            }
            if(j>usedBytes)j=usedBytes;
            if(atEOF && usedBytes <= 0){
                byte byte0=-1;
                return byte0;
            }
            if(flushed_)flushed_=false;
            usedBytes-=j;
            int k=j;
            if(getPTR + j>data.length){
                k=data.length-getPTR;
                System.arraycopy(data,getPTR,abyte0,i,k);
                getPTR=0;
                i+=k;
                k=j-k;
            }
            System.arraycopy(data,getPTR,abyte0,i,k);
            getPTR+=k;
        }
        synchronized(putMonitor){
            emptyBytes+=j;
            if(waitingPuts>0)putMonitor.notify();
        }
        return j;
    }
    public int read() throws IOException{throw new IOException();}
    public int read(byte abyte0[],int i,int j) throws IOException{
		/////////////////
		if(pause){//update for pause
			abyte0[0]=127;
			return 1;
		}
//		if(usedBytes<=0)throw new IOException();
        int k=0;
        int l=0;
        if(gaveEOF)throw new EOFException("pipe is already closed");
        int i1;
        do{
            i1=Math.min(data.length,j);
            k=take(abyte0,i,i1);
			if(k==-2)throw new IOException();//流已到尾update for play over
            if(k==-1){
                if(l==0){
                    gaveEOF=true;
                    return -1;
                }
                break;
            }
            i+=k;
            l+=k;
            j-=k;
		}while(i1==k&&j>data.length);
		try{
			notifyListener(AudioPlayEvent.PLAY_DATA,abyte0);
		}catch(Exception e){}
        return l;
    }
    public void receivedFlush(){
        if(atEOF)return;
        synchronized(getMonitor){
            flushed_=true;
            if(waitingGets>0)getMonitor.notifyAll();
        }
    }
    public void receive(int i) throws EOFException{
        if(atEOF)throw new EOFException("stream is closed");
        if(emptyBytes==0)receivedFlush();
        put((byte)(i&0xff));
    }
    public void receive(byte abyte0[],int i,int j)throws EOFException{
        while(j>data.length && !atEOF){
            put(abyte0,i,data.length);
            j-=data.length;
            i+=data.length;
        }
        if(!atEOF){
            if(j <= 0)return;
            if(j>emptyBytes)receivedFlush();
            put(abyte0,i,j);
            return;
        }else throw new EOFException("stream is closed");
    }
	public void write(int i) throws IOException{receive(i);}
    public void write(byte abyte0[], int i, int j) throws IOException{
		receive(abyte0, i, j);
	}
    private static final int ULAW_LUT[] = {
        0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 
        3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 
        4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 
        4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 
        5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
        5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 
        5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 
        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
        6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 
        6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 
        7, 7, 7, 7, 7, 7
    };
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品超碰97尤物18| 日韩午夜在线影院| 91精品国产aⅴ一区二区| 精品国产伦一区二区三区观看体验| 久久久无码精品亚洲日韩按摩| 国产精品国产三级国产aⅴ无密码| 亚洲国产成人精品视频| 久久精品久久精品| 一本一本大道香蕉久在线精品 | 国产欧美日韩精品一区| 一区二区三区四区乱视频| 免费成人av资源网| youjizz国产精品| 欧美一区二区免费视频| 国产精品久久久久永久免费观看 | 不卡一区二区三区四区| 91麻豆精品国产91久久久资源速度 | 欧美国产禁国产网站cc| 亚洲一区二区三区视频在线| 国内精品久久久久影院薰衣草| 99精品热视频| 2023国产精品自拍| 亚洲国产成人av好男人在线观看| 久久疯狂做爰流白浆xx| 欧美性色aⅴ视频一区日韩精品| 欧美不卡在线视频| 亚洲精选免费视频| 国产成人99久久亚洲综合精品| 欧美日本在线一区| 亚洲免费在线视频| 国产成人在线免费观看| 69久久99精品久久久久婷婷| 久久www免费人成看片高清| 日本高清不卡一区| 国产色综合一区| 免费的国产精品| 91黄色激情网站| 中文字幕欧美日韩一区| 久久97超碰色| 欧美久久久久久久久久| 亚洲免费资源在线播放| 风间由美一区二区三区在线观看 | 青青草91视频| 欧美四级电影网| 亚洲欧洲制服丝袜| 成人妖精视频yjsp地址| 日韩女优制服丝袜电影| 亚洲不卡在线观看| 欧美视频一区二区三区在线观看 | 日本韩国欧美一区二区三区| 欧美激情一区二区三区蜜桃视频| 激情综合网天天干| 日韩欧美区一区二| 免费精品视频最新在线| 在线观看91av| 午夜精品福利在线| 欧美日韩日日骚| 亚洲国产一区二区视频| 色婷婷综合久久久久中文| 国产午夜精品一区二区三区嫩草| 久久99日本精品| 精品国产乱码久久久久久浪潮 | 精品国产自在久精品国产| 午夜精品久久久久久久久久 | 视频一区二区三区中文字幕| 色88888久久久久久影院野外 | 在线精品视频一区二区三四| 中文字幕一区二区三区不卡| 99久久综合99久久综合网站| 国产精品久久影院| 风间由美一区二区三区在线观看| 国产亚洲欧美色| 国产suv精品一区二区6| 国产精品视频观看| 99久久99久久精品免费观看 | 91黄色免费网站| 亚洲综合色在线| 国产日韩欧美制服另类| 国产一区视频导航| xf在线a精品一区二区视频网站| 久久99久久精品| 久久综合久久综合久久| 国产乱子轮精品视频| 久久久精品国产免费观看同学| 国产91高潮流白浆在线麻豆| 日韩美女啊v在线免费观看| 99久精品国产| 亚洲高清久久久| 欧美一卡二卡三卡| 狠狠色狠狠色合久久伊人| 国产欧美一区二区精品婷婷 | 亚洲男同性恋视频| 欧美日韩视频第一区| 秋霞午夜av一区二区三区| 久久一夜天堂av一区二区三区| 国产经典欧美精品| 国产精品护士白丝一区av| 欧美主播一区二区三区| 日本欧洲一区二区| 精品99久久久久久| 成人性生交大片免费看中文网站| 亚洲色图视频免费播放| 在线综合亚洲欧美在线视频| 精品亚洲国产成人av制服丝袜| 国产三级精品三级在线专区| 97久久精品人人爽人人爽蜜臀| 亚洲午夜精品17c| 日韩欧美一区在线| 成人性生交大合| 亚洲综合在线观看视频| 欧美一区二区三区在线视频| 成人自拍视频在线观看| 一区二区三区四区在线播放| 欧美v亚洲v综合ⅴ国产v| eeuss鲁片一区二区三区| 亚洲成人av电影在线| 久久精品亚洲麻豆av一区二区| 一本一本久久a久久精品综合麻豆| 丝袜亚洲另类丝袜在线| 国产欧美va欧美不卡在线| 欧美日韩中文一区| 国产河南妇女毛片精品久久久 | 欧美午夜一区二区三区| 久久99精品久久久久| 亚洲乱码中文字幕| 久久婷婷成人综合色| 欧美亚洲高清一区| 国产精品一二三区| 午夜激情综合网| 成人免费视频在线观看| 欧美一区二区在线看| 99精品欧美一区二区三区小说 | 国产欧美日韩亚州综合| 欧美卡1卡2卡| 91在线观看美女| 国产一区二区精品久久91| 亚洲午夜免费福利视频| 国产清纯白嫩初高生在线观看91| 在线成人小视频| 91久久人澡人人添人人爽欧美| 国产在线麻豆精品观看| 亚洲成人av电影在线| 亚洲欧美在线视频| 久久综合丝袜日本网| 欧美少妇bbb| 99久久精品国产一区| 国产一区二区三区四| 日韩成人伦理电影在线观看| 一区二区三区成人| 国产精品久久久久久久久免费樱桃| 日韩女优毛片在线| 欧美人妇做爰xxxⅹ性高电影| av资源站一区| 国产成都精品91一区二区三| 激情综合亚洲精品| 免费人成黄页网站在线一区二区 | 精品视频免费在线| 91蝌蚪porny| 成人国产一区二区三区精品| 国产精品亚洲一区二区三区在线 | 久久久99久久| 欧美一级高清片在线观看| 欧美性色欧美a在线播放| 91在线观看地址| av综合在线播放| 不卡欧美aaaaa| 国产成人精品www牛牛影视| 国内外成人在线| 久久精品国内一区二区三区| 蜜臀av一级做a爰片久久| 偷拍一区二区三区四区| 亚洲在线观看免费视频| 一级日本不卡的影视| 亚洲人吸女人奶水| 亚洲精品国产无套在线观| 国产精品的网站| 中文字幕一区二区不卡| 18成人在线观看| 亚洲美女电影在线| 亚洲老司机在线| 亚洲国产精品嫩草影院| 亚洲国产精品一区二区久久恐怖片 | 成人午夜短视频| 成人激情动漫在线观看| 99视频一区二区三区| 色综合欧美在线视频区| 色欲综合视频天天天| 欧美午夜寂寞影院| 制服视频三区第一页精品| 欧美一区二区三区公司| 精品久久一二三区| 久久久久久久久久久久久久久99| 久久精品人人爽人人爽| 国产精品你懂的| 一区二区三区四区亚洲| 日韩精品视频网| 狠狠色2019综合网| 成人久久视频在线观看| 91精彩视频在线观看| 欧美日韩一卡二卡|