diff --git a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java index 03e295460b..57af0f2f85 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelector.java @@ -2125,8 +2125,9 @@ public class DefaultTrackSelector extends MappingTrackSelector { || (minVideoHeight <= format.height && format.height <= maxVideoHeight)) && (format.frameRate == Format.NO_VALUE || (minVideoFrameRate <= format.frameRate && format.frameRate <= maxVideoFrameRate)) - && (format.bitrate == Format.NO_VALUE - || (minVideoBitrate <= format.bitrate && format.bitrate <= maxVideoBitrate)); + && format.bitrate != Format.NO_VALUE + && minVideoBitrate <= format.bitrate + && format.bitrate <= maxVideoBitrate; } @Nullable diff --git a/library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java b/library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java index 9aebfb7718..29f3e69001 100644 --- a/library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java +++ b/library/core/src/test/java/com/google/android/exoplayer2/trackselection/DefaultTrackSelectorTest.java @@ -88,6 +88,7 @@ public final class DefaultTrackSelectorTest { .setSampleMimeType(MimeTypes.VIDEO_H264) .setWidth(1024) .setHeight(768) + .setAverageBitrate(450000) .build(); private static final Format AUDIO_FORMAT = new Format.Builder() @@ -1496,6 +1497,21 @@ public final class DefaultTrackSelectorTest { assertAdaptiveSelection(result.selections[0], trackGroups.get(0), 1, 2); } + @Test + public void selectTracks_multipleVideoTracksWithoutBitrate_onlySelectsSingleTrack() + throws Exception { + TrackGroupArray trackGroups = + singleTrackGroup( + VIDEO_FORMAT.buildUpon().setId("0").setAverageBitrate(Format.NO_VALUE).build(), + VIDEO_FORMAT.buildUpon().setId("1").setAverageBitrate(Format.NO_VALUE).build()); + TrackSelectorResult result = + trackSelector.selectTracks( + new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroups, periodId, TIMELINE); + + assertThat(result.length).isEqualTo(1); + assertFixedSelection(result.selections[0], trackGroups.get(0), /* expectedTrack= */ 0); + } + @Test public void selectTracks_multipleVideoAndAudioTracks() throws Exception { Format videoFormat1 = VIDEO_FORMAT.buildUpon().setAverageBitrate(1000).build();