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

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

?? avtransmitter.java

?? java 開發(fā)的sip軟電話 源碼 jain sip
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package net.java.mais.media;

/**
 * <p>Title: Netsite TudoMais</p>
 * <p>Description:JAIN-SIP Audio/Video phone application</p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Organisation: CTBC Telecom / Netsite </p>
 * @author Thiago Rocha Camargo (barata7@yahoo.com)
 */

/**
 * <p>Title: SIP COMMUNICATOR</p>
 * <p>Description:JAIN-SIP Audio/Video phone application</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Organisation: LSIIT laboratory (http://lsiit.u-strasbg.fr) </p>
 * <p>Network Research Team (http://www-r2.u-strasbg.fr))</p>
 * <p>Louis Pasteur University - Strasbourg - France</p>
 * @author Emil Ivov (http://www.emcho.com)
 * @author Paulo Pizzarro ( added support for media level connection parameter)
 * @version 1.1
 *
 */

import java.awt.Dimension;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Vector;

import javax.media.Codec;
import javax.media.Control;
import javax.media.Controller;
import javax.media.ControllerClosedEvent;
import javax.media.ControllerEvent;
import javax.media.ControllerListener;
import javax.media.EndOfMediaEvent;
import javax.media.Format;
import javax.media.Manager;
import javax.media.MediaLocator;
import javax.media.Owned;
import javax.media.Player;
import javax.media.Processor;
import javax.media.Time;
import javax.media.control.QualityControl;
import javax.media.control.TrackControl;
import javax.media.format.VideoFormat;
import javax.media.protocol.ContentDescriptor;
import javax.media.protocol.DataSource;
import javax.media.protocol.PushBufferDataSource;
import javax.media.protocol.PushBufferStream;
import javax.media.rtp.InvalidSessionAddressException;
import javax.media.rtp.RTPManager;
import javax.media.rtp.SendStream;
import javax.media.rtp.SessionAddress;
import javax.media.rtp.rtcp.SourceDescription;
import javax.swing.JFrame;

public class AVTransmitter
{
    // Input MediaLocator
    // Can be a file or http or capture source
    protected MediaLocator locator;
    protected ArrayList ipAddresses = null;
    protected Processor processor = null;
    protected RTPManager rtpMgrs[];
    protected AVReceiverMais avReceiver[];
    //Used by mobility - keeps rtpMgrs[] corresponding addresses
    protected SessionAddress sessionAddresses[] = null;
    public Vector sendStreams;
    protected DataSource dataOutput = null;
    protected ArrayList ports = null;
    protected ArrayList formatSets = null;
    protected ArrayList contents = null;
    protected ArrayList localPorts = null;
    protected MediaManager mediaManCallback = null;
    public int thePort=10001;
    public AVTransmitter(Processor processor,
                         ArrayList ipAddresses,
                         ArrayList ports, 
                         ArrayList formatSets,
                         ArrayList contents,
                         ArrayList localPorts)
    {
        try {
        	sendStreams=new Vector();
            
            this.processor = processor;
            this.ipAddresses = ipAddresses;
            this.ports = ports;
            this.formatSets = formatSets;
            this.contents = contents;
            this.localPorts = localPorts;
        }
        finally {
            
        }
    }

    void setMediaManagerCallback(MediaManager mediaManager)
    {
        this.mediaManCallback = mediaManager;
    }

    /**
     * Starts the transmission. Returns null if transmission started ok.
     * Otherwise it returns a string with the reason why the setup failed.
     */
    synchronized String start() throws MediaException
    {
        try {
            
            String result;
            configureProcessor();
            // Create an RTP session to transmit the output of the
            // processor to the specified IP address and port no.
            try {
                createTransmitter();
            }
            catch (MediaException ex) {
                
                processor.close();
                processor = null; 
                throw ex;
            }
            // Start the transmission
            processor.start();
            return null;
        }
        finally {
            
        }
    }

    /**
     * Stops the transmission if already started
     */
    void stop()
    {
        try {
            
            synchronized (this) {
                if (processor != null) {
                    processor.stop();
                    if (rtpMgrs != null) {
                        for (int i = 0; i < rtpMgrs.length; i++) {
                            if (rtpMgrs[i] == null) {
                                continue;
                            }
                            rtpMgrs[i].removeTargets("Session ended.");
                            rtpMgrs[i].dispose();
                        }
                    }
                }
            }
        }
        finally {
            
        }
    }

    protected void configureProcessor() throws MediaException
    {
        try {
            
            if (processor == null) {
                
                throw new MediaException("Processor is null.");
            }
            // Wait for the processor to configure
            boolean result = true;
            if (processor.getState() < Processor.Configured) {
                result = waitForState(processor, Processor.Configured);
            }
            if (result == false) {
                
                throw new MediaException("Couldn't configure processor");
            }
            // Get the tracks from the processor
            TrackControl[] tracks = processor.getTrackControls();
            // Do we have atleast one track?
            if (tracks == null || tracks.length < 1) {
                
                throw new MediaException("Couldn't find tracks in processor");
            }
            // Set the output content descriptor to RAW_RTP
            // This will limit the supported formats reported from
            // Track.getSupportedFormats to only valid RTP formats.
            ContentDescriptor cd = new ContentDescriptor(ContentDescriptor.
                RAW_RTP);
            processor.setContentDescriptor(cd);
            Format supported[];
            Format chosenFormat;
            boolean atLeastOneTrack = false;
            // Program the tracks.
            for (int i = 0; i < tracks.length; i++) {
                Format format = tracks[i].getFormat();
                if (tracks[i].isEnabled()) {
                    supported = tracks[i].getSupportedFormats();
                    // We've set the output content to the RAW_RTP.
                    // So all the supported formats should work with RTP.
                    // We'll pick one that matches those specified by the constructor.
                    if (supported.length > 0) {
                        if (supported[0] instanceof VideoFormat) {
                            // For video formats, we should double check the
                            // sizes since not all formats work in all sizes.
                            int index = findFirstMatchingFormat(supported,
                                formatSets);
                            if (index != -1) {
                                chosenFormat = checkForVideoSizes(tracks[i].
                                    getFormat(),
                                    supported[index]);
                                tracks[i].setFormat(chosenFormat);
                                atLeastOneTrack = true;
                            }
                            else {
                                tracks[i].setEnabled(false);
                            }
                        }
                        else {
                            int index = findFirstMatchingFormat(supported,
                                formatSets);
                            if (index != -1) {
                                tracks[i].setFormat(supported[index]);
                                atLeastOneTrack = true;
                            }
                            else {
                                tracks[i].setEnabled(false);
                            }
                        }
                    }
                    else {
                        tracks[i].setEnabled(false);
                    }
                }
                else {
                    tracks[i].setEnabled(false);
                }
            }
            if (!atLeastOneTrack) {
                throw new MediaException(
                    "Couldn't set any of the tracks to a valid RTP format");
            }
            // Realize the processor. This will internally create a flow
            // graph and attempt to create an output datasource
            result = waitForState(processor, Controller.Realized);
            if (result == false) {
                
                throw new MediaException("Couldn't realize processor");
            }
            // Set the JPEG quality to .5.
            //TODO set the jpeg quality through a property
            setJPEGQuality(processor, 1f);
            // Get the output data source of the processor
            dataOutput = processor.getDataOutput();            
            
        }
        finally {
            
        }
    }

    public void setTrack(boolean set){
   	 	TrackControl[] tracks = processor.getTrackControls();
        if (tracks == null || tracks.length < 1) {
       	return;
        }
        Format supported[];
        boolean atLeastOneTrack = false;
        for (int i = 0; i < tracks.length; i++) {
            Format format = tracks[i].getFormat();
            if (tracks[i].isEnabled()) {
                supported = tracks[i].getSupportedFormats();
                if (supported.length > 0) {
                    if (supported[0] instanceof VideoFormat) {
                   	 tracks[i].setEnabled(set);
                   	 System.out.println("VIDEO: "+set);
                    }
                }
            }
        }          	
   }
    
    /**
     * Use the RTPManager API to create sessions for each media
     * track of the processor.
     */
    protected void createTransmitter() throws MediaException
    {
        try {
            
            PushBufferDataSource pbds = (PushBufferDataSource) dataOutput;
            PushBufferStream pbss[] = pbds.getStreams();
            rtpMgrs = new RTPManager[pbss.length];
            avReceiver = new AVReceiverMais[pbss.length];
            //used by mobility
            sessionAddresses = new SessionAddress[pbss.length];
            SessionAddress localAddr, destAddr;
            InetAddress remoteAddress;
            SendStream sendStream;
            SourceDescription srcDesList[];
            
            int port = 0;
            String format = null;
            String ipAddress = null;
            try {
            for (int i = 0; i < pbss.length; i++) {
                try {
                    format = pbss[i].getFormat().getEncoding();
                    ipAddress = findIPAddressForFormat(format);
                    if(ipAddress == null) {
                        
                        throw new MediaException(
                            "Internal error! AVTransmitter failed to find a"
                            + " format's corresponding ipAddress");
                    }
                    remoteAddress = InetAddress.getByName(ipAddress);
                }
                catch (UnknownHostException ex) {
                    
                    throw new MediaException("Failed to resolve remote address",
                                             ex);
                }
                port = findPortForFormat(format);
                if (port == -1) {
                    
                    throw new MediaException(
                        "Internal error! AVTransmitter failed to find a"
                        + " format's corresponding port");
                }
                // first try to bind to same port we're talking to for firewall
                // support if that fails go for a random one
                // which will be randomly changed and retried retryCount times.
                // (erroneous comment reported by Joe.Provino at Sun.COM)
                boolean success = true;
                boolean createdRtpManager = false;
                int retries = 4; // 4 retries
                do {
                    success = true;
                    int localPort = 0;

                    if(retries == 4)
                        localPort = port;
                    else
                        localPort = (int) (63976 * Math.random()) + 1024;
                    
                    thePort=localPort;                 
                    
                    //localPort = Integer.parseInt(mediaManCallback.audioPort);
                    //localPort = Integer.parseInt(mediaManCallback.audioPort);
                                       
                    localPort = findPortForFormat(format);
                    
                    localAddr = new SessionAddress(mediaManCallback.
                        getLocalHost(), localPort);
                    destAddr = new SessionAddress(remoteAddress, port);
                    rtpMgrs[i] =  mediaManCallback.getRtpManager(localAddr);
                    if(rtpMgrs[i] == null)
                    {
                        rtpMgrs[i] = RTPManager.newInstance();
                        createdRtpManager = true;
                    }
                    else
                    {
                        success = true;
                        break;
                    }
                    try {
                    	
                    	/////////////////////////////////////////////////////////
                  	    ArrayList sessions = new ArrayList();
                        String mediaType = null;

                        AVTransmitter at = this;

                        int remoteAudio = at.findPortForLocal(Integer.parseInt(mediaManCallback.getAudioPort()));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人性视频免费网站| 中文字幕精品一区二区精品绿巨人| 日韩在线一二三区| 久久精品水蜜桃av综合天堂| 91在线播放网址| 精品一区二区三区香蕉蜜桃| 一区二区三区四区乱视频| 久久综合九色综合欧美就去吻| 91福利在线播放| 夫妻av一区二区| 捆绑紧缚一区二区三区视频| 夜夜精品视频一区二区| 国产精品天美传媒| 欧美精品一区二区三区很污很色的 | 国产精品美女一区二区| 日韩你懂的在线播放| 91久久精品网| thepron国产精品| 国产一区二区91| 青椒成人免费视频| 亚洲电影你懂得| 亚洲免费伊人电影| 亚洲国产经典视频| 久久精品视频在线看| 欧美一区二区三区免费在线看| 日本高清不卡在线观看| 成人福利视频在线看| 国产成人免费视| 国产精品77777竹菊影视小说| 丝袜美腿高跟呻吟高潮一区| 亚洲免费av观看| 亚洲免费高清视频在线| 亚洲同性gay激情无套| 中文字幕不卡在线播放| 国产欧美日本一区视频| 色综合激情久久| 性欧美大战久久久久久久久| 欧美videossexotv100| 91精品国产综合久久香蕉麻豆| 色婷婷激情一区二区三区| 色综合久久中文字幕综合网 | 日韩中文字幕亚洲一区二区va在线 | 久久欧美一区二区| 欧美tk—视频vk| 日韩欧美二区三区| 精品国产123| 国产人妖乱国产精品人妖| 国产亚洲一二三区| 亚洲欧洲日韩在线| 亚洲欧美日韩精品久久久久| √…a在线天堂一区| 亚洲日本丝袜连裤袜办公室| 日韩毛片精品高清免费| 亚洲欧美偷拍三级| 亚洲成人一区在线| 日本vs亚洲vs韩国一区三区二区| 秋霞电影网一区二区| 国产麻豆精品theporn| 欧美美女一区二区在线观看| 欧美一级国产精品| 26uuu久久综合| 国产精品欧美久久久久无广告| 亚洲欧洲韩国日本视频| 亚洲成人三级小说| 激情图片小说一区| 色综合天天综合网天天看片| 欧美日韩一二三| 久久夜色精品国产噜噜av | 亚洲精品久久久久久国产精华液| 亚洲综合精品自拍| 久久精品国产亚洲a| 成人免费视频视频在线观看免费 | 日本不卡一区二区| 国产乱淫av一区二区三区| 99久久精品国产一区二区三区| 欧美日韩一区视频| 国产亚洲欧美日韩在线一区| 一区二区三区日韩| 激情综合五月天| 在线一区二区视频| 欧美电视剧在线看免费| 日韩美女视频19| 蜜臀av亚洲一区中文字幕| 成人精品免费看| 欧美福利视频一区| 国产精品的网站| 美女免费视频一区| 成人天堂资源www在线| 欧美一区二区三区电影| ㊣最新国产の精品bt伙计久久| 日韩电影免费一区| a在线播放不卡| 日韩免费观看高清完整版| 亚洲人成电影网站色mp4| 久久精品国产精品亚洲综合| 91激情五月电影| 国产欧美一区二区精品性| 亚洲成av人在线观看| av在线免费不卡| 日韩精品在线网站| 亚洲成人av电影在线| av在线不卡电影| wwwwww.欧美系列| 欧美乱妇23p| 亚洲精品午夜久久久| www.成人网.com| 国产精品伦理一区二区| 久久精品99国产国产精| 欧美色图12p| 国产精品久久久久久久久免费丝袜 | 久久九九全国免费| 一区二区三区在线观看动漫| 久久99久久99小草精品免视看| 91视频你懂的| 日韩精品中文字幕一区二区三区 | 日韩黄色片在线观看| 91啪亚洲精品| 久久久久久亚洲综合| 亚洲成a人v欧美综合天堂| 99久久精品国产麻豆演员表| 欧美一区二区三区四区视频| 亚洲国产另类精品专区| 豆国产96在线|亚洲| 欧美不卡一区二区三区| 亚洲第一综合色| eeuss鲁片一区二区三区| 久久久国际精品| 欧美96一区二区免费视频| 91福利视频久久久久| 中文一区二区在线观看| 久久国产夜色精品鲁鲁99| 日韩免费观看高清完整版在线观看| 伊人色综合久久天天人手人婷| 国产精品一区久久久久| 欧美不卡激情三级在线观看| 亚洲地区一二三色| 色伊人久久综合中文字幕| 亚洲欧美二区三区| av激情亚洲男人天堂| 欧美激情综合五月色丁香小说| 久久97超碰色| 精品久久国产字幕高潮| 亚洲成人av免费| 日韩午夜激情视频| 视频在线观看一区| 欧美日韩免费观看一区二区三区 | 欧美性生活久久| 一区二区三区鲁丝不卡| 91色porny| 亚洲欧洲综合另类在线 | 色婷婷精品久久二区二区蜜臂av| 国产精品国产三级国产普通话蜜臀 | 丝袜美腿亚洲色图| 欧美区视频在线观看| 婷婷中文字幕综合| 欧美亚洲动漫精品| 秋霞国产午夜精品免费视频| 欧美肥胖老妇做爰| 偷拍一区二区三区| 欧美日本一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 日韩一区二区在线观看| 奇米亚洲午夜久久精品| 日韩免费在线观看| 成人高清av在线| 亚洲欧美成人一区二区三区| 国产成人亚洲综合a∨婷婷图片| 国产清纯在线一区二区www| 成人激情图片网| 日日摸夜夜添夜夜添国产精品 | 色偷偷成人一区二区三区91| 亚洲久草在线视频| 欧美va亚洲va在线观看蝴蝶网| 国产永久精品大片wwwapp| 国产日韩欧美精品一区| www.亚洲色图.com| 一区二区视频免费在线观看| 欧美日韩综合在线| 日韩高清不卡在线| 亚洲欧洲美洲综合色网| 欧美无乱码久久久免费午夜一区| 日韩黄色免费电影| 中文字幕免费观看一区| 99久久精品国产麻豆演员表| 亚洲一区二区三区在线| 在线亚洲一区二区| 精品无人码麻豆乱码1区2区 | 日本一区二区在线不卡| 欧美日韩精品欧美日韩精品一| 蜜桃视频一区二区三区| 国产亚洲综合在线| 欧洲精品一区二区| 日本va欧美va瓶| 亚洲精品成a人| 精品国内二区三区| 色噜噜狠狠色综合中国| 久久精品国产在热久久| 亚洲成av人片一区二区三区| 欧美激情中文字幕| 555www色欧美视频|