mirror of
https://github.com/samsonjs/media.git
synced 2026-04-09 11:55:46 +00:00
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
This commit is contained in:
parent
8cb3b6ed07
commit
7625c1b862
5 changed files with 12 additions and 18 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -312,8 +312,7 @@ public final class OfflineLicenseHelper<T extends ExoMediaCrypto> {
|
|||
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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue