From 6aa80b334ab12bfd083170c8fa60ef7157ae725e Mon Sep 17 00:00:00 2001 From: Rohit Singh Date: Mon, 29 Apr 2024 16:48:04 +0100 Subject: [PATCH] Minor refactoring based on internal review --- .../androidx/media3/extractor/ts/MpeghReader.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java index 039248bbf6..8851cc8348 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java @@ -40,6 +40,7 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.List; import org.checkerframework.checker.nullness.qual.MonotonicNonNull; +import org.checkerframework.checker.nullness.qual.RequiresNonNull; /** Parses a continuous MPEG-H audio byte stream and extracts MPEG-H frames. */ @UnstableApi @@ -59,6 +60,10 @@ public final class MpeghReader implements ElementaryStreamReader { private static final int MIN_MHAS_PACKET_HEADER_SIZE = 2; private static final int MAX_MHAS_PACKET_HEADER_SIZE = 15; + private final ParsableByteArray headerScratchBytes; + private final ParsableBitArray headerScratchBits; + private final ParsableByteArray dataScratchBytes; + private @State int state; private @MonotonicNonNull String formatId; @@ -73,10 +78,6 @@ public final class MpeghReader implements ElementaryStreamReader { private int syncBytes; - private final ParsableByteArray headerScratchBytes; - private final ParsableBitArray headerScratchBits; - private final ParsableByteArray dataScratchBytes; - private boolean headerDataFinished; private int payloadBytesRead; private int frameBytes; @@ -175,18 +176,15 @@ public final class MpeghReader implements ElementaryStreamReader { // Prepare dataScratchBytes to read new MHAS packet dataScratchBytes.reset(header.packetLength); - // Signalize packet header processed completely headerDataFinished = true; // MHAS packet header finished -> obtain the packet payload state = STATE_READING_PACKET_PAYLOAD; } else if (headerScratchBytes.limit() < MAX_MHAS_PACKET_HEADER_SIZE) { headerScratchBytes.setLimit(headerScratchBytes.limit() + 1); - // Signalize pending packet header processing headerDataFinished = false; } } else { - // Signalize pending packet header processing headerDataFinished = false; } break; @@ -309,6 +307,7 @@ public final class MpeghReader implements ElementaryStreamReader { * * @param data A {@link ParsableByteArray} from which to read the sample data. */ + @RequiresNonNull("output") private void writeSampleData(ParsableByteArray data) { // read bytes from input data and write them into the output int bytesToRead = min(data.bytesLeft(), header.packetLength - payloadBytesRead); @@ -323,6 +322,7 @@ public final class MpeghReader implements ElementaryStreamReader { * MpeghUtil.Mpegh3daConfig} field. Must be byte-aligned. * @throws ParserException if a valid {@link MpeghUtil.Mpegh3daConfig} cannot be parsed. */ + @RequiresNonNull("output") private void parseConfig(ParsableBitArray bitArray) throws ParserException { MpeghUtil.Mpegh3daConfig config = MpeghUtil.parseMpegh3daConfig(bitArray); samplingRate = config.samplingFrequency; @@ -355,6 +355,7 @@ public final class MpeghReader implements ElementaryStreamReader { } /** Finalizes an MPEG-H frame. */ + @RequiresNonNull("output") private void finalizeFrame() { @C.BufferFlags int flag = 0; // if we have a frame with an mpegh3daConfig, set the obtained AU to a key frame