From ef57a061b74d3d5ab5c2c5aa41aa725e70bbee6d Mon Sep 17 00:00:00 2001 From: Manisha Jajoo Date: Tue, 19 Jul 2022 11:45:39 +0530 Subject: [PATCH] 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. --- .../rtsp/reader/RtpH263ReaderTest.java | 46 +++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/reader/RtpH263ReaderTest.java b/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/reader/RtpH263ReaderTest.java index 7f010b6f6a..2bbef4befd 100644 --- a/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/reader/RtpH263ReaderTest.java +++ b/libraries/exoplayer_rtsp/src/test/java/androidx/media3/exoplayer/rtsp/reader/RtpH263ReaderTest.java @@ -28,6 +28,7 @@ import androidx.media3.test.utils.FakeTrackOutput; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableMap; import com.google.common.primitives.Bytes; +import java.util.Arrays; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -118,10 +119,10 @@ public final class RtpH263ReaderTest { h263Reader.createTracks(extractorOutput, /* trackId= */ 0); h263Reader.onReceivingFirstPacket( FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber); - consume(h263Reader, FRAME_1_FRAGMENT_1); + consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_1)); consume(h263Reader, FRAME_1_FRAGMENT_2); - consume(h263Reader, FRAME_2_FRAGMENT_1); - consume(h263Reader, FRAME_2_FRAGMENT_2); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2)); trackOutput = extractorOutput.trackOutputs.get(0); assertThat(trackOutput.getSampleCount()).isEqualTo(2); @@ -137,9 +138,9 @@ public final class RtpH263ReaderTest { h263Reader.createTracks(extractorOutput, /* trackId= */ 0); h263Reader.onReceivingFirstPacket( FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber); - consume(h263Reader, FRAME_1_FRAGMENT_2); - consume(h263Reader, FRAME_2_FRAGMENT_1); - consume(h263Reader, FRAME_2_FRAGMENT_2); + consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_2)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2)); trackOutput = extractorOutput.trackOutputs.get(0); assertThat(trackOutput.getSampleCount()).isEqualTo(1); @@ -153,9 +154,9 @@ public final class RtpH263ReaderTest { h263Reader.createTracks(extractorOutput, /* trackId= */ 0); h263Reader.onReceivingFirstPacket( FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber); - consume(h263Reader, FRAME_1_FRAGMENT_1); - consume(h263Reader, FRAME_2_FRAGMENT_1); - consume(h263Reader, FRAME_2_FRAGMENT_2); + consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_1)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2)); trackOutput = extractorOutput.trackOutputs.get(0); assertThat(trackOutput.getSampleCount()).isEqualTo(2); @@ -172,10 +173,10 @@ public final class RtpH263ReaderTest { h263Reader.createTracks(extractorOutput, /* trackId= */ 0); h263Reader.onReceivingFirstPacket( FRAME_1_FRAGMENT_1.timestamp, FRAME_1_FRAGMENT_1.sequenceNumber); - consume(h263Reader, FRAME_1_FRAGMENT_1); - consume(h263Reader, FRAME_2_FRAGMENT_1); - consume(h263Reader, FRAME_1_FRAGMENT_2); - consume(h263Reader, FRAME_2_FRAGMENT_2); + consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_1)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_1)); + consume(h263Reader, copyPacket(FRAME_1_FRAGMENT_2)); + consume(h263Reader, copyPacket(FRAME_2_FRAGMENT_2)); trackOutput = extractorOutput.trackOutputs.get(0); assertThat(trackOutput.getSampleCount()).isEqualTo(2); @@ -195,4 +196,23 @@ public final class RtpH263ReaderTest { rtpPacket.sequenceNumber, /* isFrameBoundary= */ rtpPacket.marker); } + + private static RtpPacket copyPacket(RtpPacket packet) { + RtpPacket.Builder builder = + new RtpPacket.Builder() + .setPadding(packet.padding) + .setMarker(packet.marker) + .setPayloadType(packet.payloadType) + .setSequenceNumber(packet.sequenceNumber) + .setTimestamp(packet.timestamp) + .setSsrc(packet.ssrc); + + if (packet.csrc.length > 0) { + builder.setCsrc(Arrays.copyOf(packet.csrc, packet.csrc.length)); + } + if (packet.payloadData.length > 0) { + builder.setPayloadData(Arrays.copyOf(packet.payloadData, packet.payloadData.length)); + } + return builder.build(); + } }