Remove saving unnecessary header extension data

This commit is contained in:
Kekelic 2024-07-08 09:24:46 +02:00 committed by microkatz
parent 5a8a250a1a
commit 84f8beb884
2 changed files with 7 additions and 81 deletions

View File

@ -63,15 +63,12 @@ public final class RtpPacket {
/** Builder class for an {@link RtpPacket} */
public static final class Builder {
private boolean padding;
private boolean extension;
private boolean marker;
private byte payloadType;
private int sequenceNumber;
private long timestamp;
private int ssrc;
private byte[] csrc = EMPTY;
private byte[] headerExtension = EMPTY;
private byte[] extensionPayload = EMPTY;
private byte[] payloadData = EMPTY;
/** Sets the {@link RtpPacket#padding}. The default is false. */
@ -81,13 +78,6 @@ public final class RtpPacket {
return this;
}
/** Sets the {@link RtpPacket#extension}. The default is false. */
@CanIgnoreReturnValue
public Builder setExtension(boolean extension) {
this.extension = extension;
return this;
}
/** Sets {@link RtpPacket#marker}. The default is false. */
@CanIgnoreReturnValue
public Builder setMarker(boolean marker) {
@ -132,26 +122,6 @@ public final class RtpPacket {
return this;
}
/**
* Sets {@link RtpPacket#headerExtension}. The default is an empty byte array.
*/
@CanIgnoreReturnValue
public Builder setHeaderExtension(byte[] headerExtension) {
checkNotNull(headerExtension);
this.headerExtension = headerExtension;
return this;
}
/**
* Sets {@link RtpPacket#extensionPayload}. The default is an empty byte array.
*/
@CanIgnoreReturnValue
public Builder setExtensionPayload(byte[] extensionPayload) {
checkNotNull(extensionPayload);
this.extensionPayload = extensionPayload;
return this;
}
/** Sets {@link RtpPacket#payloadData}. The default is an empty byte array. */
@CanIgnoreReturnValue
public Builder setPayloadData(byte[] payloadData) {
@ -173,7 +143,6 @@ public final class RtpPacket {
public static final int MIN_SEQUENCE_NUMBER = 0;
public static final int MAX_SEQUENCE_NUMBER = 0xFFFF;
public static final int CSRC_SIZE = 4;
public static final int HEADER_EXTENSION_SIZE = 4;
/** Returns the next sequence number of the {@code sequenceNumber}. */
public static int getNextSequenceNumber(int sequenceNumber) {
@ -217,12 +186,6 @@ public final class RtpPacket {
/** The RTP CSRC fields (Optional, up to 15 items). */
public final byte[] csrc;
/** The RTP header extension fields (Optional, 32 bits). */
public final byte[] headerExtension;
/** The RTP extension payload fields (Optional). */
public final byte[] extensionPayload;
public final byte[] payloadData;
/**
@ -272,21 +235,13 @@ public final class RtpPacket {
}
//Extension.
byte[] headerExtension;
byte[] extensionPayload;
if (hasExtension) {
headerExtension = new byte[HEADER_EXTENSION_SIZE];
packetBuffer.readBytes(headerExtension, 0, HEADER_EXTENSION_SIZE);
int extensionPayloadLength = (headerExtension[2] & 0xFF) << 8 | (headerExtension[3] & 0xFF);
if (extensionPayloadLength != 0) {
extensionPayload = new byte[extensionPayloadLength * 4];
packetBuffer.readBytes(extensionPayload, 0, extensionPayloadLength * 4);
}else {
extensionPayload = EMPTY;
int headerExtensionProfileData = packetBuffer.readShort();
int headerExtensionPayloadLength = packetBuffer.readShort();
if (headerExtensionPayloadLength != 0) {
byte[] extensionPayload = new byte[headerExtensionPayloadLength * 4];
packetBuffer.readBytes(extensionPayload, 0, headerExtensionPayloadLength * 4);
}
}else {
headerExtension = EMPTY;
extensionPayload = EMPTY;
}
// Everything else will be RTP payload.
@ -302,9 +257,6 @@ public final class RtpPacket {
.setTimestamp(timestamp)
.setSsrc(ssrc)
.setCsrc(csrc)
.setExtension(hasExtension)
.setHeaderExtension(headerExtension)
.setExtensionPayload(extensionPayload)
.setPayloadData(payloadData)
.build();
}
@ -323,7 +275,7 @@ public final class RtpPacket {
private RtpPacket(Builder builder) {
this.padding = builder.padding;
this.extension = builder.extension;
this.extension = false;
this.marker = builder.marker;
this.payloadType = builder.payloadType;
this.sequenceNumber = builder.sequenceNumber;
@ -331,8 +283,6 @@ public final class RtpPacket {
this.ssrc = builder.ssrc;
this.csrc = builder.csrc;
this.csrcCount = (byte) (this.csrc.length / CSRC_SIZE);
this.headerExtension = builder.headerExtension;
this.extensionPayload = builder.extensionPayload;
this.payloadData = builder.payloadData;
}
@ -371,8 +321,6 @@ public final class RtpPacket {
.putInt((int) timestamp)
.putInt(ssrc)
.put(csrc)
.put(headerExtension)
.put(extensionPayload)
.put(payloadData);
return packetLength;
}

View File

@ -133,7 +133,7 @@ public final class RtpPacketTest {
assertThat(packet.version).isEqualTo(RtpPacket.RTP_VERSION);
assertThat(packet.padding).isFalse();
assertThat(packet.extension).isTrue();
assertThat(packet.extension).isFalse();
assertThat(packet.csrcCount).isEqualTo(0);
assertThat(packet.csrc).hasLength(0);
assertThat(packet.marker).isFalse();
@ -228,28 +228,6 @@ public final class RtpPacketTest {
assertThat(builtPacketBytes).isEqualTo(rtpDataWithLargeTimestamp);
}
@Test
public void buildRtpPacketWithHeaderExtension_matchesPacketData() {
RtpPacket builtPacket =
new RtpPacket.Builder()
.setPadding(false)
.setExtension(true)
.setMarker(false)
.setPayloadType((byte) 96)
.setSequenceNumber(61514)
.setTimestamp(2000000000)
.setSsrc(0x35ff2773)
.setHeaderExtension(Arrays.copyOfRange(rtpDataExtension, 0, RtpPacket.HEADER_EXTENSION_SIZE))
.setExtensionPayload(Arrays.copyOfRange(rtpDataExtension, RtpPacket.HEADER_EXTENSION_SIZE, rtpDataExtension.length))
.setPayloadData(rtpWithHeaderExtensionPayloadData)
.build();
int packetSize = RtpPacket.MIN_HEADER_SIZE + rtpDataExtension.length + builtPacket.payloadData.length;
byte[] builtPacketBytes = new byte[packetSize];
builtPacket.writeToBuffer(builtPacketBytes, /* offset= */ 0, packetSize);
assertThat(builtPacketBytes).isEqualTo(rtpDataWithHeaderExtension);
}
@Test
public void getNextSequenceNumber_invokingAtWrapOver() {
assertThat(getNextSequenceNumber(65534)).isEqualTo(65535);