From 79cdd036828223bf2da29f8091252add27799aed Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 1 May 2015 20:34:57 +0100 Subject: [PATCH] Filter unsupported video formats for HLS. --- .../exoplayer/demo/PlayerActivity.java | 2 +- .../demo/player/HlsRendererBuilder.java | 24 ++++++++++++++++--- .../chunk/VideoFormatSelectorUtil.java | 4 ++-- .../android/exoplayer/hls/HlsChunkSource.java | 5 ++-- 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java b/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java index 4b21b37bdc..36925efa24 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/PlayerActivity.java @@ -229,7 +229,7 @@ public class PlayerActivity extends Activity implements SurfaceHolder.Callback, return new DashRendererBuilder(this, userAgent, contentUri.toString(), new WidevineTestMediaDrmCallback(contentId), debugTextView, audioCapabilities); case DemoUtil.TYPE_HLS: - return new HlsRendererBuilder(userAgent, contentUri.toString(), debugTextView); + return new HlsRendererBuilder(this, userAgent, contentUri.toString(), debugTextView); case DemoUtil.TYPE_MP4: return new ExtractorRendererBuilder(userAgent, contentUri, debugTextView, new Mp4Extractor()); diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/player/HlsRendererBuilder.java b/demo/src/main/java/com/google/android/exoplayer/demo/player/HlsRendererBuilder.java index a538d4f606..de1b087be8 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/player/HlsRendererBuilder.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/player/HlsRendererBuilder.java @@ -16,11 +16,14 @@ package com.google.android.exoplayer.demo.player; import com.google.android.exoplayer.MediaCodecAudioTrackRenderer; +import com.google.android.exoplayer.MediaCodecUtil.DecoderQueryException; import com.google.android.exoplayer.MediaCodecVideoTrackRenderer; import com.google.android.exoplayer.TrackRenderer; +import com.google.android.exoplayer.chunk.VideoFormatSelectorUtil; import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilder; import com.google.android.exoplayer.demo.player.DemoPlayer.RendererBuilderCallback; import com.google.android.exoplayer.hls.HlsChunkSource; +import com.google.android.exoplayer.hls.HlsMasterPlaylist; import com.google.android.exoplayer.hls.HlsPlaylist; import com.google.android.exoplayer.hls.HlsPlaylistParser; import com.google.android.exoplayer.hls.HlsSampleSource; @@ -33,6 +36,7 @@ import com.google.android.exoplayer.upstream.DefaultUriDataSource; import com.google.android.exoplayer.util.ManifestFetcher; import com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback; +import android.content.Context; import android.media.MediaCodec; import android.os.Handler; import android.widget.TextView; @@ -48,6 +52,7 @@ public class HlsRendererBuilder implements RendererBuilder, ManifestCallback= 0; i--) { Format format = formatWrappers.get(i).getFormat(); - int videoPixels = format.width * format.height; - if (format.width != -1 && format.height != -1 && videoPixels > maxVideoPixelsToRetain) { + if (format.width != -1 && format.height != -1 + && format.width * format.height > maxVideoPixelsToRetain) { selectedIndexList.remove(i); } } diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 2ff5920890..408ea7816c 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -150,8 +150,9 @@ public class HlsChunkSource { * @param playlistUrl The playlist URL. * @param playlist The hls playlist. * @param bandwidthMeter provides an estimate of the currently available bandwidth. - * @param variantIndices A subset of variant indices to consider, or null to consider all of the - * variants in the master playlist. + * @param variantIndices If {@code playlist} is a {@link HlsMasterPlaylist}, the subset of variant + * indices to consider, or null to consider all of the variants. For other playlist types + * this parameter is ignored. * @param adaptiveMode The mode for switching from one variant to another. One of * {@link #ADAPTIVE_MODE_NONE}, {@link #ADAPTIVE_MODE_ABRUPT} and * {@link #ADAPTIVE_MODE_SPLICE}.