From c7fbf3437fba0b57c4039304c6240d4f5a05a614 Mon Sep 17 00:00:00 2001 From: Manisha Jajoo Date: Tue, 19 Jul 2022 11:40:01 +0530 Subject: [PATCH] Revert "Keep the input data constant in consume method" This reverts commit 3bacb1646c9ecd01e403465c7643888e83a9e79d. --- .../exoplayer/rtsp/reader/RtpH263Reader.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpH263Reader.java b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpH263Reader.java index 341d64256c..147887e665 100644 --- a/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpH263Reader.java +++ b/libraries/exoplayer_rtsp/src/main/java/androidx/media3/exoplayer/rtsp/reader/RtpH263Reader.java @@ -104,8 +104,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; // | RR |P|V| PLEN |PEBIT| // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ int currentPosition = data.getPosition(); - ParsableByteArray bitstreamData = new ParsableByteArray(data.getData().clone()); - int header = bitstreamData.readUnsignedShort(); + int header = data.readUnsignedShort(); boolean pBitIsSet = (header & 0x400) > 0; // Check if optional V (Video Redundancy Coding), PLEN or PEBIT is present, RFC4629 Section 5.1. @@ -124,16 +123,16 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } gotFirstPacketOfH263Frame = true; - int payloadStartCode = bitstreamData.peekUnsignedByte() & 0xFC; + int payloadStartCode = data.peekUnsignedByte() & 0xFC; // Packets that begin with a Picture Start Code(100000). Refer RFC4629 Section 6.1. if (payloadStartCode < PICTURE_START_CODE) { Log.w(TAG, "Picture start Code (PSC) missing, dropping packet."); return; } // Setting first two bytes of the start code. Refer RFC4629 Section 6.1.1. - bitstreamData.getData()[currentPosition] = 0; - bitstreamData.getData()[currentPosition + 1] = 0; - bitstreamData.setPosition(currentPosition); + data.getData()[currentPosition] = 0; + data.getData()[currentPosition + 1] = 0; + data.setPosition(currentPosition); } else if (gotFirstPacketOfH263Frame) { // Check that this packet is in the sequence of the previous packet. int expectedSequenceNumber = RtpPacket.getNextSequenceNumber(previousSequenceNumber); @@ -155,7 +154,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } if (fragmentedSampleSizeBytes == 0) { - parseVopHeader(bitstreamData, isOutputFormatSet); + parseVopHeader(data, isOutputFormatSet); if (!isOutputFormatSet && isKeyFrame) { if (width != payloadFormat.format.width || height != payloadFormat.format.height) { trackOutput.format( @@ -164,9 +163,9 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; isOutputFormatSet = true; } } - int fragmentSize = bitstreamData.bytesLeft(); + int fragmentSize = data.bytesLeft(); // Write the video sample. - trackOutput.sampleData(bitstreamData, fragmentSize); + trackOutput.sampleData(data, fragmentSize); fragmentedSampleSizeBytes += fragmentSize; sampleTimeUsOfFragmentedSample = toSampleUs(startTimeOffsetUs, timestamp, firstReceivedTimestamp);