/* * @(#)MediaDescription.java 1.9 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package com.sun.media.sdp; import java.io.*; import java.util.*; public class MediaDescription extends Parser { // Values: public String name; public String port; public String protocol; public int payload_type; public String payload; public String mediaTitle; public String connectionInfo; public String bandwidthInfo; public String encryptionKey; public Vector mediaAttributes; public MediaDescription(ByteArrayInputStream bin, boolean connectionIncluded) { // Media Name and Transport Address: String line = getLine(bin); int end = line.indexOf(' '); name = line.substring(0, end); int start = end + 1; end = line.indexOf(' ', start); port = line.substring(start, end); start = end + 1; end = line.indexOf(' ', start); protocol = line.substring(start, end); start = end + 1; payload = line.substring(start); try { payload_type = new Integer(payload).intValue(); } catch (Exception e) { payload_type = -1; } // Session and Media Information: if (getToken(bin, "i=", false)) { mediaTitle = getLine(bin); System.out.println("media title: " + mediaTitle); } // Connection Information: boolean mandatory = true; if (connectionIncluded) { mandatory = false; } if (getToken(bin, "c=", mandatory)) { connectionInfo = getLine(bin); System.out.println("connection info: " + connectionInfo); } // Bandwidth Information: if (getToken(bin, "b=", false)) { bandwidthInfo = getLine(bin); System.out.println("bandwidth info: " + bandwidthInfo); } // Encryption Key: if (getToken(bin, "k=", false)) { encryptionKey = getLine(bin); System.out.println("encryption key: " + encryptionKey); } // Media Attributes: mediaAttributes = new Vector(); boolean found = getToken(bin, "a=", false); while (found) { String mediaAttribute = getLine(bin); int index = mediaAttribute.indexOf(':'); if (index > 0) { String name = mediaAttribute.substring(0, index); String value = mediaAttribute.substring(index + 1); MediaAttribute attribute = new MediaAttribute(name, value); mediaAttributes.addElement(attribute); } found = getToken(bin, "a=", false); } } public MediaAttribute getMediaAttribute(String name) { MediaAttribute attribute = null; if (mediaAttributes != null) { for (int i = 0; i < mediaAttributes.size(); i++) { MediaAttribute entry = (MediaAttribute) mediaAttributes.elementAt(i); if (entry.getName().equals(name)) { attribute = entry; break; } } } return attribute; } }