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 ! }