Skip to content

Commit ef57a06

Browse files
committed
Pass local copy of input to RtpH263ReaderTest's consume method
This change is done to keep the frame data unchanged. RtpH263Reader changes the header data in input, so to send the same RTP packet across multiple tests, each test copies the frame data into a new packet and sends that to the reader.
1 parent c7fbf34 commit ef57a06

File tree

1 file changed

+33
-13
lines changed

1 file changed

+33
-13
lines changed

libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/reader/RtpH263ReaderTest.java

Lines changed: 33 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import androidx.test.ext.junit.runners.AndroidJUnit4;
2929
import com.google.common.collect.ImmutableMap;
3030
import com.google.common.primitives.Bytes;
31+
import java.util.Arrays;
3132
import org.junit.Before;
3233
import org.junit.Rule;
3334
import org.junit.Test;
@@ -118,10 +119,10 @@ public void consume_validPackets() {
118119
h263Reader.createTracks(extractorOutput, /* trackId= */ 0);
119120
h263Reader.onReceivingFirstPacket(
120121
FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber);
121-
consume(h263Reader, FRAME_1_FRAGMENT_1);
122+
consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_1));
122123
consume(h263Reader, FRAME_1_FRAGMENT_2);
123-
consume(h263Reader, FRAME_2_FRAGMENT_1);
124-
consume(h263Reader, FRAME_2_FRAGMENT_2);
124+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1));
125+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2));
125126

126127
trackOutput = extractorOutput.trackOutputs.get(0);
127128
assertThat(trackOutput.getSampleCount()).isEqualTo(2);
@@ -137,9 +138,9 @@ public void consume_fragmentedFrameMissingFirstFragment() {
137138
h263Reader.createTracks(extractorOutput, /* trackId= */ 0);
138139
h263Reader.onReceivingFirstPacket(
139140
FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber);
140-
consume(h263Reader, FRAME_1_FRAGMENT_2);
141-
consume(h263Reader, FRAME_2_FRAGMENT_1);
142-
consume(h263Reader, FRAME_2_FRAGMENT_2);
141+
consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_2));
142+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1));
143+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2));
143144

144145
trackOutput = extractorOutput.trackOutputs.get(0);
145146
assertThat(trackOutput.getSampleCount()).isEqualTo(1);
@@ -153,9 +154,9 @@ public void consume_fragmentedFrameMissingBoundaryFragment() {
153154
h263Reader.createTracks(extractorOutput, /* trackId= */ 0);
154155
h263Reader.onReceivingFirstPacket(
155156
FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber);
156-
consume(h263Reader, FRAME_1_FRAGMENT_1);
157-
consume(h263Reader, FRAME_2_FRAGMENT_1);
158-
consume(h263Reader, FRAME_2_FRAGMENT_2);
157+
consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_1));
158+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1));
159+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2));
159160

160161
trackOutput = extractorOutput.trackOutputs.get(0);
161162
assertThat(trackOutput.getSampleCount()).isEqualTo(2);
@@ -172,10 +173,10 @@ public void consume_outOfOrderPackets() {
172173
h263Reader.createTracks(extractorOutput, /* trackId= */ 0);
173174
h263Reader.onReceivingFirstPacket(
174175
FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber);
175-
consume(h263Reader, FRAME_1_FRAGMENT_1);
176-
consume(h263Reader, FRAME_2_FRAGMENT_1);
177-
consume(h263Reader, FRAME_1_FRAGMENT_2);
178-
consume(h263Reader, FRAME_2_FRAGMENT_2);
176+
consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_1));
177+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1));
178+
consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_2));
179+
consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2));
179180

180181
trackOutput = extractorOutput.trackOutputs.get(0);
181182
assertThat(trackOutput.getSampleCount()).isEqualTo(2);
@@ -195,4 +196,23 @@ private static void consume(RtpH263Reader h263Reader, RtpPacket rtpPacket) {
195196
rtpPacket.sequenceNumber,
196197
/* isFrameBoundary= */ rtpPacket.marker);
197198
}
199+
200+
private static RtpPacket copyPacket(RtpPacket packet) {
201+
RtpPacket.Builder builder =
202+
new RtpPacket.Builder()
203+
.setPadding(packet.padding)
204+
.setMarker(packet.marker)
205+
.setPayloadType(packet.payloadType)
206+
.setSequenceNumber(packet.sequenceNumber)
207+
.setTimestamp(packet.timestamp)
208+
.setSsrc(packet.ssrc);
209+
210+
if (packet.csrc.length > 0) {
211+
builder.setCsrc(Arrays.copyOf(packet.csrc, packet.csrc.length));
212+
}
213+
if (packet.payloadData.length > 0) {
214+
builder.setPayloadData(Arrays.copyOf(packet.payloadData, packet.payloadData.length));
215+
}
216+
return builder.build();
217+
}
198218
}

0 commit comments

Comments
 (0)