/*
* @(#)SdpParser.java 1.7 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 SdpParser extends Parser {
public SessionDescription sessionDescription;
public Vector mediaDescriptions;
public SdpParser(byte data[]) {
init();
ByteArrayInputStream bin = new ByteArrayInputStream(data);
parseData(bin);
}
public void parseData(ByteArrayInputStream bin) {
if (getToken(bin, "v=", true)) {
sessionDescription = new SessionDescription(bin);
mediaDescriptions = new Vector();
boolean found = getToken(bin, "m=", false);
while (found) {
MediaDescription mediaDescription = new MediaDescription(bin,
sessionDescription .connectionIncluded);
mediaDescriptions.addElement(mediaDescription);
found = getToken(bin, "m=", false);
}
}
}
public MediaAttribute getSessionAttribute(String name) {
MediaAttribute attribute = null;
if (sessionDescription != null) {
attribute = sessionDescription.getSessionAttribute(name);
}
return attribute;
}
public MediaDescription getMediaDescription(String name) {
MediaDescription description = null;
if (mediaDescriptions != null) {
for (int i = 0; i < mediaDescriptions.size(); i++) {
MediaDescription entry =
(MediaDescription) mediaDescriptions.elementAt(i);
if (entry.name.equals(name)) {
description = entry;
break;
}
}
}
return description;
}
public Vector getMediaDescriptions() {
return mediaDescriptions;
}
static String input =
"v=0\r\n" + "o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4\r\n" +
"s=SDP Seminar\r\n" +
"i=A Seminar on the session description protocol\r\n" +
"u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps\r\n" +
"e=mjb@isi.edu (Mark Handley)\r\n" +
"c=IN IP4 224.2.17.12/127\r\n" + "t=2873397496 2873404696\r\n" +
"a=recvonly\r\n" + "m=audio 49170 RTP/AVP 0\r\n" +
"m=video 51372 RTP/AVP 31\r\n" + "m=application 32416 udp wbr\n" + "a=orient:portrait\r\n";
public static void main(String[] args) {
new SdpParser(input.getBytes());
}
}
|