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

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

?? rtpsocketadapter.java

?? jmf視頻語音開發
?? JAVA
字號:
import java.io.IOException;
import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.MulticastSocket;
import java.net.DatagramPacket;
import java.net.SocketException;

import javax.media.protocol.DataSource;
import javax.media.protocol.PushSourceStream;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.SourceTransferHandler;
import javax.media.rtp.RTPConnector;
import javax.media.rtp.OutputDataStream;


/**
 * An implementation of RTPConnector based on UDP sockets.
 */
public class RTPSocketAdapter implements RTPConnector {

    DatagramSocket dataSock;
    DatagramSocket ctrlSock;

    InetAddress addr;
    int port;

    SockInputStream dataInStrm = null, ctrlInStrm = null;
    SockOutputStream dataOutStrm = null, ctrlOutStrm = null;


    public RTPSocketAdapter(InetAddress addr, int port) throws IOException {
    this(addr, port, 1);
    }

    public RTPSocketAdapter(InetAddress addr, int port, int ttl) throws IOException {

    try {

        if (addr.isMulticastAddress()) {
        dataSock = new MulticastSocket(port);
        ctrlSock = new MulticastSocket(port+1);
        ((MulticastSocket)dataSock).joinGroup(addr);
        ((MulticastSocket)dataSock).setTimeToLive(ttl);
        ((MulticastSocket)ctrlSock).joinGroup(addr);
        ((MulticastSocket)ctrlSock).setTimeToLive(ttl);
        } else {
        dataSock = new DatagramSocket(port, InetAddress.getLocalHost());
        ctrlSock = new DatagramSocket(port+1, InetAddress.getLocalHost());
        }


    } catch (SocketException e) {
        throw new IOException(e.getMessage());
    }

    this.addr = addr;
    this.port = port;
    }

    /**
     * Returns an input stream to receive the RTP data. 
     */
    public PushSourceStream getDataInputStream() throws IOException {
    if (dataInStrm == null) {
        dataInStrm = new SockInputStream(dataSock, addr, port);
        dataInStrm.start();
    }
    return dataInStrm;
    }

    /**
     * Returns an output stream to send the RTP data.
     */
    public OutputDataStream getDataOutputStream() throws IOException {
    if (dataOutStrm == null)
        dataOutStrm = new SockOutputStream(dataSock, addr, port);
    return dataOutStrm;
    }

    /**
     * Returns an input stream to receive the RTCP data.
     */
    public PushSourceStream getControlInputStream() throws IOException {
    if (ctrlInStrm == null) {
        ctrlInStrm = new SockInputStream(ctrlSock, addr, port+1);
        ctrlInStrm.start();
    }
    return ctrlInStrm;
    }

    /**
     * Returns an output stream to send the RTCP data.
     */
    public OutputDataStream getControlOutputStream() throws IOException {
    if (ctrlOutStrm == null)
        ctrlOutStrm = new SockOutputStream(ctrlSock, addr, port+1);
    return ctrlOutStrm;
    }

    /**
     * Close all the RTP, RTCP streams.
     */
    public void close() {
    if (dataInStrm != null)
        dataInStrm.kill();
    if (ctrlInStrm != null)
        ctrlInStrm.kill();
    dataSock.close();
    ctrlSock.close();
    }

    /**
     * Set the receive buffer size of the RTP data channel.
     * This is only a hint to the implementation.  The actual implementation
     * may not be able to do anything to this.
     */
    public void setReceiveBufferSize( int size) throws IOException {
    dataSock.setReceiveBufferSize(size);
    }

    /**
     * Get the receive buffer size set on the RTP data channel.
     * Return -1 if the receive buffer size is not applicable for 
     * the implementation.
     */
    public int getReceiveBufferSize() {
    try {
        return dataSock.getReceiveBufferSize();
    } catch (Exception e) {
        return -1;
    }
    }

    /**
     * Set the send buffer size of the RTP data channel.
     * This is only a hint to the implementation.  The actual implementation
     * may not be able to do anything to this.
     */
    public void setSendBufferSize( int size) throws IOException {
    dataSock.setSendBufferSize(size);
    }

    /**
     * Get the send buffer size set on the RTP data channel.
     * Return -1 if the send buffer size is not applicable for 
     * the implementation.
     */
    public int getSendBufferSize() {
    try {
        return dataSock.getSendBufferSize();
    } catch (Exception e) {
        return -1;
    }
    }

    /**
     * Return the RTCP bandwidth fraction.  This value is used to
     * initialize the RTPManager.  Check RTPManager for more detauls.
     * Return -1 to use the default values.
     */
    public double getRTCPBandwidthFraction() {
    return -1;
    }

    /**
     * Return the RTCP sender bandwidth fraction.  This value is used to
     * initialize the RTPManager.  Check RTPManager for more detauls.
     * Return -1 to use the default values.
     */
    public double getRTCPSenderBandwidthFraction() {
    return -1;
    }


    /**
     * An inner class to implement an OutputDataStream based on UDP sockets.
     */
    class SockOutputStream implements OutputDataStream {

    DatagramSocket sock;
    InetAddress addr;
    int port;

    public SockOutputStream(DatagramSocket sock, InetAddress addr, int port) {
        this.sock = sock;
        this.addr = addr;
        this.port = port;
    }

    public int write(byte data[], int offset, int len) {
        try {
        sock.send(new DatagramPacket(data, offset, len, addr, port));
        } catch (Exception e) {
        return -1;
        }
        return len;
    }
    }


    /**
     * An inner class to implement an PushSourceStream based on UDP sockets.
     */
    class SockInputStream extends Thread implements PushSourceStream {

    DatagramSocket sock;
    InetAddress addr;
    int port;
    boolean done = false;
    boolean dataRead = false;

    SourceTransferHandler sth = null;

    public SockInputStream(DatagramSocket sock, InetAddress addr, int port) {
        this.sock = sock;
        this.addr = addr;
        this.port = port;
    }

    public int read(byte buffer[], int offset, int length) {
        DatagramPacket p = new DatagramPacket(buffer, offset, length, addr, port);
        try {
        sock.receive(p);
        } catch (IOException e) {
        return -1;
        }
        synchronized (this) {
        dataRead = true;
        notify();
        }
        return p.getLength();
    }

    public synchronized void start() {
        super.start();
        if (sth != null) {
        dataRead = true;
        notify();
        }
    }

    public synchronized void kill() {
        done = true;
        notify();
    }

    public int getMinimumTransferSize() {
        return 2 * 1024;    // twice the MTU size, just to be safe.
    }

    public synchronized void setTransferHandler(SourceTransferHandler sth) {
        this.sth = sth;
        dataRead = true;
        notify();
    }

    // Not applicable.
    public ContentDescriptor getContentDescriptor() {
        return null;
    }

    // Not applicable.
    public long getContentLength() {
        return LENGTH_UNKNOWN;
    }

    // Not applicable.
    public boolean endOfStream() {
        return false;
    }

    // Not applicable.
    public Object[] getControls() {
        return new Object[0];
    }

    // Not applicable.
    public Object getControl(String type) {
        return null;
    }

    /**
     * Loop and notify the transfer handler of new data.
     */
    public void run() {
        while (!done) {

        synchronized (this) {
            while (!dataRead && !done) {
            try {
                wait();
            } catch (InterruptedException e) { }
            }
            dataRead = false;
        }

        if (sth != null && !done) {
            sth.transferData(this);
        }
        }
    }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费性生活视频播放| 亚洲亚洲人成综合网络| 午夜视频一区在线观看| 欧美日韩精品一区二区三区蜜桃 | 亚洲大片精品永久免费| 欧美精品一二三四| 久久99精品国产麻豆婷婷| 精品国产乱码久久久久久1区2区| 精品制服美女久久| 久久国产精品72免费观看| 国产精品嫩草久久久久| 欧美午夜精品一区二区三区| 久久99精品一区二区三区三区| 日本不卡视频在线观看| 国产精品人成在线观看免费| 国产精品久久久久四虎| 5566中文字幕一区二区电影| 成人h版在线观看| 一区二区三区久久| 亚洲精品一线二线三线无人区| 久久精品一区二区| 91国模大尺度私拍在线视频| 免费成人深夜小野草| 日本视频免费一区| 一区二区三区国产| 免费在线观看精品| 国产精品一区不卡| 麻豆国产91在线播放| 洋洋成人永久网站入口| 图片区日韩欧美亚洲| 精品一区二区三区免费| a亚洲天堂av| 精品写真视频在线观看| av亚洲精华国产精华| 在线不卡免费欧美| 国产清纯美女被跳蛋高潮一区二区久久w| 3d成人h动漫网站入口| 精品福利一区二区三区免费视频| 中文字幕一区免费在线观看| 国产亚洲一二三区| 亚洲一区二区视频在线| 亚洲一区二区视频在线| 国产很黄免费观看久久| 日本在线观看不卡视频| 懂色av一区二区三区免费看| 国产精品一区二区免费不卡| 欧洲精品在线观看| 在线看国产日韩| 国产亚洲1区2区3区| 亚洲综合视频在线观看| 国产.欧美.日韩| 欧美一区二区在线播放| 欧美欧美午夜aⅴ在线观看| 国产日韩视频一区二区三区| 日韩国产欧美在线播放| 97久久超碰国产精品| 在线观看日韩毛片| 久久精品视频一区| 黄色精品一二区| 大白屁股一区二区视频| 色综合网站在线| 色婷婷综合久久久久中文| 欧美午夜精品久久久久久超碰| 久久久99精品久久| 久久99国产精品尤物| 欧美人体做爰大胆视频| 一区二区三区在线观看视频| 成人激情午夜影院| 欧美国产日韩a欧美在线观看| 亚洲人成亚洲人成在线观看图片| 亚洲国产一区在线观看| 97se亚洲国产综合自在线| 国产欧美日本一区二区三区| 韩国成人精品a∨在线观看| 欧美日韩精品欧美日韩精品一综合| 国产精品第五页| 成人手机在线视频| 国产免费成人在线视频| 国产一区二区导航在线播放| 99国产一区二区三精品乱码| 欧美极品美女视频| 成人激情校园春色| 1区2区3区国产精品| 91同城在线观看| 日韩欧美成人一区二区| 日本欧美加勒比视频| 91精品啪在线观看国产60岁| 日本va欧美va欧美va精品| 91麻豆精品国产91久久久| 麻豆久久久久久| 久久久精品tv| 日韩**一区毛片| 精品日韩av一区二区| 亚洲乱码国产乱码精品精98午夜| 精品一区二区免费在线观看| 日韩欧美国产一区二区在线播放| 老鸭窝一区二区久久精品| 欧美精品一区二区蜜臀亚洲| 成人午夜电影网站| 一区二区三区在线播| 欧美电影一区二区三区| 精品一区二区免费在线观看| 亚洲欧洲在线观看av| 欧美日韩综合不卡| 日韩一区日韩二区| 欧美视频日韩视频在线观看| 美女国产一区二区三区| 亚洲欧洲色图综合| 欧美日韩国产综合草草| 国产在线麻豆精品观看| 自拍偷拍国产精品| 成人黄色大片在线观看| 亚洲电影一级黄| 久久综合色之久久综合| 久久激情五月激情| 亚洲女人****多毛耸耸8| 欧美精品aⅴ在线视频| 国产精品资源网站| 亚洲高清久久久| 国产欧美精品一区二区色综合朱莉 | 欧美国产一区视频在线观看| 91久久国产最好的精华液| 国内久久精品视频| 亚洲一区二区三区四区中文字幕 | 国产精品蜜臀在线观看| 69堂国产成人免费视频| k8久久久一区二区三区| 日av在线不卡| 亚洲一区二区影院| 国产精品第一页第二页第三页 | 粉嫩av一区二区三区粉嫩| 亚洲电影在线播放| 中文字幕乱码亚洲精品一区| 欧美成人艳星乳罩| 欧美日本在线一区| 色8久久精品久久久久久蜜| 国产iv一区二区三区| 奇米影视一区二区三区小说| 一区二区三区av电影 | 一区二区三区四区中文字幕| 26uuu成人网一区二区三区| 欧美日韩一区成人| 欧美综合在线视频| 色妞www精品视频| 成人免费观看av| 丰满少妇在线播放bd日韩电影| 麻豆精品精品国产自在97香蕉 | 欧美高清在线一区| 精品国产制服丝袜高跟| 日韩欧美卡一卡二| 91精品中文字幕一区二区三区| 欧美揉bbbbb揉bbbbb| 欧美自拍偷拍一区| 欧美性大战久久久久久久| 一本大道久久a久久综合| 色婷婷综合五月| 日本黄色一区二区| 欧美在线制服丝袜| 欧美视频在线一区| 欧美日本韩国一区二区三区视频 | 久久er99热精品一区二区| 乱中年女人伦av一区二区| 麻豆精品视频在线观看视频| 久久av资源网| 国产成人亚洲精品狼色在线| 国产91高潮流白浆在线麻豆| 成人午夜私人影院| 91麻豆文化传媒在线观看| 在线观看av一区| 91精品婷婷国产综合久久竹菊| 欧美大片在线观看| 国产视频一区二区在线| 日韩一区中文字幕| 亚洲一本大道在线| 久久99精品国产麻豆婷婷洗澡| 国产成人精品一区二| 91在线小视频| 7777精品伊人久久久大香线蕉完整版 | 蜜臀a∨国产成人精品| 久久99精品国产.久久久久久 | 自拍偷拍国产亚洲| 亚洲成人7777| 国产一区在线视频| 日本韩国一区二区三区| 欧美电影免费观看高清完整版在| 国产欧美一区视频| 一区二区三区不卡视频在线观看| 日韩国产一二三区| 成人激情小说乱人伦| 制服丝袜一区二区三区| 国产欧美综合色| 亚洲www啪成人一区二区麻豆| 久久精品国产秦先生| 91麻豆成人久久精品二区三区| 欧美日韩国产一二三| 日本一区二区三区久久久久久久久不 | 91影院在线观看| 日韩你懂的在线播放| 尤物视频一区二区| 国产福利一区二区三区在线视频|