rendered paste body public RTPpacket(int PType, int Framenb, int Time, byte[] data,
int data_length) {
// fill by default header fields:
Version = RTP_VERSION;
Padding = 0;
Extension = 0;
CC = 0;
Marker = 0;
Ssrc = 0;
// fill changing header fields:
SequenceNumber = Framenb;
TimeStamp = Time;
PayloadType = PType;
// build the header bitstream:
// --------------------------
header = new byte[HEADER_SIZE];
// .............
// TO COMPLETE
// .............
// fill the header array of byte with RTP header fields
// header[0] = ...
header[0] = (byte) (Version << 6);
header[0] = (byte) (header[0] | ((Padding & 0x1) << 5));
header[0] = (byte) (header[0] | ((Extension & 0x1) << 4));
// 0xF to get lower 4 bits
header[0] = (byte) (header[0] | (CC & 0xF));
// .....
header[1] = (byte) ((Marker & 0x1) << 7);
// 0x7F to pull lower 7 bytes
header[1] = (byte) (header[1] | (PayloadType & 0x7F));
header[2] = (byte) ((SequenceNumber >> 8) & 0xFF);
header[3] = (byte) (SequenceNumber & 0xFF);
header[4] = (byte) ((TimeStamp >> 24) & 0xFF);
header[5] = (byte) ((TimeStamp >> 16) & 0xFF);
header[6] = (byte) ((TimeStamp >> 8) & 0xFF);
header[7] = (byte) (TimeStamp & 0xFF);
Ssrc = 0x1234;
header[8] = (byte) ((Ssrc >> 24) & 0xFF);
header[9] = (byte) ((Ssrc >> 16) & 0xFF);
header[10] = (byte) ((Ssrc >> 8) & 0xFF);
header[11] = (byte) (Ssrc & 0xFF);
// fill the payload bitstream:
// --------------------------
payload_size = data_length;
payload = new byte[data_length];
// fill payload array of byte from data (given in parameter of the
// constructor)
// ......
System.arraycopy(data, 0, payload, 0, data_length);
// ! Do not forget to uncomment method printheader() below !
}