Class RtpPacket


  • public final class RtpPacket
    extends Object
    Represents the header and the payload of an RTP packet.

    Not supported parsing at the moment: header extension and CSRC.

    Structure of an RTP header (RFC3550, Section 5.1).

      0                   1                   2                   3
      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |V=2|P|X|  CC   |M|     PT      |       sequence number         |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                           timestamp                           |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |           synchronization source (SSRC) identifier            |
     +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
     |            contributing source (CSRC) identifiers             |
     |                             ....                              |
     +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
     | Profile-specific extension ID |   Extension header length     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       Extension header                        |
     |                             ....                              |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        3                   2                   1
      1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
     
    • Field Detail

      • version

        public final byte version
        The RTP version field (Word 0, bits 0-1), should always be 2.
        See Also:
        Constant Field Values
      • padding

        public final boolean padding
        The RTP padding bit (Word 0, bit 2).
      • extension

        public final boolean extension
        The RTP extension bit (Word 0, bit 3).
      • csrcCount

        public final byte csrcCount
        The RTP CSRC count field (Word 0, bits 4-7).
      • marker

        public final boolean marker
        The RTP marker bit (Word 0, bit 8).
      • payloadType

        public final byte payloadType
        The RTP CSRC count field (Word 0, bits 9-15).
      • sequenceNumber

        public final int sequenceNumber
        The RTP sequence number field (Word 0, bits 16-31).
      • timestamp

        public final long timestamp
        The RTP timestamp field (Word 1).
      • ssrc

        public final int ssrc
        The RTP SSRC field (Word 2).
      • csrc

        public final byte[] csrc
        The RTP CSRC fields (Optional, up to 15 items).
      • payloadData

        public final byte[] payloadData
    • Method Detail

      • parse

        @Nullable
        public static RtpPacket parse​(byte[] buffer,
                                      int length)
        Creates an RtpPacket from a byte array.
        Parameters:
        buffer - The buffer that contains the RTP packet data.
        length - The length of the RTP packet.
        Returns:
        The built RtpPacket.
      • writeToBuffer

        public int writeToBuffer​(byte[] target,
                                 int offset,
                                 int length)
        Writes the data in an RTP packet to a target buffer.

        The size of the target buffer and the length argument should be big enough so that the entire RTP packet could fit. That is, if there is not enough space to store the entire RTP packet, no bytes will be written. The maximum size of an RTP packet is defined as MAX_SIZE.

        Parameters:
        target - A target byte buffer to which the packet data is copied.
        offset - The offset into the target array at which to write.
        length - The maximum number of bytes that can be written.
        Returns:
        The number of bytes written, or C.LENGTH_UNSET if there is not enough space to write the packet.
      • equals

        public boolean equals​(@Nullable
                              Object o)
        Overrides:
        equals in class Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object