mirror of
https://github.com/samsonjs/media.git
synced 2026-04-12 12:25:47 +00:00
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
This commit is contained in:
parent
afc549fba4
commit
cbd6527926
3 changed files with 15 additions and 2 deletions
|
|
@ -96,6 +96,8 @@ public final class MimeTypes {
|
|||
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_EXOPLAYER_CUES = BASE_TYPE_TEXT + "/x-exoplayer-cues";
|
||||
|
||||
// application/ MIME types
|
||||
|
||||
public static final String APPLICATION_MP4 = BASE_TYPE_APPLICATION + "/mp4";
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import com.google.android.exoplayer2.text.SubtitleDecoder;
|
|||
import com.google.android.exoplayer2.text.SubtitleDecoderException;
|
||||
import com.google.android.exoplayer2.text.SubtitleInputBuffer;
|
||||
import com.google.android.exoplayer2.text.SubtitleOutputBuffer;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import com.google.android.exoplayer2.util.ParsableByteArray;
|
||||
import com.google.common.primitives.Ints;
|
||||
import java.io.IOException;
|
||||
|
|
@ -94,7 +95,12 @@ public class SubtitleExtractor implements Extractor {
|
|||
this.subtitleDecoder = subtitleDecoder;
|
||||
cueEncoder = new CueEncoder();
|
||||
subtitleData = new ParsableByteArray();
|
||||
this.format = format;
|
||||
this.format =
|
||||
format
|
||||
.buildUpon()
|
||||
.setSampleMimeType(MimeTypes.TEXT_EXOPLAYER_CUES)
|
||||
.setCodecs(format.sampleMimeType)
|
||||
.build();
|
||||
state = STATE_CREATED;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ import com.google.android.exoplayer2.testutil.FakeTrackOutput;
|
|||
import com.google.android.exoplayer2.text.Cue;
|
||||
import com.google.android.exoplayer2.text.CueDecoder;
|
||||
import com.google.android.exoplayer2.text.webvtt.WebvttDecoder;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.util.List;
|
||||
import org.junit.Test;
|
||||
|
|
@ -56,12 +57,16 @@ public class SubtitleExtractorTest {
|
|||
.setSimulatePartialReads(true)
|
||||
.build();
|
||||
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);
|
||||
|
||||
while (extractor.read(input, null) != Extractor.RESULT_END_OF_INPUT) {}
|
||||
|
||||
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);
|
||||
// Check sample timestamps.
|
||||
assertThat(trackOutput.getSampleTimeUs(0)).isEqualTo(0L);
|
||||
|
|
|
|||
Loading…
Reference in a new issue