From c90745d956b99b842c91a7fec1d2c718902f1bd1 Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 14 Feb 2022 16:46:44 +0000 Subject: [PATCH] Add getFormat and length to TrackGroupInfo PiperOrigin-RevId: 428520090 --- docs/track-selection.md | 5 ++--- .../google/android/exoplayer2/TracksInfo.java | 19 +++++++++++++++++-- .../analytics/MediaMetricsListener.java | 6 ++---- .../android/exoplayer2/util/EventLogger.java | 5 ++--- .../android/exoplayer2/ExoPlayerTest.java | 2 +- .../ui/StyledPlayerControlView.java | 6 +++--- 6 files changed, 27 insertions(+), 16 deletions(-) diff --git a/docs/track-selection.md b/docs/track-selection.md index abcf2864f8..90f1be5f7f 100644 --- a/docs/track-selection.md +++ b/docs/track-selection.md @@ -40,12 +40,11 @@ for (TrackGroupInfo groupInfo : tracksInfo.getTrackGroupInfos()) { @C.TrackType int trackType = groupInfo.getTrackType(); boolean trackInGroupIsSelected = groupInfo.isSelected(); boolean trackInGroupIsSupported = groupInfo.isSupported(); - TrackGroup group = groupInfo.getTrackGroup(); - for (int i = 0; i < group.length; i++) { + for (int i = 0; i < groupInfo.length; i++) { // Individual track information. boolean isSupported = groupInfo.isTrackSupported(i); boolean isSelected = groupInfo.isTrackSelected(i); - Format trackFormat = group.getFormat(i); + Format trackFormat = groupInfo.getTrackFormat(i); } } ~~~ diff --git a/library/common/src/main/java/com/google/android/exoplayer2/TracksInfo.java b/library/common/src/main/java/com/google/android/exoplayer2/TracksInfo.java index 50bf40032f..462fc47482 100644 --- a/library/common/src/main/java/com/google/android/exoplayer2/TracksInfo.java +++ b/library/common/src/main/java/com/google/android/exoplayer2/TracksInfo.java @@ -38,12 +38,17 @@ import java.util.List; /** Information about groups of tracks. */ public final class TracksInfo implements Bundleable { + /** * Information about a single group of tracks, including the underlying {@link TrackGroup}, the * {@link C.TrackType type} of tracks it contains, and the level to which each track is supported * by the player. */ public static final class TrackGroupInfo implements Bundleable { + + /** The number of tracks in the group. */ + public final int length; + private final TrackGroup trackGroup; private final @C.FormatSupport int[] trackSupport; private final @C.TrackType int trackType; @@ -62,7 +67,7 @@ public final class TracksInfo implements Bundleable { @C.FormatSupport int[] trackSupport, @C.TrackType int trackType, boolean[] tracksSelected) { - int length = trackGroup.length; + length = trackGroup.length; checkArgument(length == trackSupport.length && length == tracksSelected.length); this.trackGroup = trackGroup; this.trackSupport = trackSupport.clone(); @@ -70,11 +75,21 @@ public final class TracksInfo implements Bundleable { this.trackSelected = tracksSelected.clone(); } - /** Returns the {@link TrackGroup} described by this {@code TrackGroupInfo}. */ + /** Returns the underlying {@link TrackGroup}. */ public TrackGroup getTrackGroup() { return trackGroup; } + /** + * Returns the {@link Format} for a specified track. + * + * @param trackIndex The index of the track in the {@link TrackGroup}. + * @return The {@link Format} of the track. + */ + public Format getTrackFormat(int trackIndex) { + return trackGroup.getFormat(trackIndex); + } + /** * Returns the level of support for a specified track. * diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/MediaMetricsListener.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/MediaMetricsListener.java index 2c4ad1a8d7..8ad47e5e43 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/MediaMetricsListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/MediaMetricsListener.java @@ -62,7 +62,6 @@ import com.google.android.exoplayer2.mediacodec.MediaCodecRenderer; import com.google.android.exoplayer2.source.LoadEventInfo; import com.google.android.exoplayer2.source.MediaLoadData; import com.google.android.exoplayer2.source.MediaSource; -import com.google.android.exoplayer2.source.TrackGroup; import com.google.android.exoplayer2.upstream.FileDataSource; import com.google.android.exoplayer2.upstream.HttpDataSource; import com.google.android.exoplayer2.upstream.UdpDataSource; @@ -823,10 +822,9 @@ public final class MediaMetricsListener @Nullable private static DrmInitData getDrmInitData(ImmutableList trackGroupInfos) { for (TrackGroupInfo trackGroupInfo : trackGroupInfos) { - TrackGroup trackGroup = trackGroupInfo.getTrackGroup(); - for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) { + for (int trackIndex = 0; trackIndex < trackGroupInfo.length; trackIndex++) { if (trackGroupInfo.isTrackSelected(trackIndex)) { - @Nullable DrmInitData drmInitData = trackGroup.getFormat(trackIndex).drmInitData; + @Nullable DrmInitData drmInitData = trackGroupInfo.getTrackFormat(trackIndex).drmInitData; if (drmInitData != null) { return drmInitData; } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java index fe07ddcdbe..8cdd7f2669 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/util/EventLogger.java @@ -265,9 +265,8 @@ public class EventLogger implements AnalyticsListener { ImmutableList trackGroupInfos = tracksInfo.getTrackGroupInfos(); for (int groupIndex = 0; groupIndex < trackGroupInfos.size(); groupIndex++) { TracksInfo.TrackGroupInfo trackGroupInfo = trackGroupInfos.get(groupIndex); - TrackGroup trackGroup = trackGroupInfo.getTrackGroup(); logd(" group ["); - for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) { + for (int trackIndex = 0; trackIndex < trackGroupInfo.length; trackIndex++) { String status = getTrackStatusString(trackGroupInfo.isTrackSelected(trackIndex)); String formatSupport = getFormatSupportString(trackGroupInfo.getTrackSupport(trackIndex)); logd( @@ -276,7 +275,7 @@ public class EventLogger implements AnalyticsListener { + " Track:" + trackIndex + ", " - + Format.toLogString(trackGroup.getFormat(trackIndex)) + + Format.toLogString(trackGroupInfo.getTrackFormat(trackIndex)) + ", supported=" + formatSupport); } diff --git a/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java b/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java index 492ca63c0d..77267ea394 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/ExoPlayerTest.java @@ -7974,7 +7974,7 @@ public final class ExoPlayerTest { assertThat(timelineAfterError.get().getWindowCount()).isEqualTo(1); assertThat(mediaItemIndexAfterError.get()).isEqualTo(0); assertThat(trackInfosAfterError.get().getTrackGroupInfos()).hasSize(1); - assertThat(trackInfosAfterError.get().getTrackGroupInfos().get(0).getTrackGroup().getFormat(0)) + assertThat(trackInfosAfterError.get().getTrackGroupInfos().get(0).getTrackFormat(0)) .isEqualTo(ExoPlayerTestRunner.AUDIO_FORMAT); assertThat(trackSelectionsAfterError.get().get(0)).isNull(); // Video renderer. assertThat(trackSelectionsAfterError.get().get(1)).isNotNull(); // Audio renderer. diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java index c498f33ad0..82715eddf7 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java @@ -1130,12 +1130,12 @@ public class StyledPlayerControlView extends FrameLayout { if (trackGroupInfo.getTrackType() != trackType) { continue; } - TrackGroup trackGroup = trackGroupInfo.getTrackGroup(); - for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) { + for (int trackIndex = 0; trackIndex < trackGroupInfo.length; trackIndex++) { if (!trackGroupInfo.isTrackSupported(trackIndex)) { continue; } - String trackName = trackNameProvider.getTrackName(trackGroup.getFormat(trackIndex)); + String trackName = + trackNameProvider.getTrackName(trackGroupInfo.getTrackFormat(trackIndex)); tracks.add(new TrackInformation(tracksInfo, trackGroupIndex, trackIndex, trackName)); } }