net.sf.fmj.media.rtp.RTCPAPPPacket Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fmj Show documentation
Show all versions of fmj Show documentation
Freedom for Media in Java
package net.sf.fmj.media.rtp;
import java.io.*;
public class RTCPAPPPacket extends RTCPPacket
{
int ssrc;
int name;
int subtype;
byte data[];
public RTCPAPPPacket(int ssrc, int name, int subtype, byte data[])
{
if ((data.length & 3) != 0)
throw new IllegalArgumentException("Bad data length");
if (subtype < 0 || subtype > 31)
throw new IllegalArgumentException("Bad subtype");
this.ssrc = ssrc;
this.name = name;
this.subtype = subtype;
this.data = data;
super.type = APP;
super.received = false;
}
public RTCPAPPPacket(RTCPPacket parent)
{
super(parent);
super.type = APP;
}
@Override
public void assemble(DataOutputStream out) throws IOException
{
out.writeByte(128 + subtype);
out.writeByte(APP);
out.writeShort(2 + (data.length >> 2));
out.writeInt(ssrc);
out.writeInt(name);
out.write(data);
}
@Override
public int calcLength()
{
return 12 + data.length;
}
public String nameString(int name)
{
return "" + (char) (name >>> 24) + (char) (name >>> 16 & 0xff)
+ (char) (name >>> 8 & 0xff) + (char) (name & 0xff);
}
@Override
public String toString()
{
return "\tRTCP APP Packet from SSRC " + ssrc + " with name "
+ nameString(name) + " and subtype " + subtype
+ "\n\tData (length " + data.length + "): " + new String(data)
+ "\n";
}
}