From 7625c1b862db7a0dc860832214a2beba79c22c17 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 13 Feb 2017 13:27:17 -0800 Subject: [PATCH] Remove unnecessary configuration parameter. - It's always fine to prefer the manifest drm init data. In DASH we always do this anyway. In SS the manifest and sample formats are identical. - Optimized the case where the manifest and sample formats are identical by avoiding the format copy. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=147385282 --- .../java/com/google/android/exoplayer2/Format.java | 11 +++++++---- .../android/exoplayer2/drm/OfflineLicenseHelper.java | 3 +-- .../source/chunk/ChunkExtractorWrapper.java | 10 ++-------- .../source/dash/DefaultDashChunkSource.java | 3 +-- .../source/smoothstreaming/DefaultSsChunkSource.java | 3 +-- 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/Format.java b/library/src/main/java/com/google/android/exoplayer2/Format.java index f001feec10..866e512288 100644 --- a/library/src/main/java/com/google/android/exoplayer2/Format.java +++ b/library/src/main/java/com/google/android/exoplayer2/Format.java @@ -438,16 +438,19 @@ public final class Format implements Parcelable { drmInitData, metadata); } - public Format copyWithManifestFormatInfo(Format manifestFormat, - boolean preferManifestDrmInitData) { + public Format copyWithManifestFormatInfo(Format manifestFormat) { + if (this == manifestFormat) { + // No need to copy from ourselves. + return this; + } String id = manifestFormat.id; String codecs = this.codecs == null ? manifestFormat.codecs : this.codecs; int bitrate = this.bitrate == NO_VALUE ? manifestFormat.bitrate : this.bitrate; float frameRate = this.frameRate == NO_VALUE ? manifestFormat.frameRate : this.frameRate; @C.SelectionFlags int selectionFlags = this.selectionFlags | manifestFormat.selectionFlags; String language = this.language == null ? manifestFormat.language : this.language; - DrmInitData drmInitData = (preferManifestDrmInitData && manifestFormat.drmInitData != null) - || this.drmInitData == null ? manifestFormat.drmInitData : this.drmInitData; + DrmInitData drmInitData = manifestFormat.drmInitData != null ? manifestFormat.drmInitData + : this.drmInitData; return new Format(id, containerMimeType, sampleMimeType, codecs, bitrate, maxInputSize, width, height, frameRate, rotationDegrees, pixelWidthHeightRatio, projectionData, stereoMode, channelCount, sampleRate, pcmEncoding, encoderDelay, encoderPadding, selectionFlags, diff --git a/library/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java b/library/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java index 8d057230ca..b3729c2377 100644 --- a/library/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java +++ b/library/src/main/java/com/google/android/exoplayer2/drm/OfflineLicenseHelper.java @@ -312,8 +312,7 @@ public final class OfflineLicenseHelper { final boolean isWebm = mimeType.startsWith(MimeTypes.VIDEO_WEBM) || mimeType.startsWith(MimeTypes.AUDIO_WEBM); final Extractor extractor = isWebm ? new MatroskaExtractor() : new FragmentedMp4Extractor(); - return new ChunkExtractorWrapper(extractor, format, trackType, - false /* preferManifestDrmInitData */); + return new ChunkExtractorWrapper(extractor, format, trackType); } } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper.java b/library/src/main/java/com/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper.java index 4984ed0ff0..489f63be2b 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/chunk/ChunkExtractorWrapper.java @@ -17,7 +17,6 @@ package com.google.android.exoplayer2.source.chunk; import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; -import com.google.android.exoplayer2.drm.DrmInitData; import com.google.android.exoplayer2.extractor.DummyTrackOutput; import com.google.android.exoplayer2.extractor.Extractor; import com.google.android.exoplayer2.extractor.ExtractorInput; @@ -39,7 +38,6 @@ public final class ChunkExtractorWrapper implements ExtractorOutput, TrackOutput private final Format manifestFormat; private final int primaryTrackType; - private final boolean preferManifestDrmInitData; private boolean extractorInitialized; private TrackOutput trackOutput; @@ -56,15 +54,11 @@ public final class ChunkExtractorWrapper implements ExtractorOutput, TrackOutput * sample {@link Format} output from the {@link Extractor}. * @param primaryTrackType The type of the primary track. Typically one of the {@link C} * {@code TRACK_TYPE_*} constants. - * @param preferManifestDrmInitData Whether {@link DrmInitData} defined in {@code manifestFormat} - * should be preferred when the sample and manifest {@link Format}s are merged. */ - public ChunkExtractorWrapper(Extractor extractor, Format manifestFormat, int primaryTrackType, - boolean preferManifestDrmInitData) { + public ChunkExtractorWrapper(Extractor extractor, Format manifestFormat, int primaryTrackType) { this.extractor = extractor; this.manifestFormat = manifestFormat; this.primaryTrackType = primaryTrackType; - this.preferManifestDrmInitData = preferManifestDrmInitData; } /** @@ -127,7 +121,7 @@ public final class ChunkExtractorWrapper implements ExtractorOutput, TrackOutput @Override public void format(Format format) { - sampleFormat = format.copyWithManifestFormatInfo(manifestFormat, preferManifestDrmInitData); + sampleFormat = format.copyWithManifestFormatInfo(manifestFormat); if (trackOutput != null) { trackOutput.format(sampleFormat); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java b/library/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java index 88dcdd50be..c553e4eb40 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/dash/DefaultDashChunkSource.java @@ -382,8 +382,7 @@ public class DefaultDashChunkSource implements DashChunkSource { } // Prefer drmInitData obtained from the manifest over drmInitData obtained from the stream, // as per DASH IF Interoperability Recommendations V3.0, 7.5.3. - extractorWrapper = new ChunkExtractorWrapper(extractor, representation.format, - trackType, true /* preferManifestDrmInitData */); + extractorWrapper = new ChunkExtractorWrapper(extractor, representation.format, trackType); } segmentIndex = representation.getIndex(); } diff --git a/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java b/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java index b0a583e8e5..e17d72ab37 100644 --- a/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer2/source/smoothstreaming/DefaultSsChunkSource.java @@ -102,8 +102,7 @@ public class DefaultSsChunkSource implements SsChunkSource { FragmentedMp4Extractor extractor = new FragmentedMp4Extractor( FragmentedMp4Extractor.FLAG_WORKAROUND_EVERY_VIDEO_FRAME_IS_SYNC_FRAME | FragmentedMp4Extractor.FLAG_WORKAROUND_IGNORE_TFDT_BOX, null, track); - extractorWrappers[i] = new ChunkExtractorWrapper(extractor, format, streamElement.type, - false); + extractorWrappers[i] = new ChunkExtractorWrapper(extractor, format, streamElement.type); } }