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(); }
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; }