From 0b8e9754ca7a8b2634aa3ebaa85681b51b540743 Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Tue, 25 Oct 2016 09:00:19 -0700 Subject: [PATCH] Pass initialization parameters to section readers Unlike with PesReaders, sections don't have a standard way of providing timestmaps or even generating tracks. We need to pass this information so that readers decide what to do with it. Issue:#726 ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=137162494 --- .../exoplayer2/extractor/ts/TsExtractorTest.java | 6 ++++++ .../extractor/ts/SectionPayloadReader.java | 15 +++++++++++++++ .../exoplayer2/extractor/ts/SectionReader.java | 3 +-- .../exoplayer2/extractor/ts/TsExtractor.java | 14 ++++++++++++-- .../exoplayer2/extractor/ts/TsPayloadReader.java | 7 ++++--- 5 files changed, 38 insertions(+), 7 deletions(-) diff --git a/library/src/androidTest/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java b/library/src/androidTest/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java index b271ea566c..58893f15c1 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java @@ -207,6 +207,12 @@ public final class TsExtractorTest extends InstrumentationTestCase { private int consumedSdts; + @Override + public void init(TimestampAdjuster timestampAdjuster, ExtractorOutput extractorOutput, + TrackIdGenerator idGenerator) { + // Do nothing. + } + @Override public void consume(ParsableByteArray sectionData) { // table_id(8), section_syntax_indicator(1), reserved_future_use(1), reserved(2), diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionPayloadReader.java b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionPayloadReader.java index 9be41af594..2bddc56582 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionPayloadReader.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionPayloadReader.java @@ -15,6 +15,10 @@ */ package com.google.android.exoplayer2.extractor.ts; +import com.google.android.exoplayer2.extractor.ExtractorOutput; +import com.google.android.exoplayer2.extractor.TimestampAdjuster; +import com.google.android.exoplayer2.extractor.TrackOutput; +import com.google.android.exoplayer2.extractor.ts.TsPayloadReader.TrackIdGenerator; import com.google.android.exoplayer2.util.ParsableByteArray; /** @@ -22,6 +26,17 @@ import com.google.android.exoplayer2.util.ParsableByteArray; */ public interface SectionPayloadReader { + /** + * Initializes the section payload reader. + * + * @param timestampAdjuster A timestamp adjuster for offsetting and scaling sample timestamps. + * @param extractorOutput The {@link ExtractorOutput} that receives the extracted data. + * @param idGenerator A {@link PesReader.TrackIdGenerator} that generates unique track ids for the + * {@link TrackOutput}s. + */ + void init(TimestampAdjuster timestampAdjuster, ExtractorOutput extractorOutput, + TrackIdGenerator idGenerator); + /** * Called by a {@link SectionReader} when a full section is received. * diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionReader.java b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionReader.java index ccf00f8d19..9a181897ab 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionReader.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/SectionReader.java @@ -43,8 +43,7 @@ public final class SectionReader implements TsPayloadReader { @Override public void init(TimestampAdjuster timestampAdjuster, ExtractorOutput extractorOutput, TrackIdGenerator idGenerator) { - // TODO: Injectable section readers might want to generate metadata tracks. - // Do nothing. + reader.init(timestampAdjuster, extractorOutput, idGenerator); } @Override diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java index 6913207529..219101b8d3 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java @@ -65,8 +65,6 @@ public final class TsExtractor implements Extractor { public static final int TS_STREAM_TYPE_H265 = 0x24; public static final int TS_STREAM_TYPE_ID3 = 0x15; - private static final String TAG = "TsExtractor"; - private static final int TS_PACKET_SIZE = 188; private static final int TS_SYNC_BYTE = 0x47; // First byte of each TS packet. private static final int TS_PAT_PID = 0; @@ -274,6 +272,12 @@ public final class TsExtractor implements Extractor { patScratch = new ParsableBitArray(new byte[4]); } + @Override + public void init(TimestampAdjuster timestampAdjuster, ExtractorOutput extractorOutput, + TrackIdGenerator idGenerator) { + // Do nothing. + } + @Override public void consume(ParsableByteArray sectionData) { // table_id(8), section_syntax_indicator(1), '0'(1), reserved(2), section_length(12), @@ -316,6 +320,12 @@ public final class TsExtractor implements Extractor { this.pid = pid; } + @Override + public void init(TimestampAdjuster timestampAdjuster, ExtractorOutput extractorOutput, + TrackIdGenerator idGenerator) { + // Do nothing. + } + @Override public void consume(ParsableByteArray sectionData) { // table_id(8), section_syntax_indicator(1), '0'(1), reserved(2), section_length(12), diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java index 3916be39c9..304c8c1282 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsPayloadReader.java @@ -99,9 +99,10 @@ public interface TsPayloadReader { /** * Initializes the payload reader. * - * @param timestampAdjuster - * @param extractorOutput - * @param idGenerator + * @param timestampAdjuster A timestamp adjuster for offsetting and scaling sample timestamps. + * @param extractorOutput The {@link ExtractorOutput} that receives the extracted data. + * @param idGenerator A {@link PesReader.TrackIdGenerator} that generates unique track ids for the + * {@link TrackOutput}s. */ void init(TimestampAdjuster timestampAdjuster, ExtractorOutput extractorOutput, TrackIdGenerator idGenerator);