Correctly handle audio-only SmoothStreaming streams.

This commit is contained in:
Oliver Woodman 2014-12-12 13:59:45 +00:00
parent f15e3973e0
commit 3e33fddbc1

View File

@ -149,19 +149,28 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder,
} }
} }
} }
int[] videoTrackIndices = Util.toArray(videoTrackIndexList);
// Build the video renderer. // Build the video renderer.
DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter); final MediaCodecVideoTrackRenderer videoRenderer;
ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher, final TrackRenderer debugRenderer;
videoStreamElementIndex, videoTrackIndices, videoDataSource, if (videoTrackIndexList.isEmpty()) {
new AdaptiveEvaluator(bandwidthMeter), LIVE_EDGE_LATENCY_MS); videoRenderer = null;
ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl, debugRenderer = null;
VIDEO_BUFFER_SEGMENTS * BUFFER_SEGMENT_SIZE, true, mainHandler, player, } else {
DemoPlayer.TYPE_VIDEO); int[] videoTrackIndices = Util.toArray(videoTrackIndexList);
MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer(videoSampleSource, DataSource videoDataSource = new UriDataSource(userAgent, bandwidthMeter);
drmSessionManager, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 5000, null, ChunkSource videoChunkSource = new SmoothStreamingChunkSource(manifestFetcher,
mainHandler, player, 50); 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. // Build the audio renderer.
final String[] audioTrackNames; final String[] audioTrackNames;
@ -224,11 +233,6 @@ public class SmoothStreamingRendererBuilder implements RendererBuilder,
mainHandler.getLooper()); mainHandler.getLooper());
} }
// Build the debug renderer.
TrackRenderer debugRenderer = debugTextView != null
? new DebugTrackRenderer(debugTextView, videoRenderer, videoSampleSource)
: null;
// Invoke the callback. // Invoke the callback.
String[][] trackNames = new String[DemoPlayer.RENDERER_COUNT][]; String[][] trackNames = new String[DemoPlayer.RENDERER_COUNT][];
trackNames[DemoPlayer.TYPE_AUDIO] = audioTrackNames; trackNames[DemoPlayer.TYPE_AUDIO] = audioTrackNames;