Fixes according to the code review

This commit is contained in:
Arnold Szabo 2019-03-07 00:09:11 +02:00
parent 854419962a
commit d7c2519a5d
9 changed files with 126 additions and 110 deletions

View file

@ -977,7 +977,10 @@ public final class C {
public static final int NETWORK_TYPE_OTHER = 8;
/**
* Adaptation set's role and accessibility descriptor value.
* Track role flags. Possible values are {@link #ROLE_FLAGS_MAIN}, {@link #ROLE_FLAGS_ALTERNATE},
* {@link #ROLE_FLAGS_SUPPLEMENTARY}, {@link #ROLE_FLAGS_COMMENTARY}, {@link #ROLE_FLAGS_DUB},
* {@link #ROLE_FLAGS_EMERGENCY}, {@link #ROLE_FLAGS_CAPTION}, {@link #ROLE_FLAGS_SIGN},
* {@link #ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY}, {@link #ROLE_FLAGS_DESCRIPTION}.
*/
@Documented
@Retention(RetentionPolicy.SOURCE)

View file

@ -51,7 +51,7 @@ public final class Format implements Parcelable {
/** Track selection flags. **/
@C.SelectionFlags
public final int selectionFlags;
/** Track role and accessibility descriptor values. **/
/** Track role flags. **/
@C.RoleFlags
public final int roleFlags;
/**
@ -234,9 +234,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
selectionFlags,
roleFlags,
/* language= */ null,
/* accessibilityChannel= */ NO_VALUE,
roleFlags,
OFFSET_SAMPLE_RELATIVE,
initializationData,
/* drmInitData= */ null,
@ -338,9 +338,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0,
OFFSET_SAMPLE_RELATIVE,
initializationData,
drmInitData,
@ -360,8 +360,8 @@ public final class Format implements Parcelable {
int sampleRate,
@Nullable List<byte[]> initializationData,
@C.SelectionFlags int selectionFlags,
@Nullable String language,
@C.RoleFlags int roleFlags) {
@C.RoleFlags int roleFlags,
@Nullable String language) {
return createAudioContainerFormat(
id,
/* label= */ null,
@ -373,8 +373,8 @@ public final class Format implements Parcelable {
sampleRate,
initializationData,
selectionFlags,
language,
roleFlags);
roleFlags,
language);
}
public static Format createAudioContainerFormat(
@ -388,8 +388,8 @@ public final class Format implements Parcelable {
int sampleRate,
@Nullable List<byte[]> initializationData,
@C.SelectionFlags int selectionFlags,
@Nullable String language,
@C.RoleFlags int roleFlags) {
@C.RoleFlags int roleFlags,
@Nullable String language) {
return new Format(
id,
label,
@ -412,9 +412,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
selectionFlags,
roleFlags,
language,
/* accessibilityChannel= */ NO_VALUE,
roleFlags,
OFFSET_SAMPLE_RELATIVE,
initializationData,
/* drmInitData= */ null,
@ -517,9 +517,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
/* roleFlags= */ 0,
language,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0,
OFFSET_SAMPLE_RELATIVE,
initializationData,
drmInitData,
@ -565,9 +565,9 @@ public final class Format implements Parcelable {
codecs,
bitrate,
selectionFlags,
/* roleFlags= */ 0,
language,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0);
/* accessibilityChannel= */ NO_VALUE);
}
public static Format createTextContainerFormat(
@ -578,9 +578,9 @@ public final class Format implements Parcelable {
@Nullable String codecs,
int bitrate,
@C.SelectionFlags int selectionFlags,
@C.RoleFlags int roleFlags,
@Nullable String language,
int accessibilityChannel,
@C.RoleFlags int roleFlags) {
int accessibilityChannel) {
return new Format(
id,
label,
@ -603,9 +603,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
OFFSET_SAMPLE_RELATIVE,
/* initializationData= */ null,
/* drmInitData= */ null,
@ -716,9 +716,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
selectionFlags,
/* roleFlags= */ 0,
language,
accessibilityChannel,
/* roleFlags= */ 0,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -758,9 +758,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
selectionFlags,
/* roleFlags= */ 0,
language,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0,
OFFSET_SAMPLE_RELATIVE,
initializationData,
drmInitData,
@ -777,6 +777,7 @@ public final class Format implements Parcelable {
@Nullable String codecs,
int bitrate,
@C.SelectionFlags int selectionFlags,
@C.RoleFlags int roleFlags,
@Nullable String language) {
return createContainerFormat(
id,
@ -786,6 +787,7 @@ public final class Format implements Parcelable {
codecs,
bitrate,
selectionFlags,
roleFlags,
language);
}
@ -797,6 +799,7 @@ public final class Format implements Parcelable {
@Nullable String codecs,
int bitrate,
@C.SelectionFlags int selectionFlags,
@C.RoleFlags int roleFlags,
@Nullable String language) {
return new Format(
id,
@ -820,9 +823,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
selectionFlags,
roleFlags,
language,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0,
OFFSET_SAMPLE_RELATIVE,
/* initializationData= */ null,
/* drmInitData= */ null,
@ -853,9 +856,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0,
subsampleOffsetUs,
/* initializationData= */ null,
/* drmInitData= */ null,
@ -890,9 +893,9 @@ public final class Format implements Parcelable {
/* encoderDelay= */ NO_VALUE,
/* encoderPadding= */ NO_VALUE,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null,
/* accessibilityChannel= */ NO_VALUE,
/* roleFlags= */ 0,
OFFSET_SAMPLE_RELATIVE,
/* initializationData= */ null,
drmInitData,
@ -921,9 +924,9 @@ public final class Format implements Parcelable {
int encoderDelay,
int encoderPadding,
@C.SelectionFlags int selectionFlags,
@C.RoleFlags int roleFlags,
@Nullable String language,
int accessibilityChannel,
@C.RoleFlags int roleFlags,
long subsampleOffsetUs,
@Nullable List<byte[]> initializationData,
@Nullable DrmInitData drmInitData,
@ -950,9 +953,9 @@ public final class Format implements Parcelable {
this.encoderDelay = encoderDelay == Format.NO_VALUE ? 0 : encoderDelay;
this.encoderPadding = encoderPadding == Format.NO_VALUE ? 0 : encoderPadding;
this.selectionFlags = selectionFlags;
this.roleFlags = roleFlags;
this.language = Util.normalizeLanguageCode(language);
this.accessibilityChannel = accessibilityChannel;
this.roleFlags = roleFlags;
this.subsampleOffsetUs = subsampleOffsetUs;
this.initializationData =
initializationData == null ? Collections.emptyList() : initializationData;
@ -984,9 +987,9 @@ public final class Format implements Parcelable {
encoderDelay = in.readInt();
encoderPadding = in.readInt();
selectionFlags = in.readInt();
roleFlags = in.readInt();
language = in.readString();
accessibilityChannel = in.readInt();
roleFlags = in.readInt();
subsampleOffsetUs = in.readLong();
int initializationDataSize = in.readInt();
initializationData = new ArrayList<>(initializationDataSize);
@ -1020,9 +1023,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1052,9 +1055,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1093,9 +1096,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1165,9 +1168,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1197,9 +1200,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1229,9 +1232,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1261,9 +1264,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1293,9 +1296,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1325,9 +1328,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1357,9 +1360,9 @@ public final class Format implements Parcelable {
encoderDelay,
encoderPadding,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags,
subsampleOffsetUs,
initializationData,
drmInitData,
@ -1465,11 +1468,11 @@ public final class Format implements Parcelable {
&& encoderPadding == other.encoderPadding
&& subsampleOffsetUs == other.subsampleOffsetUs
&& selectionFlags == other.selectionFlags
&& roleFlags == other.roleFlags
&& Util.areEqual(id, other.id)
&& Util.areEqual(label, other.label)
&& Util.areEqual(language, other.language)
&& accessibilityChannel == other.accessibilityChannel
&& roleFlags == other.roleFlags
&& Util.areEqual(containerMimeType, other.containerMimeType)
&& Util.areEqual(sampleMimeType, other.sampleMimeType)
&& Util.areEqual(codecs, other.codecs)
@ -1569,9 +1572,9 @@ public final class Format implements Parcelable {
dest.writeInt(encoderDelay);
dest.writeInt(encoderPadding);
dest.writeInt(selectionFlags);
dest.writeInt(roleFlags);
dest.writeString(language);
dest.writeInt(accessibilityChannel);
dest.writeInt(roleFlags);
dest.writeLong(subsampleOffsetUs);
int initializationDataSize = initializationData.size();
dest.writeInt(initializationDataSize);

View file

@ -279,7 +279,6 @@ public class DashManifestParser extends DefaultHandler
ArrayList<Descriptor> roleDescriptors = new ArrayList<>();
ArrayList<Descriptor> supplementalProperties = new ArrayList<>();
List<RepresentationInfo> representationInfos = new ArrayList<>();
@C.SelectionFlags int selectionFlags = 0;
boolean seenFirstBaseUrl = false;
do {
@ -301,9 +300,7 @@ public class DashManifestParser extends DefaultHandler
language = checkLanguageConsistency(language, xpp.getAttributeValue(null, "lang"));
contentType = checkContentTypeConsistency(contentType, parseContentType(xpp));
} else if (XmlPullParserUtil.isStartTag(xpp, "Role")) {
Descriptor descriptor = parseDescriptor(xpp, "Role");
selectionFlags |= parseSelectionFlags(descriptor);
roleDescriptors.add(descriptor);
roleDescriptors.add(parseDescriptor(xpp, "Role"));
} else if (XmlPullParserUtil.isStartTag(xpp, "AudioChannelConfiguration")) {
audioChannels = parseAudioChannelConfiguration(xpp);
} else if (XmlPullParserUtil.isStartTag(xpp, "Accessibility")) {
@ -324,7 +321,6 @@ public class DashManifestParser extends DefaultHandler
audioChannels,
audioSamplingRate,
language,
selectionFlags,
roleDescriptors,
accessibilityDescriptors,
segmentBase);
@ -494,7 +490,6 @@ public class DashManifestParser extends DefaultHandler
int adaptationSetAudioChannels,
int adaptationSetAudioSamplingRate,
String adaptationSetLanguage,
@C.SelectionFlags int adaptationSetSelectionFlags,
List<Descriptor> adaptationSetRoleDescriptors,
List<Descriptor> adaptationSetAccessibilityDescriptors,
SegmentBase segmentBase)
@ -559,7 +554,6 @@ public class DashManifestParser extends DefaultHandler
audioSamplingRate,
bandwidth,
adaptationSetLanguage,
adaptationSetSelectionFlags,
adaptationSetRoleDescriptors,
adaptationSetAccessibilityDescriptors,
codecs,
@ -581,16 +575,16 @@ public class DashManifestParser extends DefaultHandler
int audioSamplingRate,
int bitrate,
String language,
@C.SelectionFlags int selectionFlags,
List<Descriptor> roleDescriptors,
List<Descriptor> accessibilityDescriptors,
String codecs,
List<Descriptor> supplementalProperties) {
String sampleMimeType = getSampleMimeType(containerMimeType, codecs);
@C.SelectionFlags int selectionFlags = parseSelection(roleDescriptors);
@C.RoleFlags int role = parseRole(roleDescriptors);
@C.RoleFlags int accessibility = parseAccessibility(accessibilityDescriptors);
@C.RoleFlags int roleFlags = role | accessibility;
if (sampleMimeType != null) {
@C.RoleFlags int role = parseRole(roleDescriptors);
@C.RoleFlags int accessibility = parseAccessibility(accessibilityDescriptors);
@C.RoleFlags int roleFlags = role | accessibility;
if (MimeTypes.AUDIO_E_AC3.equals(sampleMimeType)) {
sampleMimeType = parseEac3SupplementalProperties(supplementalProperties);
}
@ -620,8 +614,8 @@ public class DashManifestParser extends DefaultHandler
audioSamplingRate,
/* initializationData= */ null,
selectionFlags,
language,
roleFlags);
roleFlags,
language);
} else if (mimeTypeIsRawText(sampleMimeType)) {
int accessibilityChannel;
if (MimeTypes.APPLICATION_CEA608.equals(sampleMimeType)) {
@ -639,13 +633,21 @@ public class DashManifestParser extends DefaultHandler
codecs,
bitrate,
selectionFlags,
roleFlags,
language,
accessibilityChannel,
roleFlags);
accessibilityChannel);
}
}
return Format.createContainerFormat(
id, label, containerMimeType, sampleMimeType, codecs, bitrate, selectionFlags, language);
id,
label,
containerMimeType,
sampleMimeType,
codecs,
bitrate,
selectionFlags,
roleFlags,
language);
}
protected Representation buildRepresentation(
@ -1061,9 +1063,16 @@ public class DashManifestParser extends DefaultHandler
// Selection flag parsing.
protected int parseSelectionFlags(Descriptor roleDescriptor) {
return "urn:mpeg:dash:role:2011".equals(roleDescriptor.schemeIdUri)
&& "main".equals(roleDescriptor.value) ? C.SELECTION_FLAG_DEFAULT : 0;
protected int parseSelection(List<Descriptor> roleDescriptors) {
for (int i = 0; i < roleDescriptors.size(); i++) {
Descriptor descriptor = roleDescriptors.get(i);
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri)
&& "main".equals(descriptor.value)) {
return C.SELECTION_FLAG_DEFAULT;
}
}
return 0;
}
// Role and Accessibility parsing.
@ -1072,7 +1081,7 @@ public class DashManifestParser extends DefaultHandler
@C.RoleFlags int result = 0;
for (int i = 0; i < roleDescriptors.size(); i++) {
Descriptor descriptor = roleDescriptors.get(i);
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri) && descriptor.value != null) {
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri)) {
result |= parseRoleSchemeValue(descriptor.value);
}
}
@ -1083,68 +1092,63 @@ public class DashManifestParser extends DefaultHandler
@C.RoleFlags int result = 0;
for (int i = 0; i < accessibilityDescriptors.size(); i++) {
Descriptor descriptor = accessibilityDescriptors.get(i);
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri) && descriptor.value != null) {
if ("urn:mpeg:dash:role:2011".equalsIgnoreCase(descriptor.schemeIdUri)) {
result |= parseRoleSchemeValue(descriptor.value);
}
if ("urn:tva:metadata:cs:AudioPurposeCS:2007".equalsIgnoreCase(descriptor.schemeIdUri) &&
descriptor.value != null) {
switch (descriptor.value){
case "1": // Audio description for the visually impaired
result |= C.ROLE_FLAGS_DESCRIPTION;
break;
case "2": // Audio description for the hard of hearing
result |= C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
break;
case "3": // Supplemental commentary
result |= C.ROLE_FLAGS_SUPPLEMENTARY;
break;
case "4": // Director's commentary
result |= C.ROLE_FLAGS_COMMENTARY;
break;
case "6": // Main programme audio
result |= C.ROLE_FLAGS_MAIN;
break;
}
} else if ("urn:tva:metadata:cs:AudioPurposeCS:2007".equalsIgnoreCase(descriptor.schemeIdUri)) {
result |= parseAudioPurposeValue(descriptor.value);
}
}
return result;
}
protected @C.RoleFlags int parseRoleSchemeValue(String value){
@C.RoleFlags int result = 0;
protected @C.RoleFlags int parseRoleSchemeValue(String value) {
if (value == null) {
return 0;
}
switch (value) {
case "main":
result |= C.ROLE_FLAGS_MAIN;
break;
return C.ROLE_FLAGS_MAIN;
case "alternate":
result |= C.ROLE_FLAGS_ALTERNATE;
break;
return C.ROLE_FLAGS_ALTERNATE;
case "supplementary":
result |= C.ROLE_FLAGS_SUPPLEMENTARY;
break;
return C.ROLE_FLAGS_SUPPLEMENTARY;
case "commentary":
result |= C.ROLE_FLAGS_COMMENTARY;
break;
return C.ROLE_FLAGS_COMMENTARY;
case "dub":
result |= C.ROLE_FLAGS_DUB;
break;
return C.ROLE_FLAGS_DUB;
case "emergency":
result |= C.ROLE_FLAGS_EMERGENCY;
break;
return C.ROLE_FLAGS_EMERGENCY;
case "caption":
result |= C.ROLE_FLAGS_CAPTION;
break;
return C.ROLE_FLAGS_CAPTION;
case "sign":
result |= C.ROLE_FLAGS_SIGN;
break;
return C.ROLE_FLAGS_SIGN;
case "description":
result |= C.ROLE_FLAGS_DESCRIPTION;
break;
return C.ROLE_FLAGS_DESCRIPTION;
case "enhanced-audio-intelligibility":
result |= C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
break;
return C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
default:
return 0;
}
}
protected @C.RoleFlags int parseAudioPurposeValue(String value) {
if (value == null) {
return 0;
}
switch (value) {
case "1": // Audio description for the visually impaired
return C.ROLE_FLAGS_DESCRIPTION;
case "2": // Audio description for the hard of hearing
return C.ROLE_FLAGS_ENHANCED_AUDIO_INTELLIGIBILITY;
case "3": // Supplemental commentary
return C.ROLE_FLAGS_SUPPLEMENTARY;
case "4": // Director's commentary
return C.ROLE_FLAGS_COMMENTARY;
case "6": // Main programme audio
return C.ROLE_FLAGS_MAIN;
default:
return 0;
}
return result;
}
// Utility methods.

View file

@ -193,6 +193,7 @@ public final class DashMediaPeriodTest {
/* codecs= */ null,
bitrate,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null);
}
@ -207,6 +208,7 @@ public final class DashMediaPeriodTest {
/* codecs= */ null,
bitrate,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null),
/* baseUrl= */ "",
new SingleSegmentBase());
@ -223,6 +225,7 @@ public final class DashMediaPeriodTest {
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
language),
/* baseUrl= */ "",
new SingleSegmentBase());

View file

@ -85,7 +85,8 @@ public final class DashUtilTest {
/* height= */ 768,
Format.NO_VALUE,
/* initializationData= */ null,
/* selectionFlags= */ 0);
/* selectionFlags= */ 0,
/* roleFlags= */ 0);
if (drmInitData != null) {
format = format.copyWithDrmInitData(drmInitData);
}

View file

@ -741,8 +741,8 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsSampleStreamWrapper
/* sampleRate= */ Format.NO_VALUE,
/* initializationData= */ null,
selectionFlags,
language,
/* roleFlags= */ 0);
/* roleFlags= */ 0,
language);
}
}

View file

@ -78,6 +78,7 @@ public final class HlsMasterPlaylist extends HlsPlaylist {
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null);
return new HlsUrl(url, format, /* name= */ "");
}

View file

@ -362,8 +362,8 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
/* sampleRate= */ Format.NO_VALUE,
/* initializationData= */ null,
selectionFlags,
language,
/* roleFlags= */ 0);
/* roleFlags= */ 0,
language);
if (isMediaTagMuxed(variants, uri)) {
muxedAudioFormat = format;
} else {
@ -406,9 +406,9 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
/* codecs= */ null,
/* bitrate= */ Format.NO_VALUE,
selectionFlags,
/* roleFlags= */ 0,
language,
accessibilityChannel,
/* roleFlags= */ 0));
accessibilityChannel));
break;
default:
// Do nothing.

View file

@ -706,8 +706,8 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
samplingRate,
codecSpecificData,
/* selectionFlags= */ 0,
language,
/* roleFlags= */ 0);
/* roleFlags= */ 0,
language);
} else if (type == C.TRACK_TYPE_TEXT) {
String language = (String) getNormalizedAttribute(KEY_LANGUAGE);
format =
@ -730,6 +730,7 @@ public class SsManifestParser implements ParsingLoadable.Parser<SsManifest> {
/* codecs= */ null,
bitrate,
/* selectionFlags= */ 0,
/* roleFlags= */ 0,
/* language= */ null);
}
}