From 979fd083b42e74af05aa8bbebaa0c5434c83cd43 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Mon, 28 Sep 2015 12:34:19 +0100 Subject: [PATCH] Don't invoke adaptiveTrack with 0 or 1 representations. 0 will crash. 1 is pointless. --- .../android/exoplayer/dash/DefaultDashTrackSelector.java | 7 +++++-- .../DefaultSmoothStreamingTrackSelector.java | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/dash/DefaultDashTrackSelector.java b/library/src/main/java/com/google/android/exoplayer/dash/DefaultDashTrackSelector.java index a513483312..eb6ba09206 100644 --- a/library/src/main/java/com/google/android/exoplayer/dash/DefaultDashTrackSelector.java +++ b/library/src/main/java/com/google/android/exoplayer/dash/DefaultDashTrackSelector.java @@ -84,8 +84,11 @@ public final class DefaultDashTrackSelector implements DashTrackSelector { } else { representations = Util.firstIntegersArray(adaptationSet.representations.size()); } - output.adaptiveTrack(manifest, periodIndex, i, representations); - for (int j = 0; j < representations.length; j++) { + int representationCount = representations.length; + if (representationCount > 1) { + output.adaptiveTrack(manifest, periodIndex, i, representations); + } + for (int j = 0; j < representationCount; j++) { output.fixedTrack(manifest, periodIndex, i, representations[j]); } } else { diff --git a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/DefaultSmoothStreamingTrackSelector.java b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/DefaultSmoothStreamingTrackSelector.java index 33691bbcfc..d87e52b5ed 100644 --- a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/DefaultSmoothStreamingTrackSelector.java +++ b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/DefaultSmoothStreamingTrackSelector.java @@ -50,8 +50,11 @@ public final class DefaultSmoothStreamingTrackSelector implements SmoothStreamin if (streamElementType == StreamElement.TYPE_VIDEO) { int[] trackIndices = VideoFormatSelectorUtil.selectVideoFormatsForDefaultDisplay( context, Arrays.asList(manifest.streamElements[i].tracks), null, false); - output.adaptiveTrack(manifest, i, trackIndices); - for (int j = 0; j < trackIndices.length; j++) { + int trackCount = trackIndices.length; + if (trackCount > 1) { + output.adaptiveTrack(manifest, i, trackIndices); + } + for (int j = 0; j < trackCount; j++) { output.fixedTrack(manifest, i, trackIndices[j]); } } else {