From 7d83c979a6a3ae3e7388de479b7e5c80a65f98db Mon Sep 17 00:00:00 2001 From: ibaker Date: Tue, 21 Dec 2021 14:27:19 +0000 Subject: [PATCH] Include role and selection flags when logging a track's Format Inspired by my investigation of Issue: google/ExoPlayer#9797 #minor-release PiperOrigin-RevId: 417609076 --- .../java/com/google/android/exoplayer2/C.java | 2 + .../com/google/android/exoplayer2/Format.java | 73 ++++++++++++++++++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/library/common/src/main/java/com/google/android/exoplayer2/C.java b/library/common/src/main/java/com/google/android/exoplayer2/C.java index b8d2def750..24a0fc2d13 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/C.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/C.java @@ -604,6 +604,7 @@ public final class C { flag = true, value = {SELECTION_FLAG_DEFAULT, SELECTION_FLAG_FORCED, SELECTION_FLAG_AUTOSELECT}) public @interface SelectionFlags {} + // LINT.IfChange(selection_flags) /** Indicates that the track should be selected if user preferences do not state otherwise. */ public static final int SELECTION_FLAG_DEFAULT = 1; /** @@ -1069,6 +1070,7 @@ public final class C { ROLE_FLAG_TRICK_PLAY }) public @interface RoleFlags {} + // LINT.IfChange(role_flags) /** Indicates a main track. */ public static final int ROLE_FLAG_MAIN = 1; /** diff --git a/library/common/src/main/java/com/google/android/exoplayer2/Format.java b/library/common/src/main/java/com/google/android/exoplayer2/Format.java index 375ef7a309..6d68e5a919 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/Format.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/Format.java @@ -1301,7 +1301,9 @@ public final class Format implements Bundleable { schemes.add("unknown (" + schemeUuid + ")"); } } - builder.append(", drm=[").append(Joiner.on(',').join(schemes)).append(']'); + builder.append(", drm=["); + Joiner.on(',').appendTo(builder, schemes); + builder.append(']'); } if (format.width != NO_VALUE && format.height != NO_VALUE) { builder.append(", res=").append(format.width).append("x").append(format.height); @@ -1321,8 +1323,73 @@ public final class Format implements Bundleable { if (format.label != null) { builder.append(", label=").append(format.label); } - if ((format.roleFlags & C.ROLE_FLAG_TRICK_PLAY) != 0) { - builder.append(", trick-play-track"); + if (format.selectionFlags != 0) { + List selectionFlags = new ArrayList<>(); + // LINT.IfChange(selection_flags) + if ((format.selectionFlags & C.SELECTION_FLAG_AUTOSELECT) != 0) { + selectionFlags.add("auto"); + } + if ((format.selectionFlags & C.SELECTION_FLAG_DEFAULT) != 0) { + selectionFlags.add("default"); + } + if ((format.selectionFlags & C.SELECTION_FLAG_FORCED) != 0) { + selectionFlags.add("forced"); + } + builder.append(", selectionFlags=["); + Joiner.on(',').appendTo(builder, selectionFlags); + builder.append("]"); + } + if (format.roleFlags != 0) { + // LINT.IfChange(role_flags) + List roleFlags = new ArrayList<>(); + if ((format.roleFlags & C.ROLE_FLAG_MAIN) != 0) { + roleFlags.add("main"); + } + if ((format.roleFlags & C.ROLE_FLAG_ALTERNATE) != 0) { + roleFlags.add("alt"); + } + if ((format.roleFlags & C.ROLE_FLAG_SUPPLEMENTARY) != 0) { + roleFlags.add("supplementary"); + } + if ((format.roleFlags & C.ROLE_FLAG_COMMENTARY) != 0) { + roleFlags.add("commentary"); + } + if ((format.roleFlags & C.ROLE_FLAG_DUB) != 0) { + roleFlags.add("dub"); + } + if ((format.roleFlags & C.ROLE_FLAG_EMERGENCY) != 0) { + roleFlags.add("emergency"); + } + if ((format.roleFlags & C.ROLE_FLAG_CAPTION) != 0) { + roleFlags.add("caption"); + } + if ((format.roleFlags & C.ROLE_FLAG_SUBTITLE) != 0) { + roleFlags.add("subtitle"); + } + if ((format.roleFlags & C.ROLE_FLAG_SIGN) != 0) { + roleFlags.add("sign"); + } + if ((format.roleFlags & C.ROLE_FLAG_DESCRIBES_VIDEO) != 0) { + roleFlags.add("describes-video"); + } + if ((format.roleFlags & C.ROLE_FLAG_DESCRIBES_MUSIC_AND_SOUND) != 0) { + roleFlags.add("describes-music"); + } + if ((format.roleFlags & C.ROLE_FLAG_ENHANCED_DIALOG_INTELLIGIBILITY) != 0) { + roleFlags.add("enhanced-intelligibility"); + } + if ((format.roleFlags & C.ROLE_FLAG_TRANSCRIBES_DIALOG) != 0) { + roleFlags.add("transcribes-dialog"); + } + if ((format.roleFlags & C.ROLE_FLAG_EASY_TO_READ) != 0) { + roleFlags.add("easy-read"); + } + if ((format.roleFlags & C.ROLE_FLAG_TRICK_PLAY) != 0) { + roleFlags.add("trick-play"); + } + builder.append(", roleFlags=["); + Joiner.on(',').appendTo(builder, roleFlags); + builder.append("]"); } return builder.toString(); }