From 89271eb7224ece39cedc7ac333b4615fb32eb378 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 --- .../main/java/androidx/media3/common/C.java | 2 + .../java/androidx/media3/common/Format.java | 73 ++++++++++++++++++- 2 files changed, 72 insertions(+), 3 deletions(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/C.java b/libraries/common/src/main/java/androidx/media3/common/C.java index 75e5f66437..bf465116ed 100644 --- a/libraries/common/src/main/java/androidx/media3/common/C.java +++ b/libraries/common/src/main/java/androidx/media3/common/C.java @@ -625,6 +625,7 @@ private 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; /** @@ -1103,6 +1104,7 @@ private 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/libraries/common/src/main/java/androidx/media3/common/Format.java b/libraries/common/src/main/java/androidx/media3/common/Format.java index 0fdff12234..bb6cfc86f7 100644 --- a/libraries/common/src/main/java/androidx/media3/common/Format.java +++ b/libraries/common/src/main/java/androidx/media3/common/Format.java @@ -1321,7 +1321,9 @@ public static String toLogString(@Nullable Format format) { 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); @@ -1341,8 +1343,73 @@ public static String toLogString(@Nullable Format format) { 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(); }