RtpPacket
@UnstableApi
public final class RtpPacket
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
Summary
Nested types |
|---|
public final class RtpPacket.BuilderBuilder class for an |
Constants |
|
|---|---|
static final int |
CSRC_SIZE = 4 |
static final int |
MAX_SEQUENCE_NUMBER = 65535 |
static final int |
MAX_SIZE = 65507 |
static final int |
MIN_HEADER_SIZE = 12 |
static final int |
|
static final int |
RTP_VERSION = 2 |
Public fields |
|
|---|---|
final byte[] |
The RTP CSRC fields (Optional, up to 15 items). |
final byte |
The RTP CSRC count field (Word 0, bits 4-7). |
final boolean |
The RTP extension bit (Word 0, bit 3). |
final boolean |
The RTP marker bit (Word 0, bit 8). |
final boolean |
The RTP padding bit (Word 0, bit 2). |
final byte[] |
|
final byte |
The RTP CSRC count field (Word 0, bits 9-15). |
final int |
The RTP sequence number field (Word 0, bits 16-31). |
final int |
The RTP SSRC field (Word 2). |
final long |
The RTP timestamp field (Word 1). |
final byte |
The RTP version field (Word 0, bits 0-1), should always be 2. |
Public methods |
|
|---|---|
boolean |
|
static int |
getNextSequenceNumber(int sequenceNumber)Returns the next sequence number of the |
static int |
getPreviousSequenceNumber(int sequenceNumber)Returns the previous sequence number from the |
int |
hashCode() |
static @Nullable RtpPacket |
parse(ParsableByteArray packetBuffer)Creates an |
static @Nullable RtpPacket |
parse(byte[] buffer, int length)Creates an |
String |
toString() |
int |
writeToBuffer(byte[] target, int offset, int length)Writes the data in an RTP packet to a target buffer. |
Constants
Public fields
Public methods
getNextSequenceNumber
public static int getNextSequenceNumber(int sequenceNumber)
Returns the next sequence number of the sequenceNumber.
getPreviousSequenceNumber
public static int getPreviousSequenceNumber(int sequenceNumber)
Returns the previous sequence number from the sequenceNumber.
parse
public static @Nullable RtpPacket parse(ParsableByteArray packetBuffer)
Creates an RtpPacket from a ParsableByteArray.
| Parameters | |
|---|---|
ParsableByteArray packetBuffer |
The buffer that contains the RTP packet data. |
parse
public static @Nullable RtpPacket parse(byte[] buffer, int length)
Creates an RtpPacket from a byte array.
| Parameters | |
|---|---|
byte[] buffer |
The buffer that contains the RTP packet data. |
int length |
The length of the RTP packet. |
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 | |
|---|---|
byte[] target |
A target byte buffer to which the packet data is copied. |
int offset |
The offset into the target array at which to write. |
int length |
The maximum number of bytes that can be written. |
| Returns | |
|---|---|
int |
The number of bytes written, or |