示例#1
0
 public MediaDestination getMediaDestination(SessionDescription sessionDescription)
     throws NoCodecException {
   InetAddress destAddress = sessionDescription.getIpAddress();
   List<MediaDescription> mediaDescriptions = sessionDescription.getMediaDescriptions();
   for (MediaDescription mediaDescription : mediaDescriptions) {
     if (RFC4566.MEDIA_AUDIO.equals(mediaDescription.getType())) {
       for (Codec offerCodec : mediaDescription.getCodecs()) {
         if (supportedCodecs.contains(offerCodec)) {
           String offerCodecName = offerCodec.getName();
           if (offerCodecName.equalsIgnoreCase(RFC3551.PCMU)
               || offerCodecName.equalsIgnoreCase(RFC3551.PCMA)) {
             int destPort = mediaDescription.getPort();
             if (mediaDescription.getIpAddress() != null) {
               destAddress = mediaDescription.getIpAddress();
             }
             MediaDestination mediaDestination = new MediaDestination();
             mediaDestination.setDestination(destAddress.getHostAddress());
             mediaDestination.setPort(destPort);
             mediaDestination.setCodec(offerCodec);
             return mediaDestination;
           }
         }
       }
     }
   }
   throw new NoCodecException();
 }
示例#2
0
 public SessionDescription createSessionDescription(SessionDescription offer, int localRtpPort)
     throws IOException {
   SessionDescription sessionDescription = new SessionDescription();
   sessionDescription.setUsername("user1");
   sessionDescription.setId(random.nextInt(Integer.MAX_VALUE));
   sessionDescription.setVersion(random.nextInt(Integer.MAX_VALUE));
   Config config = userAgent.getConfig();
   InetAddress inetAddress = config.getPublicInetAddress();
   if (inetAddress == null) {
     inetAddress = config.getLocalInetAddress();
   }
   sessionDescription.setIpAddress(inetAddress);
   sessionDescription.setName("-");
   sessionDescription.setAttributes(new Hashtable<String, String>());
   List<Codec> codecs;
   if (offer == null) {
     codecs = supportedCodecs;
   } else {
     codecs = new ArrayList<Codec>();
     for (MediaDescription mediaDescription : offer.getMediaDescriptions()) {
       if (RFC4566.MEDIA_AUDIO.equals(mediaDescription.getType())) {
         for (Codec codec : mediaDescription.getCodecs()) {
           if (supportedCodecs.contains(codec)) {
             codecs.add(codec);
           }
         }
       }
     }
   }
   MediaDescription mediaDescription = new MediaDescription();
   Hashtable<String, String> attributes = new Hashtable<String, String>();
   attributes.put(RFC4566.ATTR_SENDRECV, "");
   mediaDescription.setAttributes(attributes);
   mediaDescription.setType(RFC4566.MEDIA_AUDIO);
   mediaDescription.setPort(localRtpPort);
   mediaDescription.setCodecs(codecs);
   List<MediaDescription> mediaDescriptions = new ArrayList<MediaDescription>();
   mediaDescriptions.add(mediaDescription);
   sessionDescription.setMediaDescriptions(mediaDescriptions);
   return sessionDescription;
 }