Commit 3a702cf5 by olly Committed by Oliver Woodman

Change Format.createTextSampleFormat for common uses cases

PiperOrigin-RevId: 292863614
parent d7551f97
...@@ -550,24 +550,12 @@ public final class Format implements Parcelable { ...@@ -550,24 +550,12 @@ public final class Format implements Parcelable {
@Nullable String sampleMimeType, @Nullable String sampleMimeType,
@C.SelectionFlags int selectionFlags, @C.SelectionFlags int selectionFlags,
@Nullable String language) { @Nullable String language) {
return createTextSampleFormat(id, sampleMimeType, selectionFlags, language, null);
}
public static Format createTextSampleFormat(
@Nullable String id,
@Nullable String sampleMimeType,
@C.SelectionFlags int selectionFlags,
@Nullable String language,
@Nullable DrmInitData drmInitData) {
return createTextSampleFormat( return createTextSampleFormat(
id, id,
sampleMimeType, sampleMimeType,
/* codecs= */ null,
/* bitrate= */ NO_VALUE,
selectionFlags, selectionFlags,
language, language,
NO_VALUE, NO_VALUE,
drmInitData,
OFFSET_SAMPLE_RELATIVE, OFFSET_SAMPLE_RELATIVE,
Collections.emptyList()); Collections.emptyList());
} }
...@@ -575,56 +563,9 @@ public final class Format implements Parcelable { ...@@ -575,56 +563,9 @@ public final class Format implements Parcelable {
public static Format createTextSampleFormat( public static Format createTextSampleFormat(
@Nullable String id, @Nullable String id,
@Nullable String sampleMimeType, @Nullable String sampleMimeType,
@Nullable String codecs,
int bitrate,
@C.SelectionFlags int selectionFlags, @C.SelectionFlags int selectionFlags,
@Nullable String language, @Nullable String language,
int accessibilityChannel, int accessibilityChannel,
@Nullable DrmInitData drmInitData) {
return createTextSampleFormat(
id,
sampleMimeType,
codecs,
bitrate,
selectionFlags,
language,
accessibilityChannel,
drmInitData,
OFFSET_SAMPLE_RELATIVE,
Collections.emptyList());
}
public static Format createTextSampleFormat(
@Nullable String id,
@Nullable String sampleMimeType,
@Nullable String codecs,
int bitrate,
@C.SelectionFlags int selectionFlags,
@Nullable String language,
@Nullable DrmInitData drmInitData,
long subsampleOffsetUs) {
return createTextSampleFormat(
id,
sampleMimeType,
codecs,
bitrate,
selectionFlags,
language,
/* accessibilityChannel= */ NO_VALUE,
drmInitData,
subsampleOffsetUs,
Collections.emptyList());
}
public static Format createTextSampleFormat(
@Nullable String id,
@Nullable String sampleMimeType,
@Nullable String codecs,
int bitrate,
@C.SelectionFlags int selectionFlags,
@Nullable String language,
int accessibilityChannel,
@Nullable DrmInitData drmInitData,
long subsampleOffsetUs, long subsampleOffsetUs,
@Nullable List<byte[]> initializationData) { @Nullable List<byte[]> initializationData) {
return new Format( return new Format(
...@@ -632,14 +573,14 @@ public final class Format implements Parcelable { ...@@ -632,14 +573,14 @@ public final class Format implements Parcelable {
/* label= */ null, /* label= */ null,
selectionFlags, selectionFlags,
/* roleFlags= */ 0, /* roleFlags= */ 0,
bitrate, /* bitrate= */ NO_VALUE,
codecs, /* codecs= */ null,
/* metadata= */ null, /* metadata= */ null,
/* containerMimeType= */ null, /* containerMimeType= */ null,
sampleMimeType, sampleMimeType,
/* maxInputSize= */ NO_VALUE, /* maxInputSize= */ NO_VALUE,
initializationData, initializationData,
drmInitData, /* drmInitData= */ null,
subsampleOffsetUs, subsampleOffsetUs,
/* width= */ NO_VALUE, /* width= */ NO_VALUE,
/* height= */ NO_VALUE, /* height= */ NO_VALUE,
......
...@@ -533,8 +533,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -533,8 +533,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
continue; continue;
} }
adaptationSetUsedFlags[i] = true; adaptationSetUsedFlags[i] = true;
Descriptor adaptationSetSwitchingProperty = findAdaptationSetSwitchingProperty( @Nullable
adaptationSets.get(i).supplementalProperties); Descriptor adaptationSetSwitchingProperty =
findAdaptationSetSwitchingProperty(adaptationSets.get(i).supplementalProperties);
if (adaptationSetSwitchingProperty == null) { if (adaptationSetSwitchingProperty == null) {
groupedAdaptationSetIndices[groupCount++] = new int[] {i}; groupedAdaptationSetIndices[groupCount++] = new int[] {i};
} else { } else {
...@@ -737,6 +738,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -737,6 +738,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
return stream; return stream;
} }
@Nullable
private static Descriptor findAdaptationSetSwitchingProperty(List<Descriptor> descriptors) { private static Descriptor findAdaptationSetSwitchingProperty(List<Descriptor> descriptors) {
for (int i = 0; i < descriptors.size(); i++) { for (int i = 0; i < descriptors.size(); i++) {
Descriptor descriptor = descriptors.get(i); Descriptor descriptor = descriptors.get(i);
...@@ -769,7 +771,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -769,7 +771,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
for (int j = 0; j < descriptors.size(); j++) { for (int j = 0; j < descriptors.size(); j++) {
Descriptor descriptor = descriptors.get(j); Descriptor descriptor = descriptors.get(j);
if ("urn:scte:dash:cc:cea-608:2015".equals(descriptor.schemeIdUri)) { if ("urn:scte:dash:cc:cea-608:2015".equals(descriptor.schemeIdUri)) {
String value = descriptor.value; @Nullable String value = descriptor.value;
if (value == null) { if (value == null) {
// There are embedded CEA-608 tracks, but service information is not declared. // There are embedded CEA-608 tracks, but service information is not declared.
return new Format[] {buildCea608TrackFormat(adaptationSet.id)}; return new Format[] {buildCea608TrackFormat(adaptationSet.id)};
...@@ -801,18 +803,15 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -801,18 +803,15 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
} }
private static Format buildCea608TrackFormat( private static Format buildCea608TrackFormat(
int adaptationSetId, String language, int accessibilityChannel) { int adaptationSetId, @Nullable String language, int accessibilityChannel) {
return Format.createTextSampleFormat( return Format.createTextSampleFormat(
adaptationSetId adaptationSetId
+ ":cea608" + ":cea608"
+ (accessibilityChannel != Format.NO_VALUE ? ":" + accessibilityChannel : ""), + (accessibilityChannel != Format.NO_VALUE ? ":" + accessibilityChannel : ""),
MimeTypes.APPLICATION_CEA608, MimeTypes.APPLICATION_CEA608,
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
/* selectionFlags= */ 0, /* selectionFlags= */ 0,
language, language,
accessibilityChannel, accessibilityChannel,
/* drmInitData= */ null,
Format.OFFSET_SAMPLE_RELATIVE, Format.OFFSET_SAMPLE_RELATIVE,
/* initializationData= */ null); /* initializationData= */ null);
} }
......
...@@ -2136,16 +2136,25 @@ public class MatroskaExtractor implements Extractor { ...@@ -2136,16 +2136,25 @@ public class MatroskaExtractor implements Extractor {
drmInitData); drmInitData);
} else if (MimeTypes.APPLICATION_SUBRIP.equals(mimeType)) { } else if (MimeTypes.APPLICATION_SUBRIP.equals(mimeType)) {
type = C.TRACK_TYPE_TEXT; type = C.TRACK_TYPE_TEXT;
format = Format.createTextSampleFormat(Integer.toString(trackId), mimeType, selectionFlags, format =
language, drmInitData); Format.createTextSampleFormat(
Integer.toString(trackId), mimeType, selectionFlags, language)
.copyWithDrmInitData(drmInitData);
} else if (MimeTypes.TEXT_SSA.equals(mimeType)) { } else if (MimeTypes.TEXT_SSA.equals(mimeType)) {
type = C.TRACK_TYPE_TEXT; type = C.TRACK_TYPE_TEXT;
initializationData = new ArrayList<>(2); initializationData = new ArrayList<>(2);
initializationData.add(SSA_DIALOGUE_FORMAT); initializationData.add(SSA_DIALOGUE_FORMAT);
initializationData.add(codecPrivate); initializationData.add(codecPrivate);
format = Format.createTextSampleFormat(Integer.toString(trackId), mimeType, null, format =
Format.NO_VALUE, selectionFlags, language, Format.NO_VALUE, drmInitData, Format.createTextSampleFormat(
Format.OFFSET_SAMPLE_RELATIVE, initializationData); Integer.toString(trackId),
mimeType,
selectionFlags,
language,
/* accessibilityChannel= */ Format.NO_VALUE,
Format.OFFSET_SAMPLE_RELATIVE,
initializationData)
.copyWithDrmInitData(drmInitData);
} else if (MimeTypes.APPLICATION_VOBSUB.equals(mimeType) } else if (MimeTypes.APPLICATION_VOBSUB.equals(mimeType)
|| MimeTypes.APPLICATION_PGS.equals(mimeType) || MimeTypes.APPLICATION_PGS.equals(mimeType)
|| MimeTypes.APPLICATION_DVBSUBS.equals(mimeType)) { || MimeTypes.APPLICATION_DVBSUBS.equals(mimeType)) {
......
...@@ -863,12 +863,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; ...@@ -863,12 +863,9 @@ import org.checkerframework.checker.nullness.compatqual.NullableType;
Format.createTextSampleFormat( Format.createTextSampleFormat(
Integer.toString(trackId), Integer.toString(trackId),
mimeType, mimeType,
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
/* selectionFlags= */ 0, /* selectionFlags= */ 0,
language, language,
/* accessibilityChannel= */ Format.NO_VALUE, /* accessibilityChannel= */ Format.NO_VALUE,
/* drmInitData= */ null,
subsampleOffsetUs, subsampleOffsetUs,
initializationData); initializationData);
} }
......
...@@ -261,12 +261,9 @@ public final class DefaultTsPayloadReaderFactory implements TsPayloadReader.Fact ...@@ -261,12 +261,9 @@ public final class DefaultTsPayloadReaderFactory implements TsPayloadReader.Fact
Format.createTextSampleFormat( Format.createTextSampleFormat(
/* id= */ null, /* id= */ null,
mimeType, mimeType,
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
/* selectionFlags= */ 0, /* selectionFlags= */ 0,
language, language,
accessibilityChannel, accessibilityChannel,
/* drmInitData= */ null,
Format.OFFSET_SAMPLE_RELATIVE, Format.OFFSET_SAMPLE_RELATIVE,
initializationData)); initializationData));
} }
......
...@@ -55,12 +55,9 @@ public final class SeiReader { ...@@ -55,12 +55,9 @@ public final class SeiReader {
Format.createTextSampleFormat( Format.createTextSampleFormat(
formatId, formatId,
channelMimeType, channelMimeType,
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
channelFormat.selectionFlags, channelFormat.selectionFlags,
channelFormat.language, channelFormat.language,
channelFormat.accessibilityChannel, channelFormat.accessibilityChannel,
/* drmInitData= */ null,
Format.OFFSET_SAMPLE_RELATIVE, Format.OFFSET_SAMPLE_RELATIVE,
channelFormat.initializationData)); channelFormat.initializationData));
outputs[i] = output; outputs[i] = output;
......
...@@ -54,12 +54,9 @@ import java.util.List; ...@@ -54,12 +54,9 @@ import java.util.List;
Format.createTextSampleFormat( Format.createTextSampleFormat(
idGenerator.getFormatId(), idGenerator.getFormatId(),
channelMimeType, channelMimeType,
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
channelFormat.selectionFlags, channelFormat.selectionFlags,
channelFormat.language, channelFormat.language,
channelFormat.accessibilityChannel, channelFormat.accessibilityChannel,
/* drmInitData= */ null,
Format.OFFSET_SAMPLE_RELATIVE, Format.OFFSET_SAMPLE_RELATIVE,
channelFormat.initializationData)); channelFormat.initializationData));
outputs[i] = output; outputs[i] = output;
......
...@@ -107,7 +107,7 @@ public final class TsExtractorTest { ...@@ -107,7 +107,7 @@ public final class TsExtractorTest {
TrackOutput trackOutput = reader.getTrackOutput(); TrackOutput trackOutput = reader.getTrackOutput();
assertThat(trackOutput == output.trackOutputs.get(257 /* PID of audio track. */)).isTrue(); assertThat(trackOutput == output.trackOutputs.get(257 /* PID of audio track. */)).isTrue();
assertThat(((FakeTrackOutput) trackOutput).format) assertThat(((FakeTrackOutput) trackOutput).format)
.isEqualTo(Format.createTextSampleFormat("1/257", "mime", null, 0, 0, "und", null, 0)); .isEqualTo(Format.createTextSampleFormat("1/257", "mime", /* selectionFlags= */ 0, "und"));
} }
@Test @Test
...@@ -204,7 +204,7 @@ public final class TsExtractorTest { ...@@ -204,7 +204,7 @@ public final class TsExtractorTest {
output = extractorOutput.track(idGenerator.getTrackId(), C.TRACK_TYPE_UNKNOWN); output = extractorOutput.track(idGenerator.getTrackId(), C.TRACK_TYPE_UNKNOWN);
output.format( output.format(
Format.createTextSampleFormat( Format.createTextSampleFormat(
idGenerator.getFormatId(), "mime", null, 0, 0, language, null, 0)); idGenerator.getFormatId(), "mime", /* selectionFlags= */ 0, language));
} }
@Override @Override
......
...@@ -186,8 +186,10 @@ public final class WebvttExtractor implements Extractor { ...@@ -186,8 +186,10 @@ public final class WebvttExtractor implements Extractor {
@RequiresNonNull("output") @RequiresNonNull("output")
private TrackOutput buildTrackOutput(long subsampleOffsetUs) { private TrackOutput buildTrackOutput(long subsampleOffsetUs) {
TrackOutput trackOutput = output.track(0, C.TRACK_TYPE_TEXT); TrackOutput trackOutput = output.track(0, C.TRACK_TYPE_TEXT);
trackOutput.format(Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, null, trackOutput.format(
Format.NO_VALUE, 0, language, null, subsampleOffsetUs)); Format.createTextSampleFormat(
/* id= */ null, MimeTypes.TEXT_VTT, /* selectionFlags= */ 0, language)
.copyWithSubsampleOffsetUs(subsampleOffsetUs));
output.endTracks(); output.endTracks();
return trackOutput; return trackOutput;
} }
......
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