- 28,932 files - Full Java source code - Smali files - Resources Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
325 lines
15 KiB
Java
325 lines
15 KiB
Java
package com.google.android.exoplayer2;
|
|
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
import com.google.android.exoplayer2.drm.DrmInitData;
|
|
import com.google.android.exoplayer2.drm.UnsupportedMediaCrypto;
|
|
import com.google.android.exoplayer2.metadata.Metadata;
|
|
import com.google.android.exoplayer2.util.Assertions;
|
|
import com.google.android.exoplayer2.util.Util;
|
|
import com.google.android.exoplayer2.video.ColorInfo;
|
|
import com.ironsource.mediationsdk.logger.IronSourceError;
|
|
import java.util.ArrayList;
|
|
import java.util.Arrays;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes2.dex */
|
|
public final class Format implements Parcelable {
|
|
public static final Parcelable.Creator<Format> CREATOR = new Parcelable.Creator() { // from class: com.google.android.exoplayer2.Format.1
|
|
@Override // android.os.Parcelable.Creator
|
|
public Format createFromParcel(Parcel parcel) {
|
|
return new Format(parcel);
|
|
}
|
|
|
|
@Override // android.os.Parcelable.Creator
|
|
public Format[] newArray(int i) {
|
|
return new Format[i];
|
|
}
|
|
};
|
|
public final int accessibilityChannel;
|
|
public final int averageBitrate;
|
|
public final int bitrate;
|
|
public final int channelCount;
|
|
public final String codecs;
|
|
public final ColorInfo colorInfo;
|
|
public final String containerMimeType;
|
|
public final DrmInitData drmInitData;
|
|
public final int encoderDelay;
|
|
public final int encoderPadding;
|
|
public final Class exoMediaCryptoType;
|
|
public final float frameRate;
|
|
public int hashCode;
|
|
public final int height;
|
|
public final String id;
|
|
public final List initializationData;
|
|
public final String label;
|
|
public final String language;
|
|
public final int maxInputSize;
|
|
public final Metadata metadata;
|
|
public final int pcmEncoding;
|
|
public final int peakBitrate;
|
|
public final float pixelWidthHeightRatio;
|
|
public final byte[] projectionData;
|
|
public final int roleFlags;
|
|
public final int rotationDegrees;
|
|
public final String sampleMimeType;
|
|
public final int sampleRate;
|
|
public final int selectionFlags;
|
|
public final int stereoMode;
|
|
public final long subsampleOffsetUs;
|
|
public final int width;
|
|
|
|
@Override // android.os.Parcelable
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
public static final class Builder {
|
|
public String codecs;
|
|
public ColorInfo colorInfo;
|
|
public String containerMimeType;
|
|
public DrmInitData drmInitData;
|
|
public int encoderDelay;
|
|
public int encoderPadding;
|
|
public Class exoMediaCryptoType;
|
|
public String id;
|
|
public List initializationData;
|
|
public String label;
|
|
public String language;
|
|
public Metadata metadata;
|
|
public byte[] projectionData;
|
|
public int roleFlags;
|
|
public int rotationDegrees;
|
|
public String sampleMimeType;
|
|
public int selectionFlags;
|
|
public int averageBitrate = -1;
|
|
public int peakBitrate = -1;
|
|
public int maxInputSize = -1;
|
|
public long subsampleOffsetUs = Long.MAX_VALUE;
|
|
public int width = -1;
|
|
public int height = -1;
|
|
public float frameRate = -1.0f;
|
|
public float pixelWidthHeightRatio = 1.0f;
|
|
public int stereoMode = -1;
|
|
public int channelCount = -1;
|
|
public int sampleRate = -1;
|
|
public int pcmEncoding = -1;
|
|
public int accessibilityChannel = -1;
|
|
|
|
public Builder setSampleMimeType(String str) {
|
|
this.sampleMimeType = str;
|
|
return this;
|
|
}
|
|
|
|
public Format build() {
|
|
return new Format(this);
|
|
}
|
|
}
|
|
|
|
public Format(Builder builder) {
|
|
this.id = builder.id;
|
|
this.label = builder.label;
|
|
this.language = Util.normalizeLanguageCode(builder.language);
|
|
this.selectionFlags = builder.selectionFlags;
|
|
this.roleFlags = builder.roleFlags;
|
|
int i = builder.averageBitrate;
|
|
this.averageBitrate = i;
|
|
int i2 = builder.peakBitrate;
|
|
this.peakBitrate = i2;
|
|
this.bitrate = i2 != -1 ? i2 : i;
|
|
this.codecs = builder.codecs;
|
|
this.metadata = builder.metadata;
|
|
this.containerMimeType = builder.containerMimeType;
|
|
this.sampleMimeType = builder.sampleMimeType;
|
|
this.maxInputSize = builder.maxInputSize;
|
|
this.initializationData = builder.initializationData == null ? Collections.emptyList() : builder.initializationData;
|
|
DrmInitData drmInitData = builder.drmInitData;
|
|
this.drmInitData = drmInitData;
|
|
this.subsampleOffsetUs = builder.subsampleOffsetUs;
|
|
this.width = builder.width;
|
|
this.height = builder.height;
|
|
this.frameRate = builder.frameRate;
|
|
this.rotationDegrees = builder.rotationDegrees == -1 ? 0 : builder.rotationDegrees;
|
|
this.pixelWidthHeightRatio = builder.pixelWidthHeightRatio == -1.0f ? 1.0f : builder.pixelWidthHeightRatio;
|
|
this.projectionData = builder.projectionData;
|
|
this.stereoMode = builder.stereoMode;
|
|
this.colorInfo = builder.colorInfo;
|
|
this.channelCount = builder.channelCount;
|
|
this.sampleRate = builder.sampleRate;
|
|
this.pcmEncoding = builder.pcmEncoding;
|
|
this.encoderDelay = builder.encoderDelay == -1 ? 0 : builder.encoderDelay;
|
|
this.encoderPadding = builder.encoderPadding != -1 ? builder.encoderPadding : 0;
|
|
this.accessibilityChannel = builder.accessibilityChannel;
|
|
if (builder.exoMediaCryptoType != null || drmInitData == null) {
|
|
this.exoMediaCryptoType = builder.exoMediaCryptoType;
|
|
} else {
|
|
this.exoMediaCryptoType = UnsupportedMediaCrypto.class;
|
|
}
|
|
}
|
|
|
|
public Format(Parcel parcel) {
|
|
this.id = parcel.readString();
|
|
this.label = parcel.readString();
|
|
this.language = parcel.readString();
|
|
this.selectionFlags = parcel.readInt();
|
|
this.roleFlags = parcel.readInt();
|
|
int readInt = parcel.readInt();
|
|
this.averageBitrate = readInt;
|
|
int readInt2 = parcel.readInt();
|
|
this.peakBitrate = readInt2;
|
|
this.bitrate = readInt2 != -1 ? readInt2 : readInt;
|
|
this.codecs = parcel.readString();
|
|
this.metadata = (Metadata) parcel.readParcelable(Metadata.class.getClassLoader());
|
|
this.containerMimeType = parcel.readString();
|
|
this.sampleMimeType = parcel.readString();
|
|
this.maxInputSize = parcel.readInt();
|
|
int readInt3 = parcel.readInt();
|
|
this.initializationData = new ArrayList(readInt3);
|
|
for (int i = 0; i < readInt3; i++) {
|
|
this.initializationData.add((byte[]) Assertions.checkNotNull(parcel.createByteArray()));
|
|
}
|
|
DrmInitData drmInitData = (DrmInitData) parcel.readParcelable(DrmInitData.class.getClassLoader());
|
|
this.drmInitData = drmInitData;
|
|
this.subsampleOffsetUs = parcel.readLong();
|
|
this.width = parcel.readInt();
|
|
this.height = parcel.readInt();
|
|
this.frameRate = parcel.readFloat();
|
|
this.rotationDegrees = parcel.readInt();
|
|
this.pixelWidthHeightRatio = parcel.readFloat();
|
|
this.projectionData = Util.readBoolean(parcel) ? parcel.createByteArray() : null;
|
|
this.stereoMode = parcel.readInt();
|
|
this.colorInfo = (ColorInfo) parcel.readParcelable(ColorInfo.class.getClassLoader());
|
|
this.channelCount = parcel.readInt();
|
|
this.sampleRate = parcel.readInt();
|
|
this.pcmEncoding = parcel.readInt();
|
|
this.encoderDelay = parcel.readInt();
|
|
this.encoderPadding = parcel.readInt();
|
|
this.accessibilityChannel = parcel.readInt();
|
|
this.exoMediaCryptoType = drmInitData != null ? UnsupportedMediaCrypto.class : null;
|
|
}
|
|
|
|
public String toString() {
|
|
String str = this.id;
|
|
String str2 = this.label;
|
|
String str3 = this.containerMimeType;
|
|
String str4 = this.sampleMimeType;
|
|
String str5 = this.codecs;
|
|
int i = this.bitrate;
|
|
String str6 = this.language;
|
|
int i2 = this.width;
|
|
int i3 = this.height;
|
|
float f = this.frameRate;
|
|
int i4 = this.channelCount;
|
|
int i5 = this.sampleRate;
|
|
StringBuilder sb = new StringBuilder(String.valueOf(str).length() + 104 + String.valueOf(str2).length() + String.valueOf(str3).length() + String.valueOf(str4).length() + String.valueOf(str5).length() + String.valueOf(str6).length());
|
|
sb.append("Format(");
|
|
sb.append(str);
|
|
sb.append(", ");
|
|
sb.append(str2);
|
|
sb.append(", ");
|
|
sb.append(str3);
|
|
sb.append(", ");
|
|
sb.append(str4);
|
|
sb.append(", ");
|
|
sb.append(str5);
|
|
sb.append(", ");
|
|
sb.append(i);
|
|
sb.append(", ");
|
|
sb.append(str6);
|
|
sb.append(", [");
|
|
sb.append(i2);
|
|
sb.append(", ");
|
|
sb.append(i3);
|
|
sb.append(", ");
|
|
sb.append(f);
|
|
sb.append("], [");
|
|
sb.append(i4);
|
|
sb.append(", ");
|
|
sb.append(i5);
|
|
sb.append("])");
|
|
return sb.toString();
|
|
}
|
|
|
|
public int hashCode() {
|
|
if (this.hashCode == 0) {
|
|
String str = this.id;
|
|
int hashCode = (IronSourceError.ERROR_NON_EXISTENT_INSTANCE + (str == null ? 0 : str.hashCode())) * 31;
|
|
String str2 = this.label;
|
|
int hashCode2 = (hashCode + (str2 != null ? str2.hashCode() : 0)) * 31;
|
|
String str3 = this.language;
|
|
int hashCode3 = (((((((((hashCode2 + (str3 == null ? 0 : str3.hashCode())) * 31) + this.selectionFlags) * 31) + this.roleFlags) * 31) + this.averageBitrate) * 31) + this.peakBitrate) * 31;
|
|
String str4 = this.codecs;
|
|
int hashCode4 = (hashCode3 + (str4 == null ? 0 : str4.hashCode())) * 31;
|
|
Metadata metadata = this.metadata;
|
|
int hashCode5 = (hashCode4 + (metadata == null ? 0 : metadata.hashCode())) * 31;
|
|
String str5 = this.containerMimeType;
|
|
int hashCode6 = (hashCode5 + (str5 == null ? 0 : str5.hashCode())) * 31;
|
|
String str6 = this.sampleMimeType;
|
|
int hashCode7 = (((((((((((((((((((((((((((((hashCode6 + (str6 == null ? 0 : str6.hashCode())) * 31) + this.maxInputSize) * 31) + ((int) this.subsampleOffsetUs)) * 31) + this.width) * 31) + this.height) * 31) + Float.floatToIntBits(this.frameRate)) * 31) + this.rotationDegrees) * 31) + Float.floatToIntBits(this.pixelWidthHeightRatio)) * 31) + this.stereoMode) * 31) + this.channelCount) * 31) + this.sampleRate) * 31) + this.pcmEncoding) * 31) + this.encoderDelay) * 31) + this.encoderPadding) * 31) + this.accessibilityChannel) * 31;
|
|
Class cls = this.exoMediaCryptoType;
|
|
this.hashCode = hashCode7 + (cls != null ? cls.hashCode() : 0);
|
|
}
|
|
return this.hashCode;
|
|
}
|
|
|
|
public boolean equals(Object obj) {
|
|
int i;
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (obj == null || Format.class != obj.getClass()) {
|
|
return false;
|
|
}
|
|
Format format = (Format) obj;
|
|
int i2 = this.hashCode;
|
|
if (i2 == 0 || (i = format.hashCode) == 0 || i2 == i) {
|
|
return this.selectionFlags == format.selectionFlags && this.roleFlags == format.roleFlags && this.averageBitrate == format.averageBitrate && this.peakBitrate == format.peakBitrate && this.maxInputSize == format.maxInputSize && this.subsampleOffsetUs == format.subsampleOffsetUs && this.width == format.width && this.height == format.height && this.rotationDegrees == format.rotationDegrees && this.stereoMode == format.stereoMode && this.channelCount == format.channelCount && this.sampleRate == format.sampleRate && this.pcmEncoding == format.pcmEncoding && this.encoderDelay == format.encoderDelay && this.encoderPadding == format.encoderPadding && this.accessibilityChannel == format.accessibilityChannel && Float.compare(this.frameRate, format.frameRate) == 0 && Float.compare(this.pixelWidthHeightRatio, format.pixelWidthHeightRatio) == 0 && Util.areEqual(this.exoMediaCryptoType, format.exoMediaCryptoType) && Util.areEqual(this.id, format.id) && Util.areEqual(this.label, format.label) && Util.areEqual(this.codecs, format.codecs) && Util.areEqual(this.containerMimeType, format.containerMimeType) && Util.areEqual(this.sampleMimeType, format.sampleMimeType) && Util.areEqual(this.language, format.language) && Arrays.equals(this.projectionData, format.projectionData) && Util.areEqual(this.metadata, format.metadata) && Util.areEqual(this.colorInfo, format.colorInfo) && Util.areEqual(this.drmInitData, format.drmInitData) && initializationDataEquals(format);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public boolean initializationDataEquals(Format format) {
|
|
if (this.initializationData.size() != format.initializationData.size()) {
|
|
return false;
|
|
}
|
|
for (int i = 0; i < this.initializationData.size(); i++) {
|
|
if (!Arrays.equals((byte[]) this.initializationData.get(i), (byte[]) format.initializationData.get(i))) {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override // android.os.Parcelable
|
|
public void writeToParcel(Parcel parcel, int i) {
|
|
parcel.writeString(this.id);
|
|
parcel.writeString(this.label);
|
|
parcel.writeString(this.language);
|
|
parcel.writeInt(this.selectionFlags);
|
|
parcel.writeInt(this.roleFlags);
|
|
parcel.writeInt(this.averageBitrate);
|
|
parcel.writeInt(this.peakBitrate);
|
|
parcel.writeString(this.codecs);
|
|
parcel.writeParcelable(this.metadata, 0);
|
|
parcel.writeString(this.containerMimeType);
|
|
parcel.writeString(this.sampleMimeType);
|
|
parcel.writeInt(this.maxInputSize);
|
|
int size = this.initializationData.size();
|
|
parcel.writeInt(size);
|
|
for (int i2 = 0; i2 < size; i2++) {
|
|
parcel.writeByteArray((byte[]) this.initializationData.get(i2));
|
|
}
|
|
parcel.writeParcelable(this.drmInitData, 0);
|
|
parcel.writeLong(this.subsampleOffsetUs);
|
|
parcel.writeInt(this.width);
|
|
parcel.writeInt(this.height);
|
|
parcel.writeFloat(this.frameRate);
|
|
parcel.writeInt(this.rotationDegrees);
|
|
parcel.writeFloat(this.pixelWidthHeightRatio);
|
|
Util.writeBoolean(parcel, this.projectionData != null);
|
|
byte[] bArr = this.projectionData;
|
|
if (bArr != null) {
|
|
parcel.writeByteArray(bArr);
|
|
}
|
|
parcel.writeInt(this.stereoMode);
|
|
parcel.writeParcelable(this.colorInfo, i);
|
|
parcel.writeInt(this.channelCount);
|
|
parcel.writeInt(this.sampleRate);
|
|
parcel.writeInt(this.pcmEncoding);
|
|
parcel.writeInt(this.encoderDelay);
|
|
parcel.writeInt(this.encoderPadding);
|
|
parcel.writeInt(this.accessibilityChannel);
|
|
}
|
|
}
|