Commit fce17e7f by aquilescanta Committed by Oliver Woodman

Added a trackSelectionFlags field to format.

This field will allow us to flexibly add information provided by the container
or streaming manifests related to the tracks that must be selected.
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=122559858
parent a16a333d
Showing with 41 additions and 41 deletions
...@@ -106,7 +106,7 @@ public final class FlacExtractor implements Extractor { ...@@ -106,7 +106,7 @@ public final class FlacExtractor implements Extractor {
Format mediaFormat = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_RAW, Format mediaFormat = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_RAW,
streamInfo.bitRate(), Format.NO_VALUE, streamInfo.channels, streamInfo.sampleRate, streamInfo.bitRate(), Format.NO_VALUE, streamInfo.channels, streamInfo.sampleRate,
C.ENCODING_PCM_16BIT, null, null, null); C.ENCODING_PCM_16BIT, null, null, 0, null);
trackOutput.format(mediaFormat); trackOutput.format(mediaFormat);
outputBuffer = new ParsableByteArray(streamInfo.maxDecodedFrameSize()); outputBuffer = new ParsableByteArray(streamInfo.maxDecodedFrameSize());
...@@ -120,8 +120,8 @@ public final class FlacExtractor implements Extractor { ...@@ -120,8 +120,8 @@ public final class FlacExtractor implements Extractor {
} }
trackOutput.sampleData(outputBuffer, size); trackOutput.sampleData(outputBuffer, size);
trackOutput trackOutput.sampleMetadata(decoder.getLastSampleTimestamp(), C.BUFFER_FLAG_KEY_FRAME, size, 0,
.sampleMetadata(decoder.getLastSampleTimestamp(), C.BUFFER_FLAG_KEY_FRAME, size, 0, null); null);
return decoder.isEndOfData() ? RESULT_END_OF_INPUT : RESULT_CONTINUE; return decoder.isEndOfData() ? RESULT_END_OF_INPUT : RESULT_CONTINUE;
} }
......
...@@ -60,7 +60,7 @@ public final class FormatTest extends TestCase { ...@@ -60,7 +60,7 @@ public final class FormatTest extends TestCase {
DrmInitData drmInitData = new DrmInitData(DRM_DATA_1, DRM_DATA_2); DrmInitData drmInitData = new DrmInitData(DRM_DATA_1, DRM_DATA_2);
Format formatToParcel = new Format("id", MimeTypes.VIDEO_MP4, MimeTypes.VIDEO_H264, 1024, 2048, Format formatToParcel = new Format("id", MimeTypes.VIDEO_MP4, MimeTypes.VIDEO_H264, 1024, 2048,
1920, 1080, 24, 90, 2, 6, 44100, C.ENCODING_PCM_24BIT, 1001, 1002, "und", 1920, 1080, 24, 90, 2, 6, 44100, C.ENCODING_PCM_24BIT, 1001, 1002, 0, "und",
Format.OFFSET_SAMPLE_RELATIVE, INIT_DATA, drmInitData, false); Format.OFFSET_SAMPLE_RELATIVE, INIT_DATA, drmInitData, false);
Parcel parcel = Parcel.obtain(); Parcel parcel = Parcel.obtain();
...@@ -84,13 +84,13 @@ public final class FormatTest extends TestCase { ...@@ -84,13 +84,13 @@ public final class FormatTest extends TestCase {
testConversionToFrameworkMediaFormatV16(Format.createVideoSampleFormat(null, "video/xyz", 5000, testConversionToFrameworkMediaFormatV16(Format.createVideoSampleFormat(null, "video/xyz", 5000,
Format.NO_VALUE, 1280, 720, 30, null, null)); Format.NO_VALUE, 1280, 720, 30, null, null));
testConversionToFrameworkMediaFormatV16(Format.createAudioSampleFormat(null, "audio/xyz", 500, testConversionToFrameworkMediaFormatV16(Format.createAudioSampleFormat(null, "audio/xyz", 500,
128, 5, 44100, INIT_DATA, null, null)); 128, 5, 44100, INIT_DATA, null, 0, null));
testConversionToFrameworkMediaFormatV16(Format.createAudioSampleFormat(null, "audio/xyz", 500, testConversionToFrameworkMediaFormatV16(Format.createAudioSampleFormat(null, "audio/xyz", 500,
Format.NO_VALUE, 5, 44100, null, null, null)); Format.NO_VALUE, 5, 44100, null, null, 0, null));
testConversionToFrameworkMediaFormatV16(Format.createTextSampleFormat(null, "text/xyz", testConversionToFrameworkMediaFormatV16(Format.createTextSampleFormat(null, "text/xyz",
Format.NO_VALUE, "eng", null)); Format.NO_VALUE, 0, "eng", null));
testConversionToFrameworkMediaFormatV16(Format.createTextSampleFormat(null, "text/xyz", testConversionToFrameworkMediaFormatV16(Format.createTextSampleFormat(null, "text/xyz",
Format.NO_VALUE, null, null)); Format.NO_VALUE, 0, null, null));
} }
@SuppressLint("InlinedApi") @SuppressLint("InlinedApi")
......
...@@ -333,7 +333,7 @@ public final class FrameworkSampleSource implements SampleSource { ...@@ -333,7 +333,7 @@ public final class FrameworkSampleSource implements SampleSource {
int pcmEncoding = MimeTypes.AUDIO_RAW.equals(mimeType) ? C.ENCODING_PCM_16BIT : Format.NO_VALUE; int pcmEncoding = MimeTypes.AUDIO_RAW.equals(mimeType) ? C.ENCODING_PCM_16BIT : Format.NO_VALUE;
Format format = new Format(Integer.toString(index), null, mimeType, Format.NO_VALUE, Format format = new Format(Integer.toString(index), null, mimeType, Format.NO_VALUE,
maxInputSize, width, height, frameRate, rotationDegrees, Format.NO_VALUE, channelCount, maxInputSize, width, height, frameRate, rotationDegrees, Format.NO_VALUE, channelCount,
sampleRate, pcmEncoding, encoderDelay, encoderPadding, language, sampleRate, pcmEncoding, encoderDelay, encoderPadding, 0, language,
Format.OFFSET_SAMPLE_RELATIVE, initializationData, drmInitData, false); Format.OFFSET_SAMPLE_RELATIVE, initializationData, drmInitData, false);
format.setFrameworkMediaFormatV16(mediaFormat); format.setFrameworkMediaFormatV16(mediaFormat);
return format; return format;
......
...@@ -411,9 +411,9 @@ public class MediaPresentationDescriptionParser extends DefaultHandler ...@@ -411,9 +411,9 @@ public class MediaPresentationDescriptionParser extends DefaultHandler
width, height, frameRate, null); width, height, frameRate, null);
} else if (MimeTypes.isAudio(sampleMimeType)) { } else if (MimeTypes.isAudio(sampleMimeType)) {
return Format.createAudioContainerFormat(id, containerMimeType, sampleMimeType, bitrate, return Format.createAudioContainerFormat(id, containerMimeType, sampleMimeType, bitrate,
audioChannels, audioSamplingRate, null, language); audioChannels, audioSamplingRate, null, 0, language);
} else if (mimeTypeIsRawText(sampleMimeType)) { } else if (mimeTypeIsRawText(sampleMimeType)) {
return Format.createTextContainerFormat(id, containerMimeType, sampleMimeType, bitrate, return Format.createTextContainerFormat(id, containerMimeType, sampleMimeType, bitrate, 0,
language); language);
} else { } else {
return Format.createContainerFormat(id, containerMimeType, sampleMimeType, bitrate); return Format.createContainerFormat(id, containerMimeType, sampleMimeType, bitrate);
......
...@@ -144,7 +144,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements ...@@ -144,7 +144,7 @@ public abstract class AudioDecoderTrackRenderer extends TrackRenderer implements
protected Format getOutputFormat() { protected Format getOutputFormat() {
return Format.createAudioSampleFormat(null, MimeTypes.AUDIO_RAW, Format.NO_VALUE, return Format.createAudioSampleFormat(null, MimeTypes.AUDIO_RAW, Format.NO_VALUE,
Format.NO_VALUE, inputFormat.channelCount, inputFormat.sampleRate, C.ENCODING_PCM_16BIT, Format.NO_VALUE, inputFormat.channelCount, inputFormat.sampleRate, C.ENCODING_PCM_16BIT,
null, null, null); null, null, 0, null);
} }
private boolean drainOutputBuffer() throws AudioDecoderException, private boolean drainOutputBuffer() throws AudioDecoderException,
......
...@@ -88,7 +88,7 @@ import java.util.Collections; ...@@ -88,7 +88,7 @@ import java.util.Collections;
audioSpecifiConfig); audioSpecifiConfig);
Format format = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_AAC, Format format = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_AAC,
Format.NO_VALUE, Format.NO_VALUE, audioParams.second, audioParams.first, Format.NO_VALUE, Format.NO_VALUE, audioParams.second, audioParams.first,
Collections.singletonList(audioSpecifiConfig), null, null); Collections.singletonList(audioSpecifiConfig), null, 0, null);
output.format(format); output.format(format);
hasOutputFormat = true; hasOutputFormat = true;
} else if (packetType == AAC_PACKET_TYPE_AAC_RAW) { } else if (packetType == AAC_PACKET_TYPE_AAC_RAW) {
......
...@@ -1324,7 +1324,7 @@ public final class MatroskaExtractor implements Extractor { ...@@ -1324,7 +1324,7 @@ public final class MatroskaExtractor implements Extractor {
if (MimeTypes.isAudio(mimeType)) { if (MimeTypes.isAudio(mimeType)) {
format = Format.createAudioSampleFormat(Integer.toString(trackId), mimeType, format = Format.createAudioSampleFormat(Integer.toString(trackId), mimeType,
Format.NO_VALUE, maxInputSize, channelCount, sampleRate, pcmEncoding, Format.NO_VALUE, maxInputSize, channelCount, sampleRate, pcmEncoding,
initializationData, drmInitData, language); initializationData, drmInitData, 0, language);
} else if (MimeTypes.isVideo(mimeType)) { } else if (MimeTypes.isVideo(mimeType)) {
if (displayUnit == Track.DISPLAY_UNIT_PIXELS) { if (displayUnit == Track.DISPLAY_UNIT_PIXELS) {
displayWidth = displayWidth == Format.NO_VALUE ? width : displayWidth; displayWidth = displayWidth == Format.NO_VALUE ? width : displayWidth;
...@@ -1339,7 +1339,7 @@ public final class MatroskaExtractor implements Extractor { ...@@ -1339,7 +1339,7 @@ public final class MatroskaExtractor implements Extractor {
Format.NO_VALUE, pixelWidthHeightRatio, drmInitData); Format.NO_VALUE, pixelWidthHeightRatio, drmInitData);
} else if (MimeTypes.APPLICATION_SUBRIP.equals(mimeType)) { } else if (MimeTypes.APPLICATION_SUBRIP.equals(mimeType)) {
format = Format.createTextSampleFormat(Integer.toString(trackId), mimeType, Format.NO_VALUE, format = Format.createTextSampleFormat(Integer.toString(trackId), mimeType, Format.NO_VALUE,
language, drmInitData); 0, language, 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)) {
format = Format.createImageSampleFormat(Integer.toString(trackId), mimeType, format = Format.createImageSampleFormat(Integer.toString(trackId), mimeType,
......
...@@ -128,7 +128,7 @@ public final class Mp3Extractor implements Extractor { ...@@ -128,7 +128,7 @@ public final class Mp3Extractor implements Extractor {
trackOutput.format(Format.createAudioSampleFormat(null, synchronizedHeader.mimeType, trackOutput.format(Format.createAudioSampleFormat(null, synchronizedHeader.mimeType,
Format.NO_VALUE, MpegAudioHeader.MAX_FRAME_SIZE_BYTES, synchronizedHeader.channels, Format.NO_VALUE, MpegAudioHeader.MAX_FRAME_SIZE_BYTES, synchronizedHeader.channels,
synchronizedHeader.sampleRate, Format.NO_VALUE, gaplessInfoHolder.encoderDelay, synchronizedHeader.sampleRate, Format.NO_VALUE, gaplessInfoHolder.encoderDelay,
gaplessInfoHolder.encoderPadding, null, null, null)); gaplessInfoHolder.encoderPadding, null, null, 0, null));
} }
return readSample(input); return readSample(input);
} }
......
...@@ -602,16 +602,16 @@ import java.util.List; ...@@ -602,16 +602,16 @@ import java.util.List;
language, isQuickTime, drmInitData, out, i); language, isQuickTime, drmInitData, out, i);
} else if (childAtomType == Atom.TYPE_TTML) { } else if (childAtomType == Atom.TYPE_TTML) {
out.format = Format.createTextSampleFormat(Integer.toString(trackId), out.format = Format.createTextSampleFormat(Integer.toString(trackId),
MimeTypes.APPLICATION_TTML, Format.NO_VALUE, language, drmInitData); MimeTypes.APPLICATION_TTML, Format.NO_VALUE, 0, language, drmInitData);
} else if (childAtomType == Atom.TYPE_tx3g) { } else if (childAtomType == Atom.TYPE_tx3g) {
out.format = Format.createTextSampleFormat(Integer.toString(trackId), out.format = Format.createTextSampleFormat(Integer.toString(trackId),
MimeTypes.APPLICATION_TX3G, Format.NO_VALUE, language, drmInitData); MimeTypes.APPLICATION_TX3G, Format.NO_VALUE, 0, language, drmInitData);
} else if (childAtomType == Atom.TYPE_wvtt) { } else if (childAtomType == Atom.TYPE_wvtt) {
out.format = Format.createTextSampleFormat(Integer.toString(trackId), out.format = Format.createTextSampleFormat(Integer.toString(trackId),
MimeTypes.APPLICATION_MP4VTT, Format.NO_VALUE, language, drmInitData); MimeTypes.APPLICATION_MP4VTT, Format.NO_VALUE, 0, language, drmInitData);
} else if (childAtomType == Atom.TYPE_stpp) { } else if (childAtomType == Atom.TYPE_stpp) {
out.format = Format.createTextSampleFormat(Integer.toString(trackId), out.format = Format.createTextSampleFormat(Integer.toString(trackId),
MimeTypes.APPLICATION_TTML, Format.NO_VALUE, language, drmInitData, MimeTypes.APPLICATION_TTML, Format.NO_VALUE, 0, language, drmInitData,
0 /* subsample timing is absolute */); 0 /* subsample timing is absolute */);
} }
stsd.setPosition(childStartPosition + childAtomSize); stsd.setPosition(childStartPosition + childAtomSize);
...@@ -948,7 +948,7 @@ import java.util.List; ...@@ -948,7 +948,7 @@ import java.util.List;
|| atomType == Atom.TYPE_dtsh || atomType == Atom.TYPE_dtsl) || atomType == Atom.TYPE_dtsh || atomType == Atom.TYPE_dtsl)
&& childAtomType == Atom.TYPE_ddts) { && childAtomType == Atom.TYPE_ddts) {
out.format = Format.createAudioSampleFormat(Integer.toString(trackId), mimeType, out.format = Format.createAudioSampleFormat(Integer.toString(trackId), mimeType,
Format.NO_VALUE, Format.NO_VALUE, channelCount, sampleRate, null, drmInitData, Format.NO_VALUE, Format.NO_VALUE, channelCount, sampleRate, null, drmInitData, 0,
language); language);
return; return;
} }
...@@ -966,7 +966,7 @@ import java.util.List; ...@@ -966,7 +966,7 @@ import java.util.List;
out.format = Format.createAudioSampleFormat(Integer.toString(trackId), mimeType, out.format = Format.createAudioSampleFormat(Integer.toString(trackId), mimeType,
Format.NO_VALUE, Format.NO_VALUE, channelCount, sampleRate, pcmEncoding, Format.NO_VALUE, Format.NO_VALUE, channelCount, sampleRate, pcmEncoding,
initializationData == null ? null : Collections.singletonList(initializationData), initializationData == null ? null : Collections.singletonList(initializationData),
drmInitData, language); drmInitData, 0, language);
} }
/** Returns the position of the esds box within a parent, or -1 if no esds box is found */ /** Returns the position of the esds box within a parent, or -1 if no esds box is found */
......
...@@ -68,7 +68,7 @@ import java.util.List; ...@@ -68,7 +68,7 @@ import java.util.List;
List<byte[]> initializationData = Collections.singletonList(metadata); List<byte[]> initializationData = Collections.singletonList(metadata);
trackOutput.format(Format.createAudioSampleFormat(null, MimeTypes.AUDIO_FLAC, trackOutput.format(Format.createAudioSampleFormat(null, MimeTypes.AUDIO_FLAC,
streamInfo.bitRate(), Format.NO_VALUE, streamInfo.channels, streamInfo.sampleRate, streamInfo.bitRate(), Format.NO_VALUE, streamInfo.channels, streamInfo.sampleRate,
initializationData, null, null)); initializationData, null, 0, null));
} else if (data[0] == AUDIO_PACKET_TYPE) { } else if (data[0] == AUDIO_PACKET_TYPE) {
if (!firstAudioPacketProcessed) { if (!firstAudioPacketProcessed) {
if (seekTable != null) { if (seekTable != null) {
......
...@@ -74,7 +74,7 @@ import java.util.List; ...@@ -74,7 +74,7 @@ import java.util.List;
List<byte[]> initializationData = Collections.singletonList(metadata); List<byte[]> initializationData = Collections.singletonList(metadata);
trackOutput.format(Format.createAudioSampleFormat(null, MimeTypes.AUDIO_OPUS, trackOutput.format(Format.createAudioSampleFormat(null, MimeTypes.AUDIO_OPUS,
Format.NO_VALUE, Format.NO_VALUE, channelCount, SAMPLE_RATE, Format.NO_VALUE, Format.NO_VALUE, channelCount, SAMPLE_RATE,
initializationData, null, null)); initializationData, null, 0, null));
state = STATE_READ_TAGS; state = STATE_READ_TAGS;
} break; } break;
case STATE_READ_TAGS: case STATE_READ_TAGS:
......
...@@ -96,7 +96,7 @@ import java.util.ArrayList; ...@@ -96,7 +96,7 @@ import java.util.ArrayList;
trackOutput.format(Format.createAudioSampleFormat(null, MimeTypes.AUDIO_VORBIS, trackOutput.format(Format.createAudioSampleFormat(null, MimeTypes.AUDIO_VORBIS,
this.vorbisSetup.idHeader.bitrateNominal, OggParser.OGG_MAX_SEGMENT_SIZE * 255, this.vorbisSetup.idHeader.bitrateNominal, OggParser.OGG_MAX_SEGMENT_SIZE * 255,
this.vorbisSetup.idHeader.channels, (int) this.vorbisSetup.idHeader.sampleRate, this.vorbisSetup.idHeader.channels, (int) this.vorbisSetup.idHeader.sampleRate,
codecInitialisationData, null, null)); codecInitialisationData, null, 0, null));
if (inputLength != C.LENGTH_UNBOUNDED) { if (inputLength != C.LENGTH_UNBOUNDED) {
oggSeeker.setup(inputLength - audioStartPosition, totalSamples); oggSeeker.setup(inputLength - audioStartPosition, totalSamples);
......
...@@ -276,7 +276,7 @@ import java.util.Collections; ...@@ -276,7 +276,7 @@ import java.util.Collections;
Format format = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_AAC, Format.NO_VALUE, Format format = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_AAC, Format.NO_VALUE,
Format.NO_VALUE, audioParams.second, audioParams.first, Format.NO_VALUE, audioParams.second, audioParams.first,
Collections.singletonList(audioSpecificConfig), null, null); Collections.singletonList(audioSpecificConfig), null, 0, null);
// In this class a sample is an access unit, but the MediaFormat sample rate specifies the // In this class a sample is an access unit, but the MediaFormat sample rate specifies the
// number of PCM audio samples per second. // number of PCM audio samples per second.
sampleDurationUs = (C.MICROS_PER_SECOND * 1024) / format.sampleRate; sampleDurationUs = (C.MICROS_PER_SECOND * 1024) / format.sampleRate;
......
...@@ -163,7 +163,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; ...@@ -163,7 +163,7 @@ import com.google.android.exoplayer.util.ParsableByteArray;
if (!hasOutputFormat) { if (!hasOutputFormat) {
frameDurationUs = (C.MICROS_PER_SECOND * header.samplesPerFrame) / header.sampleRate; frameDurationUs = (C.MICROS_PER_SECOND * header.samplesPerFrame) / header.sampleRate;
Format format = Format.createAudioSampleFormat(null, header.mimeType, Format.NO_VALUE, Format format = Format.createAudioSampleFormat(null, header.mimeType, Format.NO_VALUE,
MpegAudioHeader.MAX_FRAME_SIZE_BYTES, header.channels, header.sampleRate, null, null, MpegAudioHeader.MAX_FRAME_SIZE_BYTES, header.channels, header.sampleRate, null, null, 0,
null); null);
output.format(format); output.format(format);
hasOutputFormat = true; hasOutputFormat = true;
......
...@@ -34,7 +34,7 @@ import com.google.android.exoplayer.util.ParsableByteArray; ...@@ -34,7 +34,7 @@ import com.google.android.exoplayer.util.ParsableByteArray;
public SeiReader(TrackOutput output) { public SeiReader(TrackOutput output) {
this.output = output; this.output = output;
output.format(Format.createTextSampleFormat(null, MimeTypes.APPLICATION_EIA608, Format.NO_VALUE, output.format(Format.createTextSampleFormat(null, MimeTypes.APPLICATION_EIA608, Format.NO_VALUE,
null, null)); 0, null, null));
} }
public void consume(long pesTimeUs, ParsableByteArray seiBuffer) { public void consume(long pesTimeUs, ParsableByteArray seiBuffer) {
......
...@@ -74,7 +74,7 @@ public final class WavExtractor implements Extractor, SeekMap { ...@@ -74,7 +74,7 @@ public final class WavExtractor implements Extractor, SeekMap {
} }
Format format = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_RAW, Format format = Format.createAudioSampleFormat(null, MimeTypes.AUDIO_RAW,
wavHeader.getBitrate(), MAX_INPUT_SIZE, wavHeader.getNumChannels(), wavHeader.getBitrate(), MAX_INPUT_SIZE, wavHeader.getNumChannels(),
wavHeader.getSampleRateHz(), wavHeader.getEncoding(), null, null, null); wavHeader.getSampleRateHz(), wavHeader.getEncoding(), null, null, 0, null);
trackOutput.format(format); trackOutput.format(format);
bytesPerFrame = wavHeader.getBytesPerFrame(); bytesPerFrame = wavHeader.getBytesPerFrame();
} }
......
...@@ -526,7 +526,7 @@ import java.util.List; ...@@ -526,7 +526,7 @@ import java.util.List;
return sampleFormat; return sampleFormat;
} }
return sampleFormat.copyWithContainerInfo(containerFormat.id, containerFormat.bitrate, return sampleFormat.copyWithContainerInfo(containerFormat.id, containerFormat.bitrate,
containerFormat.width, containerFormat.height, containerFormat.language); containerFormat.width, containerFormat.height, 0, containerFormat.language);
} }
/** /**
......
...@@ -165,7 +165,7 @@ import java.util.regex.Pattern; ...@@ -165,7 +165,7 @@ import java.util.regex.Pattern;
private TrackOutput buildTrackOutput(long subsampleOffsetUs) { private TrackOutput buildTrackOutput(long subsampleOffsetUs) {
TrackOutput trackOutput = output.track(0); TrackOutput trackOutput = output.track(0);
trackOutput.format(Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, Format.NO_VALUE, trackOutput.format(Format.createTextSampleFormat(null, MimeTypes.TEXT_VTT, Format.NO_VALUE, 0,
language, null, subsampleOffsetUs)); language, null, subsampleOffsetUs));
output.endTracks(); output.endTracks();
return trackOutput; return trackOutput;
......
...@@ -168,7 +168,7 @@ public final class HlsPlaylistParser implements UriLoadable.Parser<HlsPlaylist> ...@@ -168,7 +168,7 @@ public final class HlsPlaylistParser implements UriLoadable.Parser<HlsPlaylist>
String captionName = HlsParserUtil.parseStringAttr(line, NAME_ATTR_REGEX, NAME_ATTR); String captionName = HlsParserUtil.parseStringAttr(line, NAME_ATTR_REGEX, NAME_ATTR);
String language = HlsParserUtil.parseOptionalStringAttr(line, LANGUAGE_ATTR_REGEX); String language = HlsParserUtil.parseOptionalStringAttr(line, LANGUAGE_ATTR_REGEX);
muxedCaptionFormat = Format.createTextContainerFormat(captionName, muxedCaptionFormat = Format.createTextContainerFormat(captionName,
MimeTypes.APPLICATION_M3U8, MimeTypes.APPLICATION_EIA608, -1, language); MimeTypes.APPLICATION_M3U8, MimeTypes.APPLICATION_EIA608, -1, 0, language);
} }
} else if (SUBTITLES_TYPE.equals(type)) { } else if (SUBTITLES_TYPE.equals(type)) {
// We assume all subtitles belong to the same group. // We assume all subtitles belong to the same group.
...@@ -176,7 +176,7 @@ public final class HlsPlaylistParser implements UriLoadable.Parser<HlsPlaylist> ...@@ -176,7 +176,7 @@ public final class HlsPlaylistParser implements UriLoadable.Parser<HlsPlaylist>
String uri = HlsParserUtil.parseStringAttr(line, URI_ATTR_REGEX, URI_ATTR); String uri = HlsParserUtil.parseStringAttr(line, URI_ATTR_REGEX, URI_ATTR);
String language = HlsParserUtil.parseOptionalStringAttr(line, LANGUAGE_ATTR_REGEX); String language = HlsParserUtil.parseOptionalStringAttr(line, LANGUAGE_ATTR_REGEX);
Format format = Format.createTextContainerFormat(subtitleName, MimeTypes.APPLICATION_M3U8, Format format = Format.createTextContainerFormat(subtitleName, MimeTypes.APPLICATION_M3U8,
MimeTypes.TEXT_VTT, bitrate, language); MimeTypes.TEXT_VTT, bitrate, 0, language);
subtitles.add(new Variant(uri, format, codecs)); subtitles.add(new Variant(uri, format, codecs));
} else if (AUDIO_TYPE.equals(type)) { } else if (AUDIO_TYPE.equals(type)) {
// We assume all audios belong to the same group. // We assume all audios belong to the same group.
...@@ -185,7 +185,7 @@ public final class HlsPlaylistParser implements UriLoadable.Parser<HlsPlaylist> ...@@ -185,7 +185,7 @@ public final class HlsPlaylistParser implements UriLoadable.Parser<HlsPlaylist>
String audioName = HlsParserUtil.parseStringAttr(line, NAME_ATTR_REGEX, NAME_ATTR); String audioName = HlsParserUtil.parseStringAttr(line, NAME_ATTR_REGEX, NAME_ATTR);
int audioBitrate = uri != null ? bitrate : -1; int audioBitrate = uri != null ? bitrate : -1;
Format format = Format.createAudioContainerFormat(audioName, MimeTypes.APPLICATION_M3U8, Format format = Format.createAudioContainerFormat(audioName, MimeTypes.APPLICATION_M3U8,
null, audioBitrate, -1, -1, null, language); null, audioBitrate, -1, -1, null, 0, language);
if (uri != null) { if (uri != null) {
audios.add(new Variant(uri, format, codecs)); audios.add(new Variant(uri, format, codecs));
} else { } else {
......
...@@ -641,11 +641,11 @@ public class SmoothStreamingManifestParser implements UriLoadable.Parser<SmoothS ...@@ -641,11 +641,11 @@ public class SmoothStreamingManifestParser implements UriLoadable.Parser<SmoothS
parser.getAttributeValue(null, KEY_CODEC_PRIVATE_DATA)); parser.getAttributeValue(null, KEY_CODEC_PRIVATE_DATA));
String language = (String) getNormalizedAttribute(KEY_LANGUAGE); String language = (String) getNormalizedAttribute(KEY_LANGUAGE);
format = Format.createAudioContainerFormat(id, MimeTypes.AUDIO_MP4, sampleMimeType, bitrate, format = Format.createAudioContainerFormat(id, MimeTypes.AUDIO_MP4, sampleMimeType, bitrate,
channels, samplingRate, codecSpecificData, language); channels, samplingRate, codecSpecificData, 0, language);
} else if (type == C.TRACK_TYPE_TEXT) { } else if (type == C.TRACK_TYPE_TEXT) {
String language = (String) getNormalizedAttribute(KEY_LANGUAGE); String language = (String) getNormalizedAttribute(KEY_LANGUAGE);
format = Format.createTextContainerFormat(id, MimeTypes.APPLICATION_MP4, sampleMimeType, format = Format.createTextContainerFormat(id, MimeTypes.APPLICATION_MP4, sampleMimeType,
bitrate, language); bitrate, 0, language);
} else { } else {
format = Format.createContainerFormat(id, MimeTypes.APPLICATION_MP4, sampleMimeType, format = Format.createContainerFormat(id, MimeTypes.APPLICATION_MP4, sampleMimeType,
bitrate); bitrate);
......
...@@ -80,7 +80,7 @@ public final class Ac3Util { ...@@ -80,7 +80,7 @@ public final class Ac3Util {
channelCount++; channelCount++;
} }
return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_AC3, Format.NO_VALUE, return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_AC3, Format.NO_VALUE,
Format.NO_VALUE, channelCount, sampleRate, null, drmInitData, language); Format.NO_VALUE, channelCount, sampleRate, null, drmInitData, 0, language);
} }
/** /**
...@@ -107,7 +107,7 @@ public final class Ac3Util { ...@@ -107,7 +107,7 @@ public final class Ac3Util {
channelCount++; channelCount++;
} }
return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_E_AC3, Format.NO_VALUE, return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_E_AC3, Format.NO_VALUE,
Format.NO_VALUE, channelCount, sampleRate, null, drmInitData, language); Format.NO_VALUE, channelCount, sampleRate, null, drmInitData, 0, language);
} }
/** /**
...@@ -138,7 +138,7 @@ public final class Ac3Util { ...@@ -138,7 +138,7 @@ public final class Ac3Util {
boolean lfeon = data.readBit(); boolean lfeon = data.readBit();
return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_AC3, Format.NO_VALUE, return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_AC3, Format.NO_VALUE,
Format.NO_VALUE, CHANNEL_COUNT_BY_ACMOD[acmod] + (lfeon ? 1 : 0), Format.NO_VALUE, CHANNEL_COUNT_BY_ACMOD[acmod] + (lfeon ? 1 : 0),
SAMPLE_RATE_BY_FSCOD[fscod], null, drmInitData, language); SAMPLE_RATE_BY_FSCOD[fscod], null, drmInitData, 0, language);
} }
/** /**
...@@ -166,7 +166,7 @@ public final class Ac3Util { ...@@ -166,7 +166,7 @@ public final class Ac3Util {
boolean lfeon = data.readBit(); boolean lfeon = data.readBit();
return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_E_AC3, Format.NO_VALUE, return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_E_AC3, Format.NO_VALUE,
Format.NO_VALUE, CHANNEL_COUNT_BY_ACMOD[acmod] + (lfeon ? 1 : 0), sampleRate, null, Format.NO_VALUE, CHANNEL_COUNT_BY_ACMOD[acmod] + (lfeon ? 1 : 0), sampleRate, null,
drmInitData, language); drmInitData, 0, language);
} }
/** /**
......
...@@ -73,7 +73,7 @@ public final class DtsUtil { ...@@ -73,7 +73,7 @@ public final class DtsUtil {
frameBits.skipBits(10); // MIX, DYNF, TIMEF, AUXF, HDCD, EXT_AUDIO_ID, EXT_AUDIO, ASPF frameBits.skipBits(10); // MIX, DYNF, TIMEF, AUXF, HDCD, EXT_AUDIO_ID, EXT_AUDIO, ASPF
channelCount += frameBits.readBits(2) > 0 ? 1 : 0; // LFF channelCount += frameBits.readBits(2) > 0 ? 1 : 0; // LFF
return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_DTS, bitrate, Format.NO_VALUE, return Format.createAudioSampleFormat(trackId, MimeTypes.AUDIO_DTS, bitrate, Format.NO_VALUE,
channelCount, sampleRate, null, drmInitData, language); channelCount, sampleRate, null, drmInitData, 0, language);
} }
/** /**
......
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