private void pushTrackSelection(int type, boolean allowRendererEnable) { if (multiTrackSources == null) { return; } int trackIndex = selectedTracks[type]; if (trackIndex == DISABLED_TRACK) { player.setRendererEnabled(type, false); } else if (multiTrackSources[type] == null) { player.setRendererEnabled(type, allowRendererEnable); } else { boolean playWhenReady = player.getPlayWhenReady(); player.setPlayWhenReady(false); player.setRendererEnabled(type, false); player.sendMessage(multiTrackSources[type], MultiTrackChunkSource.MSG_SELECT_TRACK, trackIndex); player.setRendererEnabled(type, allowRendererEnable); player.setPlayWhenReady(playWhenReady); } }
private void pushTrackSelection(int type, boolean allowRendererEnable) { if (rendererBuildingState != RENDERER_BUILDING_STATE_BUILT) { return; } int trackIndex = selectedTracks[type]; if (trackIndex == DISABLED_TRACK) { player.setRendererEnabled(type, false); } else if (multiTrackSources[type] == null) { player.setRendererEnabled(type, allowRendererEnable); } else { boolean playWhenReady = player.getPlayWhenReady(); player.setPlayWhenReady(false); player.setRendererEnabled(type, false); player.sendMessage(multiTrackSources[type], MultiTrackChunkSource.MSG_SELECT_TRACK, trackIndex); player.setRendererEnabled(type, allowRendererEnable); player.setPlayWhenReady(playWhenReady); } }
/** * Invoked with the results from a {@link RendererBuilder}. * * @param trackNames The names of the available tracks, indexed by {@link VideoPlayer} TYPE_* * constants. May be null if the track names are unknown. An individual element may be null * if the track names are unknown for the corresponding type. * @param multiTrackSources Sources capable of switching between multiple available tracks, * indexed by {@link VideoPlayer} TYPE_* constants. May be null if there are no types with * multiple tracks. An individual element may be null if it does not have multiple tracks. * @param renderers Renderers indexed by {@link VideoPlayer} TYPE_* constants. An individual * element may be null if there do not exist tracks of the corresponding type. * @param bandwidthMeter Provides an estimate of the currently available bandwidth. May be null. */ /* package */ void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers, BandwidthMeter bandwidthMeter) { // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int rendererIndex = 0; rendererIndex < RENDERER_COUNT; rendererIndex++) { if (renderers[rendererIndex] == null) { // Convert a null renderer to a dummy renderer. renderers[rendererIndex] = new DummyTrackRenderer(); } if (trackNames[rendererIndex] == null) { // Convert a null trackNames to an array of suitable length. int trackCount = multiTrackSources[rendererIndex] != null ? multiTrackSources[rendererIndex].getTrackCount() : 1; trackNames[rendererIndex] = new String[trackCount]; } } // Complete preparation. this.trackNames = trackNames; this.videoRenderer = renderers[TYPE_VIDEO]; this.codecCounters = videoRenderer instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) videoRenderer).codecCounters : renderers[TYPE_AUDIO] instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) renderers[TYPE_AUDIO]).codecCounters : null; this.multiTrackSources = multiTrackSources; this.bandwidthMeter = bandwidthMeter; pushSurface(false); pushTrackSelection(TYPE_VIDEO, true); pushTrackSelection(TYPE_AUDIO, true); pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; }
void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers) { builderCallback = null; // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int i = 0; i < RENDERER_COUNT; i++) { if (renderers[i] == null) { // Convert a null renderer to a dummy renderer. renderers[i] = new DummyTrackRenderer(); } else if (trackNames[i] == null) { // We have a renderer so we must have at least one track, but the names are unknown. // Initialize the correct number of null track names. int trackCount = multiTrackSources[i] == null ? 1 : multiTrackSources[i].getTrackCount(); trackNames[i] = new String[trackCount]; } } // Complete preparation. this.trackNames = trackNames; this.videoRenderer = renderers[TYPE_VIDEO]; this.multiTrackSources = multiTrackSources; pushSurface(false); pushTrackSelection(TYPE_VIDEO, true); pushTrackSelection(TYPE_AUDIO, true); pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; }
@Override public void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers) { if (!canceled) { DemoPlayer.this.onRenderers(trackNames, multiTrackSources, renderers); } }
void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers) { builderCallback = null; // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int i = 0; i < RENDERER_COUNT; i++) { if (renderers[i] == null) { // Convert a null renderer to a dummy renderer. renderers[i] = new DummyTrackRenderer(); } else if (trackNames[i] == null) { // We have a renderer so we must have at least one track, but the names are unknown. // Initialize the correct number of null track names. int trackCount = multiTrackSources[i] == null ? 1 : multiTrackSources[i].getTrackCount(); trackNames[i] = new String[trackCount]; } } // Complete preparation. this.videoRenderer = renderers[TYPE_VIDEO]; this.trackNames = trackNames; this.multiTrackSources = multiTrackSources; rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; pushSurfaceAndVideoTrack(false); pushTrackSelection(TYPE_AUDIO, true); pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); }
void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers, BandwidthMeter bandwidthMeter) { builderCallback = null; // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int rendererIndex = 0; rendererIndex < RENDERER_COUNT; rendererIndex++) { if (renderers[rendererIndex] == null) { // Convert a null renderer to a dummy renderer. renderers[rendererIndex] = new DummyTrackRenderer(); } if (trackNames[rendererIndex] == null) { // Convert a null trackNames to an array of suitable length. int trackCount = multiTrackSources[rendererIndex] != null ? multiTrackSources[rendererIndex].getTrackCount() : 1; trackNames[rendererIndex] = new String[trackCount]; } } // Complete preparation. this.trackNames = trackNames; this.videoRenderer = renderers[TYPE_VIDEO]; this.codecCounters = videoRenderer instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) videoRenderer).codecCounters : renderers[TYPE_AUDIO] instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) renderers[TYPE_AUDIO]).codecCounters : null; this.bandwidthMeter = bandwidthMeter; pushSurface(false); player.prepare(renderers); rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; }
@Override public void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers, BandwidthMeter bandwidthMeter) { if (!canceled) { DemoPlayer.this.onRenderers(trackNames, multiTrackSources, renderers, bandwidthMeter); } }
void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers) { builderCallback = null; // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int i = 0; i < RENDERER_COUNT; i++) { if (renderers[i] == null) { // Convert a null renderer to a dummy renderer. renderers[i] = new DummyTrackRenderer(); } else if (trackNames[i] == null) { // We have a renderer so we must have at least one track, but the names are unknown. // Initialize the correct number of null track names. int trackCount = multiTrackSources[i] == null ? 1 : multiTrackSources[i].getTrackCount(); trackNames[i] = new String[trackCount]; } } // Complete preparation. this.videoRenderer = renderers[TYPE_VIDEO]; this.trackNames = trackNames; this.multiTrackSources = multiTrackSources; rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; pushSurface(false); pushTrackSelection(TYPE_VIDEO, true); pushTrackSelection(TYPE_AUDIO, true); pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); }
/** * Invoked with the results from a {@link RendererBuilder}. * * @param trackNames The names of the available tracks, indexed by {@link DemoPlayer} TYPE_* * constants. May be null if the track names are unknown. An individual element may be null * if the track names are unknown for the corresponding type. * @param multiTrackSources Sources capable of switching between multiple available tracks, * indexed by {@link DemoPlayer} TYPE_* constants. May be null if there are no types with * multiple tracks. An individual element may be null if it does not have multiple tracks. * @param renderers Renderers indexed by {@link DemoPlayer} TYPE_* constants. An individual * element may be null if there do not exist tracks of the corresponding type. * @param bandwidthMeter Provides an estimate of the currently available bandwidth. May be null. */ /* package */ void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers, BandwidthMeter bandwidthMeter) { // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int rendererIndex = 0; rendererIndex < RENDERER_COUNT; rendererIndex++) { if (renderers[rendererIndex] == null) { // Convert a null renderer to a dummy renderer. renderers[rendererIndex] = new DummyTrackRenderer(); } if (trackNames[rendererIndex] == null) { // Convert a null trackNames to an array of suitable length. int trackCount = multiTrackSources[rendererIndex] != null ? multiTrackSources[rendererIndex].getTrackCount() : 1; trackNames[rendererIndex] = new String[trackCount]; } } // Complete preparation. this.trackNames = trackNames; this.videoRenderer = renderers[TYPE_VIDEO]; this.codecCounters = videoRenderer instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) videoRenderer).codecCounters : renderers[TYPE_AUDIO] instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) renderers[TYPE_AUDIO]).codecCounters : null; this.multiTrackSources = multiTrackSources; this.bandwidthMeter = bandwidthMeter; pushSurface(false); pushTrackSelection(TYPE_VIDEO, true); pushTrackSelection(TYPE_AUDIO, true); pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; }
void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers) { builderCallback = null; // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int i = 0; i < RENDERER_COUNT; i++) { if (renderers[i] == null) { // Convert a null renderer to a dummy renderer. renderers[i] = new DummyTrackRenderer(); } else if (trackNames[i] == null) { // We have a renderer so we must have at least one track, but the names are unknown. // Initialize the correct number of null track names. int trackCount = multiTrackSources[i] == null ? 1 : multiTrackSources[i].getTrackCount(); trackNames[i] = new String[trackCount]; } } // Complete preparation. this.videoRenderer = renderers[TYPE_VIDEO]; this.trackNames = trackNames; this.multiTrackSources = multiTrackSources; rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; maybeReportPlayerState(); pushSurfaceAndVideoTrack(false); pushTrackSelection(TYPE_AUDIO, true); // pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); }
@Override public void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers) { if (!canceled) { mTrackRenderers = renderers; ExoPlayerWrapper.this.onRenderers(trackNames, multiTrackSources, renderers); } }
/** * Invoked with the results from a {@link RendererBuilder}. * * @param trackNames The names of the available tracks, indexed by {@link MediaPlayer} TYPE_* * constants. May be null if the track names are unknown. An individual element may be * null * if the track names are unknown for the corresponding type. * @param multiTrackSources Sources capable of switching between multiple available tracks, * indexed by {@link MediaPlayer} TYPE_* constants. May be null if there are no types * with * multiple tracks. An individual element may be null if it does not have multiple * tracks. * @param renderers Renderers indexed by {@link MediaPlayer} TYPE_* constants. An individual * element may be null if there do not exist tracks of the corresponding type. * @param bandwidthMeter Provides an estimate of the currently available bandwidth. May be null. */ /* package */ void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers, BandwidthMeter bandwidthMeter) { // Normalize the results. if (trackNames == null) { trackNames = new String[RENDERER_COUNT][]; } if (multiTrackSources == null) { multiTrackSources = new MultiTrackChunkSource[RENDERER_COUNT]; } for (int rendererIndex = 0; rendererIndex < RENDERER_COUNT; rendererIndex++) { if (renderers[rendererIndex] == null) { // Convert a null renderer to a dummy renderer. renderers[rendererIndex] = new DummyTrackRenderer(); } if (trackNames[rendererIndex] == null) { // Convert a null trackNames to an array of suitable length. int trackCount = multiTrackSources[rendererIndex] != null ? multiTrackSources[rendererIndex].getTrackCount() : 1; trackNames[rendererIndex] = new String[trackCount]; } } // Complete preparation. this.trackNames = trackNames; this.videoRenderer = renderers[TYPE_VIDEO]; this.codecCounters = videoRenderer instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) videoRenderer).codecCounters : renderers[TYPE_AUDIO] instanceof MediaCodecTrackRenderer ? ((MediaCodecTrackRenderer) renderers[TYPE_AUDIO]).codecCounters : null; this.multiTrackSources = multiTrackSources; this.bandwidthMeter = bandwidthMeter; pushSurface(false); pushTrackSelection(TYPE_VIDEO, true); pushTrackSelection(TYPE_AUDIO, true); pushTrackSelection(TYPE_TEXT, true); player.prepare(renderers); rendererBuildingState = RENDERER_BUILDING_STATE_BUILT; }
/** * Invoked with the results from a {@link RendererBuilder}. * * @param trackNames The names of the available tracks, indexed by {@link DemoPlayer} TYPE_* * constants. May be null if the track names are unknown. An individual element may be null * if the track names are unknown for the corresponding type. * @param multiTrackSources Sources capable of switching between multiple available tracks, * indexed by {@link DemoPlayer} TYPE_* constants. May be null if there are no types with * multiple tracks. An individual element may be null if it does not have multiple tracks. * @param renderers Renderers indexed by {@link DemoPlayer} TYPE_* constants. An individual * element may be null if there do not exist tracks of the corresponding type. */ void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers);
/** * Invoked with the results from a {@link RendererBuilder}. * * @param trackNames The names of the available tracks, indexed by {@link DemoPlayer} TYPE_* * constants. May be null if the track names are unknown. An individual element may be null * if the track names are unknown for the corresponding type. * @param multiTrackSources Sources capable of switching between multiple available tracks, * indexed by {@link DemoPlayer} TYPE_* constants. May be null if there are no types with * multiple tracks. An individual element may be null if it does not have multiple tracks. * @param renderers Renderers indexed by {@link DemoPlayer} TYPE_* constants. An individual * element may be null if there do not exist tracks of the corresponding type. * @param bandwidthMeter Provides an estimate of the currently available bandwidth. May be null. */ void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers, BandwidthMeter bandwidthMeter);
/** * Invoked with the results from a {@link RendererBuilder}. * * @param trackNames The names of the available tracks, indexed by {@link ExoPlayerWrapper} TYPE_* * constants. May be null if the track names are unknown. An individual element may be null * if the track names are unknown for the corresponding type. * @param multiTrackSources Sources capable of switching between multiple available tracks, * indexed by {@link ExoPlayerWrapper} TYPE_* constants. May be null if there are no types with * multiple tracks. An individual element may be null if it does not have multiple tracks. * @param renderers Renderers indexed by {@link ExoPlayerWrapper} TYPE_* constants. An individual * element may be null if there do not exist tracks of the corresponding type. */ void onRenderers(String[][] trackNames, MultiTrackChunkSource[] multiTrackSources, TrackRenderer[] renderers);