From 3e33fddbc195b4329d8bfd06b23d4c1cf462a04d Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Fri, 12 Dec 2014 13:59:45 +0000 Subject: [PATCH] Correctly handle audio-only SmoothStreaming streams. --- .../SmoothStreamingRendererBuilder.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/demo/src/main/java/com/google/android/exoplayer/demo/full/player/SmoothStreamingRendererBuilder.java b/demo/src/main/java/com/google/android/exoplayer/demo/full/player/SmoothStreamingRendererBuilder.java index fd9c220cb2..b9a857f613 100644 --- a/demo/src/main/java/com/google/android/exoplayer/demo/full/player/SmoothStreamingRendererBuilder.java +++ b/demo/src/main/java/com/google/android/exoplayer/demo/full/player/SmoothStreamingRendererBuilder.java @@ -149,19 +149,28 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder, } } } - int[] videoTrackIndices = Util.toArray(videoTrackIndexList); // Build the video renderer. - DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter); - ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher, - videoStreamElementIndex, videoTrackIndices, videoDataSource, - new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS); - ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl, - VIDEO_BUFFER_SEGMENTS * BUFFER_SEGMENT_SIZE, true, mainHandler, player, - DemoPlayer.TYPE_VIDEO); - MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(videoSampleSource, - drmSessionManager, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 5000, null, - mainHandler, player, 50); + final MediaCodecVideoTrackRenderer videoRenderer; + final TrackRenderer debugRenderer; + if (videoTrackIndexList.isEmpty()) { + videoRenderer = null; + debugRenderer = null; + } else { + int[] videoTrackIndices = Util.toArray(videoTrackIndexList); + DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter); + ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher, + videoStreamElementIndex, videoTrackIndices, videoDataSource, + new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS); + ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl, + VIDEO_BUFFER_SEGMENTS * BUFFER_SEGMENT_SIZE, true, mainHandler, player, + DemoPlayer.TYPE_VIDEO); + videoRenderer = new MediaCodecVideoTrackRenderer(videoSampleSource, drmSessionManager, true, + MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 5000, null, mainHandler, player, 50); + debugRenderer = debugTextView != null + ? new DebugTrackRenderer(debugTextView, videoRenderer, videoSampleSource) + : null; + } // Build the audio renderer. final String[] audioTrackNames; @@ -224,11 +233,6 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder, mainHandler.getLooper()); } - // Build the debug renderer. - TrackRenderer debugRenderer = debugTextView != null - ? new DebugTrackRenderer(debugTextView, videoRenderer, videoSampleSource) - : null; - // Invoke the callback. String[][] trackNames = new String[DemoPlayer.RENDERER_COUNT][]; trackNames[DemoPlayer.TYPE_AUDIO] = audioTrackNames;