Update code according to review result

This commit is contained in:
ybai001 2024-12-19 16:28:33 +08:00
parent 545d37c104
commit 1ac847ad60
2 changed files with 36 additions and 19 deletions

View File

@ -2115,6 +2115,34 @@ public final class Util {
return builder.length() > 0 ? builder.toString() : null; return builder.length() > 0 ? builder.toString() : null;
} }
/**
* Returns a copy of {@code codecs} without the codecs whose track type matches {@code
* trackType}.
*
* @param codecs A codec sequence string, as defined in RFC 6381.
* @param trackType The {@link C.TrackType track type}.
* @return A copy of {@code codecs} without the codecs whose track type matches {@code
* trackType}. If this ends up empty, or {@code codecs} is null, returns null.
*/
@UnstableApi
@Nullable
public static String getCodecsWithoutType(@Nullable String codecs, @C.TrackType int trackType) {
String[] codecArray = splitCodecs(codecs);
if (codecArray.length == 0) {
return null;
}
StringBuilder builder = new StringBuilder();
for (String codec : codecArray) {
if (trackType != MimeTypes.getTrackTypeOfCodec(codec)) {
if (builder.length() > 0) {
builder.append(",");
}
builder.append(codec);
}
}
return builder.length() > 0 ? builder.toString() : null;
}
/** /**
* Splits a codecs sequence string, as defined in RFC 6381, into individual codec strings. * Splits a codecs sequence string, as defined in RFC 6381, into individual codec strings.
* *

View File

@ -418,8 +418,7 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
String supplementalCodecs = null; String supplementalCodecs = null;
String supplementalProfiles = null; // i.e. Compatibility brand String supplementalProfiles = null; // i.e. Compatibility brand
if (supplementalCodecsStrings != null) { if (supplementalCodecsStrings != null) {
String[] supplementalCodecsString = Util.split(supplementalCodecsStrings, ","); String[] supplementalCodecsString = Util.splitAtFirst(supplementalCodecsStrings, ",");
if (!supplementalCodecsString[0].isEmpty()) {
// TODO: Support more than one element // TODO: Support more than one element
String[] codecsAndProfiles = Util.split(supplementalCodecsString[0], "/"); String[] codecsAndProfiles = Util.split(supplementalCodecsString[0], "/");
supplementalCodecs = codecsAndProfiles[0]; supplementalCodecs = codecsAndProfiles[0];
@ -427,21 +426,11 @@ public final class HlsPlaylistParser implements ParsingLoadable.Parser<HlsPlayli
supplementalProfiles = codecsAndProfiles[1]; supplementalProfiles = codecsAndProfiles[1];
} }
} }
}
String videoCodecs = Util.getCodecsOfType(codecs, C.TRACK_TYPE_VIDEO); String videoCodecs = Util.getCodecsOfType(codecs, C.TRACK_TYPE_VIDEO);
if (isDolbyVisionFormat(videoRange, videoCodecs, supplementalCodecs, supplementalProfiles)) { if (isDolbyVisionFormat(videoRange, videoCodecs, supplementalCodecs, supplementalProfiles)) {
videoCodecs = supplementalCodecs != null ? supplementalCodecs : videoCodecs; videoCodecs = supplementalCodecs != null ? supplementalCodecs : videoCodecs;
String[] codecArray = Util.splitCodecs(codecs); String nonVideoCodecs = Util.getCodecsWithoutType(codecs, C.TRACK_TYPE_VIDEO);
StringBuilder builder = new StringBuilder(); codecs = nonVideoCodecs != null ? videoCodecs + "," + nonVideoCodecs : videoCodecs;
for (String codec : codecArray) {
if (builder.length() > 0) {
builder.append(",");
}
builder.append(MimeTypes.getTrackTypeOfCodec(codec) == C.TRACK_TYPE_VIDEO
? videoCodecs
: codec);
}
codecs = builder.length() > 0 ? builder.toString() : codecs;
} }
String resolutionString = String resolutionString =