Commit cbd65279 by apodob Committed by bachinger

Set format.sampleMimeType to TEXT_EXOPLAYER_CUES in SubtitleExtractor.

Samples are serialized using our custom CueEncoder. Information in
which format samples are encoded is needed by Renderer to decide which
decoder to use. Extractor receives Format object in the constructor and
prepares new Format object with sampleMimeType moved to codecs field
and new sampleMimeType set to "custom serialized exoplayer Cue".

PiperOrigin-RevId: 391739866
parent afc549fb
...@@ -96,6 +96,8 @@ public final class MimeTypes { ...@@ -96,6 +96,8 @@ public final class MimeTypes {
public static final String TEXT_VTT = BASE_TYPE_TEXT + "/vtt"; public static final String TEXT_VTT = BASE_TYPE_TEXT + "/vtt";
public static final String TEXT_SSA = BASE_TYPE_TEXT + "/x-ssa"; public static final String TEXT_SSA = BASE_TYPE_TEXT + "/x-ssa";
public static final String TEXT_EXOPLAYER_CUES = BASE_TYPE_TEXT + "/x-exoplayer-cues";
// application/ MIME types // application/ MIME types
public static final String APPLICATION_MP4 = BASE_TYPE_APPLICATION + "/mp4"; public static final String APPLICATION_MP4 = BASE_TYPE_APPLICATION + "/mp4";
......
...@@ -34,6 +34,7 @@ import com.google.android.exoplayer2.text.SubtitleDecoder; ...@@ -34,6 +34,7 @@ import com.google.android.exoplayer2.text.SubtitleDecoder;
import com.google.android.exoplayer2.text.SubtitleDecoderException; import com.google.android.exoplayer2.text.SubtitleDecoderException;
import com.google.android.exoplayer2.text.SubtitleInputBuffer; import com.google.android.exoplayer2.text.SubtitleInputBuffer;
import com.google.android.exoplayer2.text.SubtitleOutputBuffer; import com.google.android.exoplayer2.text.SubtitleOutputBuffer;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.ParsableByteArray; import com.google.android.exoplayer2.util.ParsableByteArray;
import com.google.common.primitives.Ints; import com.google.common.primitives.Ints;
import java.io.IOException; import java.io.IOException;
...@@ -94,7 +95,12 @@ public class SubtitleExtractor implements Extractor { ...@@ -94,7 +95,12 @@ public class SubtitleExtractor implements Extractor {
this.subtitleDecoder = subtitleDecoder; this.subtitleDecoder = subtitleDecoder;
cueEncoder = new CueEncoder(); cueEncoder = new CueEncoder();
subtitleData = new ParsableByteArray(); subtitleData = new ParsableByteArray();
this.format = format; this.format =
format
.buildUpon()
.setSampleMimeType(MimeTypes.TEXT_EXOPLAYER_CUES)
.setCodecs(format.sampleMimeType)
.build();
state = STATE_CREATED; state = STATE_CREATED;
} }
......
...@@ -27,6 +27,7 @@ import com.google.android.exoplayer2.testutil.FakeTrackOutput; ...@@ -27,6 +27,7 @@ import com.google.android.exoplayer2.testutil.FakeTrackOutput;
import com.google.android.exoplayer2.text.Cue; import com.google.android.exoplayer2.text.Cue;
import com.google.android.exoplayer2.text.CueDecoder; import com.google.android.exoplayer2.text.CueDecoder;
import com.google.android.exoplayer2.text.webvtt.WebvttDecoder; import com.google.android.exoplayer2.text.webvtt.WebvttDecoder;
import com.google.android.exoplayer2.util.MimeTypes;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.util.List; import java.util.List;
import org.junit.Test; import org.junit.Test;
...@@ -56,12 +57,16 @@ public class SubtitleExtractorTest { ...@@ -56,12 +57,16 @@ public class SubtitleExtractorTest {
.setSimulatePartialReads(true) .setSimulatePartialReads(true)
.build(); .build();
SubtitleExtractor extractor = SubtitleExtractor extractor =
new SubtitleExtractor(new WebvttDecoder(), new Format.Builder().build()); new SubtitleExtractor(
new WebvttDecoder(),
new Format.Builder().setSampleMimeType(MimeTypes.TEXT_VTT).build());
extractor.init(output); extractor.init(output);
while (extractor.read(input, null) != Extractor.RESULT_END_OF_INPUT) {} while (extractor.read(input, null) != Extractor.RESULT_END_OF_INPUT) {}
FakeTrackOutput trackOutput = output.trackOutputs.get(0); FakeTrackOutput trackOutput = output.trackOutputs.get(0);
assertThat(trackOutput.lastFormat.sampleMimeType).isEqualTo(MimeTypes.TEXT_EXOPLAYER_CUES);
assertThat(trackOutput.lastFormat.codecs).isEqualTo(MimeTypes.TEXT_VTT);
assertThat(trackOutput.getSampleCount()).isEqualTo(6); assertThat(trackOutput.getSampleCount()).isEqualTo(6);
// Check sample timestamps. // Check sample timestamps.
assertThat(trackOutput.getSampleTimeUs(0)).isEqualTo(0L); assertThat(trackOutput.getSampleTimeUs(0)).isEqualTo(0L);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment