mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Sanitize internal parameter ordering in Format
This is a precursor to merging https://github.com/google/ExoPlayer/pull/5578 PiperOrigin-RevId: 239371046
This commit is contained in:
parent
d775b9b412
commit
448ca0cf7f
2 changed files with 274 additions and 249 deletions
|
|
@ -48,7 +48,8 @@ public final class Format implements Parcelable {
|
||||||
public final @Nullable String id;
|
public final @Nullable String id;
|
||||||
/** The human readable label, or null if unknown or not applicable. */
|
/** The human readable label, or null if unknown or not applicable. */
|
||||||
public final @Nullable String label;
|
public final @Nullable String label;
|
||||||
|
/** Track selection flags. */
|
||||||
|
@C.SelectionFlags public final int selectionFlags;
|
||||||
/**
|
/**
|
||||||
* The average bandwidth in bits per second, or {@link #NO_VALUE} if unknown or not applicable.
|
* The average bandwidth in bits per second, or {@link #NO_VALUE} if unknown or not applicable.
|
||||||
*/
|
*/
|
||||||
|
|
@ -153,15 +154,8 @@ public final class Format implements Parcelable {
|
||||||
|
|
||||||
// Audio and text specific.
|
// Audio and text specific.
|
||||||
|
|
||||||
/**
|
|
||||||
* Track selection flags.
|
|
||||||
*/
|
|
||||||
@C.SelectionFlags
|
|
||||||
public final int selectionFlags;
|
|
||||||
|
|
||||||
/** The language as ISO 639-2/T three-letter code, or null if unknown or not applicable. */
|
/** The language as ISO 639-2/T three-letter code, or null if unknown or not applicable. */
|
||||||
public final @Nullable String language;
|
public final @Nullable String language;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The Accessibility channel, or {@link #NO_VALUE} if not known or applicable.
|
* The Accessibility channel, or {@link #NO_VALUE} if not known or applicable.
|
||||||
*/
|
*/
|
||||||
|
|
@ -213,11 +207,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
initializationData,
|
||||||
|
/* drmInitData= */ null,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -231,13 +230,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
selectionFlags,
|
|
||||||
/* language= */ null,
|
/* language= */ null,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
initializationData,
|
|
||||||
/* drmInitData= */ null,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Format createVideoSampleFormat(
|
public static Format createVideoSampleFormat(
|
||||||
|
|
@ -316,11 +310,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
/* label= */ null,
|
/* label= */ null,
|
||||||
|
/* selectionFlags= */ 0,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
/* containerMimeType= */ null,
|
/* containerMimeType= */ null,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -334,13 +333,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
/* selectionFlags= */ 0,
|
|
||||||
/* language= */ null,
|
/* language= */ null,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Audio.
|
// Audio.
|
||||||
|
|
@ -386,11 +380,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
initializationData,
|
||||||
|
/* drmInitData= */ null,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -404,13 +403,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
initializationData,
|
|
||||||
/* drmInitData= */ null,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Format createAudioSampleFormat(
|
public static Format createAudioSampleFormat(
|
||||||
|
|
@ -490,11 +484,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
/* label= */ null,
|
/* label= */ null,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
/* containerMimeType= */ null,
|
/* containerMimeType= */ null,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -508,13 +507,8 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Text.
|
// Text.
|
||||||
|
|
@ -573,11 +567,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
/* initializationData= */ null,
|
||||||
|
/* drmInitData= */ null,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -591,13 +590,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
/* initializationData= */ null,
|
|
||||||
/* drmInitData= */ null,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Format createTextSampleFormat(
|
public static Format createTextSampleFormat(
|
||||||
|
|
@ -685,11 +679,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
/* label= */ null,
|
/* label= */ null,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
/* containerMimeType= */ null,
|
/* containerMimeType= */ null,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -703,13 +702,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Image.
|
// Image.
|
||||||
|
|
@ -726,11 +720,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
/* label= */ null,
|
/* label= */ null,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata=*/ null,
|
||||||
/* containerMimeType= */ null,
|
/* containerMimeType= */ null,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -744,13 +743,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
/* metadata=*/ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generic.
|
// Generic.
|
||||||
|
|
@ -787,11 +781,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
/* initializationData= */ null,
|
||||||
|
/* drmInitData= */ null,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -805,13 +804,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
/* initializationData= */ null,
|
|
||||||
/* drmInitData= */ null,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Format createSampleFormat(
|
public static Format createSampleFormat(
|
||||||
|
|
@ -819,11 +813,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
/* label= */ null,
|
/* label= */ null,
|
||||||
|
/* selectionFlags= */ 0,
|
||||||
|
/* bitrate= */ NO_VALUE,
|
||||||
|
/* codecs= */ null,
|
||||||
|
/* metadata= */ null,
|
||||||
/* containerMimeType= */ null,
|
/* containerMimeType= */ null,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
/* codecs= */ null,
|
|
||||||
/* bitrate= */ NO_VALUE,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
/* initializationData= */ null,
|
||||||
|
/* drmInitData= */ null,
|
||||||
|
subsampleOffsetUs,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -837,13 +836,8 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
/* selectionFlags= */ 0,
|
|
||||||
/* language= */ null,
|
/* language= */ null,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
subsampleOffsetUs,
|
|
||||||
/* initializationData= */ null,
|
|
||||||
/* drmInitData= */ null,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Format createSampleFormat(
|
public static Format createSampleFormat(
|
||||||
|
|
@ -855,11 +849,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
/* label= */ null,
|
/* label= */ null,
|
||||||
|
/* selectionFlags= */ 0,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
/* metadata= */ null,
|
||||||
/* containerMimeType= */ null,
|
/* containerMimeType= */ null,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
/* maxInputSize= */ NO_VALUE,
|
/* maxInputSize= */ NO_VALUE,
|
||||||
|
/* initializationData= */ null,
|
||||||
|
drmInitData,
|
||||||
|
OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ NO_VALUE,
|
/* width= */ NO_VALUE,
|
||||||
/* height= */ NO_VALUE,
|
/* height= */ NO_VALUE,
|
||||||
/* frameRate= */ NO_VALUE,
|
/* frameRate= */ NO_VALUE,
|
||||||
|
|
@ -873,23 +872,26 @@ public final class Format implements Parcelable {
|
||||||
/* pcmEncoding= */ NO_VALUE,
|
/* pcmEncoding= */ NO_VALUE,
|
||||||
/* encoderDelay= */ NO_VALUE,
|
/* encoderDelay= */ NO_VALUE,
|
||||||
/* encoderPadding= */ NO_VALUE,
|
/* encoderPadding= */ NO_VALUE,
|
||||||
/* selectionFlags= */ 0,
|
|
||||||
/* language= */ null,
|
/* language= */ null,
|
||||||
/* accessibilityChannel= */ NO_VALUE,
|
/* accessibilityChannel= */ NO_VALUE);
|
||||||
OFFSET_SAMPLE_RELATIVE,
|
|
||||||
/* initializationData= */ null,
|
|
||||||
drmInitData,
|
|
||||||
/* metadata= */ null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* package */ Format(
|
/* package */ Format(
|
||||||
@Nullable String id,
|
@Nullable String id,
|
||||||
@Nullable String label,
|
@Nullable String label,
|
||||||
@Nullable String containerMimeType,
|
@C.SelectionFlags int selectionFlags,
|
||||||
@Nullable String sampleMimeType,
|
|
||||||
@Nullable String codecs,
|
|
||||||
int bitrate,
|
int bitrate,
|
||||||
|
@Nullable String codecs,
|
||||||
|
@Nullable Metadata metadata,
|
||||||
|
// Container specific.
|
||||||
|
@Nullable String containerMimeType,
|
||||||
|
// Elementary stream specific.
|
||||||
|
@Nullable String sampleMimeType,
|
||||||
int maxInputSize,
|
int maxInputSize,
|
||||||
|
@Nullable List<byte[]> initializationData,
|
||||||
|
@Nullable DrmInitData drmInitData,
|
||||||
|
long subsampleOffsetUs,
|
||||||
|
// Video specific.
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
float frameRate,
|
float frameRate,
|
||||||
|
|
@ -898,25 +900,31 @@ public final class Format implements Parcelable {
|
||||||
@Nullable byte[] projectionData,
|
@Nullable byte[] projectionData,
|
||||||
@C.StereoMode int stereoMode,
|
@C.StereoMode int stereoMode,
|
||||||
@Nullable ColorInfo colorInfo,
|
@Nullable ColorInfo colorInfo,
|
||||||
|
// Audio specific.
|
||||||
int channelCount,
|
int channelCount,
|
||||||
int sampleRate,
|
int sampleRate,
|
||||||
@C.PcmEncoding int pcmEncoding,
|
@C.PcmEncoding int pcmEncoding,
|
||||||
int encoderDelay,
|
int encoderDelay,
|
||||||
int encoderPadding,
|
int encoderPadding,
|
||||||
@C.SelectionFlags int selectionFlags,
|
// Audio and text specific.
|
||||||
@Nullable String language,
|
@Nullable String language,
|
||||||
int accessibilityChannel,
|
int accessibilityChannel) {
|
||||||
long subsampleOffsetUs,
|
|
||||||
@Nullable List<byte[]> initializationData,
|
|
||||||
@Nullable DrmInitData drmInitData,
|
|
||||||
@Nullable Metadata metadata) {
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.label = label;
|
this.label = label;
|
||||||
this.containerMimeType = containerMimeType;
|
this.selectionFlags = selectionFlags;
|
||||||
this.sampleMimeType = sampleMimeType;
|
|
||||||
this.codecs = codecs;
|
|
||||||
this.bitrate = bitrate;
|
this.bitrate = bitrate;
|
||||||
|
this.codecs = codecs;
|
||||||
|
this.metadata = metadata;
|
||||||
|
// Container specific.
|
||||||
|
this.containerMimeType = containerMimeType;
|
||||||
|
// Elementary stream specific.
|
||||||
|
this.sampleMimeType = sampleMimeType;
|
||||||
this.maxInputSize = maxInputSize;
|
this.maxInputSize = maxInputSize;
|
||||||
|
this.initializationData =
|
||||||
|
initializationData == null ? Collections.emptyList() : initializationData;
|
||||||
|
this.drmInitData = drmInitData;
|
||||||
|
this.subsampleOffsetUs = subsampleOffsetUs;
|
||||||
|
// Video specific.
|
||||||
this.width = width;
|
this.width = width;
|
||||||
this.height = height;
|
this.height = height;
|
||||||
this.frameRate = frameRate;
|
this.frameRate = frameRate;
|
||||||
|
|
@ -926,30 +934,38 @@ public final class Format implements Parcelable {
|
||||||
this.projectionData = projectionData;
|
this.projectionData = projectionData;
|
||||||
this.stereoMode = stereoMode;
|
this.stereoMode = stereoMode;
|
||||||
this.colorInfo = colorInfo;
|
this.colorInfo = colorInfo;
|
||||||
|
// Audio specific.
|
||||||
this.channelCount = channelCount;
|
this.channelCount = channelCount;
|
||||||
this.sampleRate = sampleRate;
|
this.sampleRate = sampleRate;
|
||||||
this.pcmEncoding = pcmEncoding;
|
this.pcmEncoding = pcmEncoding;
|
||||||
this.encoderDelay = encoderDelay == Format.NO_VALUE ? 0 : encoderDelay;
|
this.encoderDelay = encoderDelay == Format.NO_VALUE ? 0 : encoderDelay;
|
||||||
this.encoderPadding = encoderPadding == Format.NO_VALUE ? 0 : encoderPadding;
|
this.encoderPadding = encoderPadding == Format.NO_VALUE ? 0 : encoderPadding;
|
||||||
this.selectionFlags = selectionFlags;
|
// Audio and text specific.
|
||||||
this.language = Util.normalizeLanguageCode(language);
|
this.language = Util.normalizeLanguageCode(language);
|
||||||
this.accessibilityChannel = accessibilityChannel;
|
this.accessibilityChannel = accessibilityChannel;
|
||||||
this.subsampleOffsetUs = subsampleOffsetUs;
|
|
||||||
this.initializationData =
|
|
||||||
initializationData == null ? Collections.emptyList() : initializationData;
|
|
||||||
this.drmInitData = drmInitData;
|
|
||||||
this.metadata = metadata;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("ResourceType")
|
@SuppressWarnings("ResourceType")
|
||||||
/* package */ Format(Parcel in) {
|
/* package */ Format(Parcel in) {
|
||||||
id = in.readString();
|
id = in.readString();
|
||||||
label = in.readString();
|
label = in.readString();
|
||||||
containerMimeType = in.readString();
|
selectionFlags = in.readInt();
|
||||||
sampleMimeType = in.readString();
|
|
||||||
codecs = in.readString();
|
|
||||||
bitrate = in.readInt();
|
bitrate = in.readInt();
|
||||||
|
codecs = in.readString();
|
||||||
|
metadata = in.readParcelable(Metadata.class.getClassLoader());
|
||||||
|
// Container specific.
|
||||||
|
containerMimeType = in.readString();
|
||||||
|
// Elementary stream specific.
|
||||||
|
sampleMimeType = in.readString();
|
||||||
maxInputSize = in.readInt();
|
maxInputSize = in.readInt();
|
||||||
|
int initializationDataSize = in.readInt();
|
||||||
|
initializationData = new ArrayList<>(initializationDataSize);
|
||||||
|
for (int i = 0; i < initializationDataSize; i++) {
|
||||||
|
initializationData.add(in.createByteArray());
|
||||||
|
}
|
||||||
|
drmInitData = in.readParcelable(DrmInitData.class.getClassLoader());
|
||||||
|
subsampleOffsetUs = in.readLong();
|
||||||
|
// Video specific.
|
||||||
width = in.readInt();
|
width = in.readInt();
|
||||||
height = in.readInt();
|
height = in.readInt();
|
||||||
frameRate = in.readFloat();
|
frameRate = in.readFloat();
|
||||||
|
|
@ -959,33 +975,32 @@ public final class Format implements Parcelable {
|
||||||
projectionData = hasProjectionData ? in.createByteArray() : null;
|
projectionData = hasProjectionData ? in.createByteArray() : null;
|
||||||
stereoMode = in.readInt();
|
stereoMode = in.readInt();
|
||||||
colorInfo = in.readParcelable(ColorInfo.class.getClassLoader());
|
colorInfo = in.readParcelable(ColorInfo.class.getClassLoader());
|
||||||
|
// Audio specific.
|
||||||
channelCount = in.readInt();
|
channelCount = in.readInt();
|
||||||
sampleRate = in.readInt();
|
sampleRate = in.readInt();
|
||||||
pcmEncoding = in.readInt();
|
pcmEncoding = in.readInt();
|
||||||
encoderDelay = in.readInt();
|
encoderDelay = in.readInt();
|
||||||
encoderPadding = in.readInt();
|
encoderPadding = in.readInt();
|
||||||
selectionFlags = in.readInt();
|
// Audio and text specific.
|
||||||
language = in.readString();
|
language = in.readString();
|
||||||
accessibilityChannel = in.readInt();
|
accessibilityChannel = in.readInt();
|
||||||
subsampleOffsetUs = in.readLong();
|
|
||||||
int initializationDataSize = in.readInt();
|
|
||||||
initializationData = new ArrayList<>(initializationDataSize);
|
|
||||||
for (int i = 0; i < initializationDataSize; i++) {
|
|
||||||
initializationData.add(in.createByteArray());
|
|
||||||
}
|
|
||||||
drmInitData = in.readParcelable(DrmInitData.class.getClassLoader());
|
|
||||||
metadata = in.readParcelable(Metadata.class.getClassLoader());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Format copyWithMaxInputSize(int maxInputSize) {
|
public Format copyWithMaxInputSize(int maxInputSize) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -999,24 +1014,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithSubsampleOffsetUs(long subsampleOffsetUs) {
|
public Format copyWithSubsampleOffsetUs(long subsampleOffsetUs) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1030,13 +1045,8 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithContainerInfo(
|
public Format copyWithContainerInfo(
|
||||||
|
|
@ -1053,11 +1063,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1071,13 +1086,8 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("ReferenceEquality")
|
@SuppressWarnings("ReferenceEquality")
|
||||||
|
|
@ -1124,11 +1134,16 @@ public final class Format implements Parcelable {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1142,24 +1157,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithGaplessInfo(int encoderDelay, int encoderPadding) {
|
public Format copyWithGaplessInfo(int encoderDelay, int encoderPadding) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1173,24 +1188,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithFrameRate(float frameRate) {
|
public Format copyWithFrameRate(float frameRate) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1204,24 +1219,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithDrmInitData(@Nullable DrmInitData drmInitData) {
|
public Format copyWithDrmInitData(@Nullable DrmInitData drmInitData) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1235,24 +1250,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithMetadata(@Nullable Metadata metadata) {
|
public Format copyWithMetadata(@Nullable Metadata metadata) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1266,24 +1281,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithRotationDegrees(int rotationDegrees) {
|
public Format copyWithRotationDegrees(int rotationDegrees) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1297,24 +1312,24 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Format copyWithBitrate(int bitrate) {
|
public Format copyWithBitrate(int bitrate) {
|
||||||
return new Format(
|
return new Format(
|
||||||
id,
|
id,
|
||||||
label,
|
label,
|
||||||
|
selectionFlags,
|
||||||
|
bitrate,
|
||||||
|
codecs,
|
||||||
|
metadata,
|
||||||
containerMimeType,
|
containerMimeType,
|
||||||
sampleMimeType,
|
sampleMimeType,
|
||||||
codecs,
|
|
||||||
bitrate,
|
|
||||||
maxInputSize,
|
maxInputSize,
|
||||||
|
initializationData,
|
||||||
|
drmInitData,
|
||||||
|
subsampleOffsetUs,
|
||||||
width,
|
width,
|
||||||
height,
|
height,
|
||||||
frameRate,
|
frameRate,
|
||||||
|
|
@ -1328,13 +1343,8 @@ public final class Format implements Parcelable {
|
||||||
pcmEncoding,
|
pcmEncoding,
|
||||||
encoderDelay,
|
encoderDelay,
|
||||||
encoderPadding,
|
encoderPadding,
|
||||||
selectionFlags,
|
|
||||||
language,
|
language,
|
||||||
accessibilityChannel,
|
accessibilityChannel);
|
||||||
subsampleOffsetUs,
|
|
||||||
initializationData,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -1378,32 +1388,40 @@ public final class Format implements Parcelable {
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
if (hashCode == 0) {
|
if (hashCode == 0) {
|
||||||
|
// Some fields for which hashing is expensive are deliberately omitted.
|
||||||
int result = 17;
|
int result = 17;
|
||||||
result = 31 * result + (id == null ? 0 : id.hashCode());
|
result = 31 * result + (id == null ? 0 : id.hashCode());
|
||||||
result = 31 * result + (containerMimeType == null ? 0 : containerMimeType.hashCode());
|
result = 31 * result + (label != null ? label.hashCode() : 0);
|
||||||
result = 31 * result + (sampleMimeType == null ? 0 : sampleMimeType.hashCode());
|
result = 31 * result + selectionFlags;
|
||||||
result = 31 * result + (codecs == null ? 0 : codecs.hashCode());
|
|
||||||
result = 31 * result + bitrate;
|
result = 31 * result + bitrate;
|
||||||
|
result = 31 * result + (codecs == null ? 0 : codecs.hashCode());
|
||||||
|
result = 31 * result + (metadata == null ? 0 : metadata.hashCode());
|
||||||
|
// Container specific.
|
||||||
|
result = 31 * result + (containerMimeType == null ? 0 : containerMimeType.hashCode());
|
||||||
|
// Elementary stream specific.
|
||||||
|
result = 31 * result + (sampleMimeType == null ? 0 : sampleMimeType.hashCode());
|
||||||
|
result = 31 * result + maxInputSize;
|
||||||
|
// [Omitted] initializationData.
|
||||||
|
// [Omitted] drmInitData.
|
||||||
|
result = 31 * result + (int) subsampleOffsetUs;
|
||||||
|
// Video specific.
|
||||||
result = 31 * result + width;
|
result = 31 * result + width;
|
||||||
result = 31 * result + height;
|
result = 31 * result + height;
|
||||||
|
result = 31 * result + Float.floatToIntBits(frameRate);
|
||||||
|
result = 31 * result + rotationDegrees;
|
||||||
|
result = 31 * result + Float.floatToIntBits(pixelWidthHeightRatio);
|
||||||
|
// [Omitted] projectionData.
|
||||||
|
result = 31 * result + stereoMode;
|
||||||
|
// [Omitted] colorInfo.
|
||||||
|
// Audio specific.
|
||||||
result = 31 * result + channelCount;
|
result = 31 * result + channelCount;
|
||||||
result = 31 * result + sampleRate;
|
result = 31 * result + sampleRate;
|
||||||
result = 31 * result + (language == null ? 0 : language.hashCode());
|
|
||||||
result = 31 * result + accessibilityChannel;
|
|
||||||
result = 31 * result + (drmInitData == null ? 0 : drmInitData.hashCode());
|
|
||||||
result = 31 * result + (metadata == null ? 0 : metadata.hashCode());
|
|
||||||
result = 31 * result + (label != null ? label.hashCode() : 0);
|
|
||||||
result = 31 * result + maxInputSize;
|
|
||||||
result = 31 * result + (int) subsampleOffsetUs;
|
|
||||||
result = 31 * result + Float.floatToIntBits(frameRate);
|
|
||||||
result = 31 * result + Float.floatToIntBits(pixelWidthHeightRatio);
|
|
||||||
result = 31 * result + rotationDegrees;
|
|
||||||
result = 31 * result + stereoMode;
|
|
||||||
result = 31 * result + pcmEncoding;
|
result = 31 * result + pcmEncoding;
|
||||||
result = 31 * result + encoderDelay;
|
result = 31 * result + encoderDelay;
|
||||||
result = 31 * result + encoderPadding;
|
result = 31 * result + encoderPadding;
|
||||||
result = 31 * result + selectionFlags;
|
// Audio and text specific.
|
||||||
// Not all of the fields are included to keep the calculation quick enough.
|
result = 31 * result + (language == null ? 0 : language.hashCode());
|
||||||
|
result = 31 * result + accessibilityChannel;
|
||||||
hashCode = result;
|
hashCode = result;
|
||||||
}
|
}
|
||||||
return hashCode;
|
return hashCode;
|
||||||
|
|
@ -1421,32 +1439,33 @@ public final class Format implements Parcelable {
|
||||||
if (hashCode != 0 && other.hashCode != 0 && hashCode != other.hashCode) {
|
if (hashCode != 0 && other.hashCode != 0 && hashCode != other.hashCode) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return bitrate == other.bitrate
|
// Field equality checks ordered by type, with the cheapest checks first.
|
||||||
|
return selectionFlags == other.selectionFlags
|
||||||
|
&& bitrate == other.bitrate
|
||||||
&& maxInputSize == other.maxInputSize
|
&& maxInputSize == other.maxInputSize
|
||||||
|
&& subsampleOffsetUs == other.subsampleOffsetUs
|
||||||
&& width == other.width
|
&& width == other.width
|
||||||
&& height == other.height
|
&& height == other.height
|
||||||
&& Float.compare(frameRate, other.frameRate) == 0
|
|
||||||
&& rotationDegrees == other.rotationDegrees
|
&& rotationDegrees == other.rotationDegrees
|
||||||
&& Float.compare(pixelWidthHeightRatio, other.pixelWidthHeightRatio) == 0
|
|
||||||
&& stereoMode == other.stereoMode
|
&& stereoMode == other.stereoMode
|
||||||
&& channelCount == other.channelCount
|
&& channelCount == other.channelCount
|
||||||
&& sampleRate == other.sampleRate
|
&& sampleRate == other.sampleRate
|
||||||
&& pcmEncoding == other.pcmEncoding
|
&& pcmEncoding == other.pcmEncoding
|
||||||
&& encoderDelay == other.encoderDelay
|
&& encoderDelay == other.encoderDelay
|
||||||
&& encoderPadding == other.encoderPadding
|
&& encoderPadding == other.encoderPadding
|
||||||
&& subsampleOffsetUs == other.subsampleOffsetUs
|
&& accessibilityChannel == other.accessibilityChannel
|
||||||
&& selectionFlags == other.selectionFlags
|
&& Float.compare(frameRate, other.frameRate) == 0
|
||||||
|
&& Float.compare(pixelWidthHeightRatio, other.pixelWidthHeightRatio) == 0
|
||||||
&& Util.areEqual(id, other.id)
|
&& Util.areEqual(id, other.id)
|
||||||
&& Util.areEqual(label, other.label)
|
&& Util.areEqual(label, other.label)
|
||||||
&& Util.areEqual(language, other.language)
|
&& Util.areEqual(codecs, other.codecs)
|
||||||
&& accessibilityChannel == other.accessibilityChannel
|
|
||||||
&& Util.areEqual(containerMimeType, other.containerMimeType)
|
&& Util.areEqual(containerMimeType, other.containerMimeType)
|
||||||
&& Util.areEqual(sampleMimeType, other.sampleMimeType)
|
&& Util.areEqual(sampleMimeType, other.sampleMimeType)
|
||||||
&& Util.areEqual(codecs, other.codecs)
|
&& Util.areEqual(language, other.language)
|
||||||
&& Util.areEqual(drmInitData, other.drmInitData)
|
&& Arrays.equals(projectionData, other.projectionData)
|
||||||
&& Util.areEqual(metadata, other.metadata)
|
&& Util.areEqual(metadata, other.metadata)
|
||||||
&& Util.areEqual(colorInfo, other.colorInfo)
|
&& Util.areEqual(colorInfo, other.colorInfo)
|
||||||
&& Arrays.equals(projectionData, other.projectionData)
|
&& Util.areEqual(drmInitData, other.drmInitData)
|
||||||
&& initializationDataEquals(other);
|
&& initializationDataEquals(other);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1517,11 +1536,23 @@ public final class Format implements Parcelable {
|
||||||
public void writeToParcel(Parcel dest, int flags) {
|
public void writeToParcel(Parcel dest, int flags) {
|
||||||
dest.writeString(id);
|
dest.writeString(id);
|
||||||
dest.writeString(label);
|
dest.writeString(label);
|
||||||
dest.writeString(containerMimeType);
|
dest.writeInt(selectionFlags);
|
||||||
dest.writeString(sampleMimeType);
|
|
||||||
dest.writeString(codecs);
|
|
||||||
dest.writeInt(bitrate);
|
dest.writeInt(bitrate);
|
||||||
|
dest.writeString(codecs);
|
||||||
|
dest.writeParcelable(metadata, 0);
|
||||||
|
// Container specific.
|
||||||
|
dest.writeString(containerMimeType);
|
||||||
|
// Elementary stream specific.
|
||||||
|
dest.writeString(sampleMimeType);
|
||||||
dest.writeInt(maxInputSize);
|
dest.writeInt(maxInputSize);
|
||||||
|
int initializationDataSize = initializationData.size();
|
||||||
|
dest.writeInt(initializationDataSize);
|
||||||
|
for (int i = 0; i < initializationDataSize; i++) {
|
||||||
|
dest.writeByteArray(initializationData.get(i));
|
||||||
|
}
|
||||||
|
dest.writeParcelable(drmInitData, 0);
|
||||||
|
dest.writeLong(subsampleOffsetUs);
|
||||||
|
// Video specific.
|
||||||
dest.writeInt(width);
|
dest.writeInt(width);
|
||||||
dest.writeInt(height);
|
dest.writeInt(height);
|
||||||
dest.writeFloat(frameRate);
|
dest.writeFloat(frameRate);
|
||||||
|
|
@ -1533,22 +1564,15 @@ public final class Format implements Parcelable {
|
||||||
}
|
}
|
||||||
dest.writeInt(stereoMode);
|
dest.writeInt(stereoMode);
|
||||||
dest.writeParcelable(colorInfo, flags);
|
dest.writeParcelable(colorInfo, flags);
|
||||||
|
// Audio specific.
|
||||||
dest.writeInt(channelCount);
|
dest.writeInt(channelCount);
|
||||||
dest.writeInt(sampleRate);
|
dest.writeInt(sampleRate);
|
||||||
dest.writeInt(pcmEncoding);
|
dest.writeInt(pcmEncoding);
|
||||||
dest.writeInt(encoderDelay);
|
dest.writeInt(encoderDelay);
|
||||||
dest.writeInt(encoderPadding);
|
dest.writeInt(encoderPadding);
|
||||||
dest.writeInt(selectionFlags);
|
// Audio and text specific.
|
||||||
dest.writeString(language);
|
dest.writeString(language);
|
||||||
dest.writeInt(accessibilityChannel);
|
dest.writeInt(accessibilityChannel);
|
||||||
dest.writeLong(subsampleOffsetUs);
|
|
||||||
int initializationDataSize = initializationData.size();
|
|
||||||
dest.writeInt(initializationDataSize);
|
|
||||||
for (int i = 0; i < initializationDataSize; i++) {
|
|
||||||
dest.writeByteArray(initializationData.get(i));
|
|
||||||
}
|
|
||||||
dest.writeParcelable(drmInitData, 0);
|
|
||||||
dest.writeParcelable(metadata, 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Creator<Format> CREATOR = new Creator<Format>() {
|
public static final Creator<Format> CREATOR = new Creator<Format>() {
|
||||||
|
|
|
||||||
|
|
@ -38,14 +38,15 @@ import org.junit.runner.RunWith;
|
||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public final class FormatTest {
|
public final class FormatTest {
|
||||||
|
|
||||||
private static final List<byte[]> INIT_DATA;
|
private static final List<byte[]> initData;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
byte[] initData1 = new byte[] {1, 2, 3};
|
byte[] initData1 = new byte[] {1, 2, 3};
|
||||||
byte[] initData2 = new byte[] {4, 5, 6};
|
byte[] initData2 = new byte[] {4, 5, 6};
|
||||||
List<byte[]> initData = new ArrayList<>();
|
List<byte[]> initDataList = new ArrayList<>();
|
||||||
initData.add(initData1);
|
initDataList.add(initData1);
|
||||||
initData.add(initData2);
|
initDataList.add(initData2);
|
||||||
INIT_DATA = Collections.unmodifiableList(initData);
|
initData = Collections.unmodifiableList(initDataList);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -66,11 +67,16 @@ public final class FormatTest {
|
||||||
new Format(
|
new Format(
|
||||||
"id",
|
"id",
|
||||||
"label",
|
"label",
|
||||||
|
C.SELECTION_FLAG_DEFAULT,
|
||||||
|
/* bitrate= */ 1024,
|
||||||
|
"codec",
|
||||||
|
metadata,
|
||||||
/* containerMimeType= */ MimeTypes.VIDEO_MP4,
|
/* containerMimeType= */ MimeTypes.VIDEO_MP4,
|
||||||
/* sampleMimeType= */ MimeTypes.VIDEO_H264,
|
/* sampleMimeType= */ MimeTypes.VIDEO_H264,
|
||||||
"codec",
|
|
||||||
/* bitrate= */ 1024,
|
|
||||||
/* maxInputSize= */ 2048,
|
/* maxInputSize= */ 2048,
|
||||||
|
initData,
|
||||||
|
drmInitData,
|
||||||
|
Format.OFFSET_SAMPLE_RELATIVE,
|
||||||
/* width= */ 1920,
|
/* width= */ 1920,
|
||||||
/* height= */ 1080,
|
/* height= */ 1080,
|
||||||
/* frameRate= */ 24,
|
/* frameRate= */ 24,
|
||||||
|
|
@ -84,13 +90,8 @@ public final class FormatTest {
|
||||||
C.ENCODING_PCM_24BIT,
|
C.ENCODING_PCM_24BIT,
|
||||||
/* encoderDelay= */ 1001,
|
/* encoderDelay= */ 1001,
|
||||||
/* encoderPadding= */ 1002,
|
/* encoderPadding= */ 1002,
|
||||||
C.SELECTION_FLAG_DEFAULT,
|
|
||||||
"language",
|
"language",
|
||||||
/* accessibilityChannel= */ Format.NO_VALUE,
|
/* accessibilityChannel= */ Format.NO_VALUE);
|
||||||
Format.OFFSET_SAMPLE_RELATIVE,
|
|
||||||
INIT_DATA,
|
|
||||||
drmInitData,
|
|
||||||
metadata);
|
|
||||||
|
|
||||||
Parcel parcel = Parcel.obtain();
|
Parcel parcel = Parcel.obtain();
|
||||||
formatToParcel.writeToParcel(parcel, 0);
|
formatToParcel.writeToParcel(parcel, 0);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue