Cleanup - Make PesReader classes static.
This avoids accessing PtsTimestampAdjuster through a thunk method, and allows the PesReader classes to be static, which is nice in general. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=117220139
This commit is contained in:
parent
02a2d5f932
commit
bccffb017d
@ -24,7 +24,6 @@ import com.google.android.exoplayer.extractor.SeekMap;
|
||||
import com.google.android.exoplayer.util.ParsableBitArray;
|
||||
import com.google.android.exoplayer.util.ParsableByteArray;
|
||||
|
||||
import android.util.Log;
|
||||
import android.util.SparseArray;
|
||||
|
||||
import java.io.IOException;
|
||||
@ -34,8 +33,6 @@ import java.io.IOException;
|
||||
*/
|
||||
public final class PsExtractor implements Extractor {
|
||||
|
||||
private static final String TAG = "PsExtractor";
|
||||
|
||||
private static final int PACK_START_CODE = 0x000001BA;
|
||||
private static final int SYSTEM_HEADER_START_CODE = 0x000001BB;
|
||||
private static final int PACKET_START_CODE_PREFIX = 0x000001;
|
||||
@ -159,7 +156,6 @@ public final class PsExtractor implements Extractor {
|
||||
input.skipFully(systemHeaderLength + 6);
|
||||
return RESULT_CONTINUE;
|
||||
} else if (((nextStartCode & 0xFFFFFF00) >> 8) != PACKET_START_CODE_PREFIX) {
|
||||
Log.w(TAG, "Missing PACKET_START_CODE_PREFIX!!");
|
||||
input.skipFully(1); // Skip bytes until we see a valid start code again.
|
||||
return RESULT_CONTINUE;
|
||||
}
|
||||
@ -172,30 +168,28 @@ public final class PsExtractor implements Extractor {
|
||||
PesReader payloadReader = psPayloadReaders.get(streamId);
|
||||
if (!foundAllTracks) {
|
||||
if (payloadReader == null) {
|
||||
if (streamId == PRIVATE_STREAM_1 && !foundAudioTrack) {
|
||||
ElementaryStreamReader elementaryStreamReader = null;
|
||||
if (!foundAudioTrack && streamId == PRIVATE_STREAM_1) {
|
||||
// Private stream, used for AC3 audio.
|
||||
// NOTE: This may need further parsing to determine if its DTS,
|
||||
// but that's likely only valid for DVDs.
|
||||
payloadReader = new PesReader(new Ac3Reader(output.track(streamId), false));
|
||||
psPayloadReaders.put(streamId, payloadReader);
|
||||
// NOTE: This may need further parsing to determine if its DTS, but that's likely only
|
||||
// valid for DVDs.
|
||||
elementaryStreamReader = new Ac3Reader(output.track(streamId), false);
|
||||
foundAudioTrack = true;
|
||||
Log.d(TAG, "Setup payload reader for AC3");
|
||||
} else if ((streamId & AUDIO_STREAM_MASK) == AUDIO_STREAM && !foundAudioTrack) {
|
||||
payloadReader = new PesReader(new MpegAudioReader(output.track(streamId)));
|
||||
psPayloadReaders.put(streamId, payloadReader);
|
||||
} else if (!foundAudioTrack && (streamId & AUDIO_STREAM_MASK) == AUDIO_STREAM) {
|
||||
elementaryStreamReader = new MpegAudioReader(output.track(streamId));
|
||||
foundAudioTrack = true;
|
||||
Log.d(TAG, "Setup payload reader for MP2");
|
||||
} else if ((streamId & VIDEO_STREAM_MASK) == VIDEO_STREAM && !foundVideoTrack) {
|
||||
payloadReader = new PesReader(new H262Reader(output.track(streamId)));
|
||||
psPayloadReaders.put(streamId, payloadReader);
|
||||
} else if (!foundVideoTrack && (streamId & VIDEO_STREAM_MASK) == VIDEO_STREAM) {
|
||||
elementaryStreamReader = new H262Reader(output.track(streamId));
|
||||
foundVideoTrack = true;
|
||||
Log.d(TAG, "Setup payload reader for MPEG2Video");
|
||||
}
|
||||
if (elementaryStreamReader != null) {
|
||||
payloadReader = new PesReader(elementaryStreamReader, ptsTimestampAdjuster);
|
||||
psPayloadReaders.put(streamId, payloadReader);
|
||||
}
|
||||
}
|
||||
if ((foundAudioTrack && foundVideoTrack) || input.getPosition() > MAX_SEARCH_LENGTH) {
|
||||
foundAllTracks = true;
|
||||
output.endTracks();
|
||||
Log.d(TAG, "Signalled that all tracks were found");
|
||||
}
|
||||
}
|
||||
|
||||
@ -229,12 +223,13 @@ public final class PsExtractor implements Extractor {
|
||||
/**
|
||||
* Parses PES packet data and extracts samples.
|
||||
*/
|
||||
private class PesReader {
|
||||
private static final class PesReader {
|
||||
|
||||
private static final int PES_SCRATCH_SIZE = 64;
|
||||
|
||||
private final ParsableBitArray pesScratch;
|
||||
private final ElementaryStreamReader pesPayloadReader;
|
||||
private final PtsTimestampAdjuster ptsTimestampAdjuster;
|
||||
private final ParsableBitArray pesScratch;
|
||||
|
||||
private boolean ptsFlag;
|
||||
private boolean dtsFlag;
|
||||
@ -242,8 +237,10 @@ public final class PsExtractor implements Extractor {
|
||||
private int extendedHeaderLength;
|
||||
private long timeUs;
|
||||
|
||||
public PesReader(ElementaryStreamReader pesPayloadReader) {
|
||||
public PesReader(ElementaryStreamReader pesPayloadReader,
|
||||
PtsTimestampAdjuster ptsTimestampAdjuster) {
|
||||
this.pesPayloadReader = pesPayloadReader;
|
||||
this.ptsTimestampAdjuster = ptsTimestampAdjuster;
|
||||
pesScratch = new ParsableBitArray(new byte[PES_SCRATCH_SIZE]);
|
||||
}
|
||||
|
||||
|
@ -372,7 +372,8 @@ public final class TsExtractor implements Extractor {
|
||||
|
||||
if (pesPayloadReader != null) {
|
||||
streamTypes.put(streamType, true);
|
||||
tsPayloadReaders.put(elementaryPid, new PesReader(pesPayloadReader));
|
||||
tsPayloadReaders.put(elementaryPid,
|
||||
new PesReader(pesPayloadReader, ptsTimestampAdjuster));
|
||||
}
|
||||
}
|
||||
|
||||
@ -423,7 +424,7 @@ public final class TsExtractor implements Extractor {
|
||||
/**
|
||||
* Parses PES packet data and extracts samples.
|
||||
*/
|
||||
private class PesReader extends TsPayloadReader {
|
||||
private static final class PesReader extends TsPayloadReader {
|
||||
|
||||
private static final int STATE_FINDING_HEADER = 0;
|
||||
private static final int STATE_READING_HEADER = 1;
|
||||
@ -434,8 +435,9 @@ public final class TsExtractor implements Extractor {
|
||||
private static final int MAX_HEADER_EXTENSION_SIZE = 10;
|
||||
private static final int PES_SCRATCH_SIZE = 10; // max(HEADER_SIZE, MAX_HEADER_EXTENSION_SIZE)
|
||||
|
||||
private final ParsableBitArray pesScratch;
|
||||
private final ElementaryStreamReader pesPayloadReader;
|
||||
private final PtsTimestampAdjuster ptsTimestampAdjuster;
|
||||
private final ParsableBitArray pesScratch;
|
||||
|
||||
private int state;
|
||||
private int bytesRead;
|
||||
@ -448,8 +450,10 @@ public final class TsExtractor implements Extractor {
|
||||
private boolean dataAlignmentIndicator;
|
||||
private long timeUs;
|
||||
|
||||
public PesReader(ElementaryStreamReader pesPayloadReader) {
|
||||
public PesReader(ElementaryStreamReader pesPayloadReader,
|
||||
PtsTimestampAdjuster ptsTimestampAdjuster) {
|
||||
this.pesPayloadReader = pesPayloadReader;
|
||||
this.ptsTimestampAdjuster = ptsTimestampAdjuster;
|
||||
pesScratch = new ParsableBitArray(new byte[PES_SCRATCH_SIZE]);
|
||||
state = STATE_FINDING_HEADER;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user