public T or(T elseCase) { return isPresent() ? get() : elseCase; }
private DefaultDataSourceFactory createDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) { if (dataSourceFactory.isPresent()) { return new DefaultDataSourceFactory(context, bandwidthMeter, dataSourceFactory.get()); } else { return new DefaultDataSourceFactory(context, "user-agent", bandwidthMeter); } }
TrackGroupArray trackGroups(TrackType trackType, RendererTypeRequester rendererTypeRequester) { Optional<Integer> audioRendererIndex = rendererTrackIndexExtractor.extract(trackType, mappedTrackInfoLength(), rendererTypeRequester); return audioRendererIndex.isAbsent() ? TrackGroupArray.EMPTY : trackInfo().getTrackGroups(audioRendererIndex.get()); }
boolean clearSelectionOverrideFor(TrackType trackType, RendererTypeRequester rendererTypeRequester) { Optional<Integer> rendererIndex = rendererTrackIndexExtractor.extract(trackType, mappedTrackInfoLength(), rendererTypeRequester); if (rendererIndex.isPresent()) { trackSelector.setParameters(trackSelector .buildUponParameters() .clearSelectionOverrides(rendererIndex.get()) ); return true; } else { return false; } }
boolean supportsTrackSwitching(TrackType trackType, RendererTypeRequester rendererTypeRequester, TrackGroupArray trackGroups, int groupIndex) { Optional<Integer> audioRendererIndex = rendererTrackIndexExtractor.extract(trackType, mappedTrackInfoLength(), rendererTypeRequester); return audioRendererIndex.isPresent() && trackGroups.get(groupIndex).length > 0 && trackInfo().getAdaptiveSupport(audioRendererIndex.get(), groupIndex, false) != RendererCapabilities.ADAPTIVE_NOT_SUPPORTED; } }
boolean setSelectionOverride(TrackType trackType, RendererTypeRequester rendererTypeRequester, TrackGroupArray trackGroups, DefaultTrackSelector.SelectionOverride selectionOverride) { Optional<Integer> rendererIndex = rendererTrackIndexExtractor.extract(trackType, mappedTrackInfoLength(), rendererTypeRequester); if (rendererIndex.isPresent()) { trackSelector.setParameters(trackSelector .buildUponParameters() .setSelectionOverride(rendererIndex.get(), trackGroups, selectionOverride) ); return true; } else { return false; } }
@Test public void givenSubtitlesTrackAtPositionZero_whenExtractingTextIndex_thenReturnsIndexZero() { Optional<Integer> textIndex = extractor.extract(TrackType.TEXT, 1, rendererTypeRequesterTextTrack); int expectedTextIndex = 0; assertThat(textIndex.get()).isEqualTo(expectedTextIndex); }
@Test public void givenThreeTrackTypes_whenExtractingAudioIndexes_thenReturnsIndexOne() { Optional<Integer> audioIndex = extractor.extract(TrackType.AUDIO, 3, rendererTypeRequesterVideoAudioTextTrack); int expectedAudioIndex = 1; assertThat(audioIndex.get()).isEqualTo(expectedAudioIndex); }
@Test public void givenAudioTrackAtPositionZero_whenExtractingAudioIndex_thenReturnsIndexZero() { Optional<Integer> audioIndex = extractor.extract(TrackType.AUDIO, 1, rendererTypeRequesterAudioTrack); int expectedAudioIndex = 0; assertThat(audioIndex.get()).isEqualTo(expectedAudioIndex); }
@Test public void givenVideoTrackAtPositionZero_whenExtractingVideoIndex_thenReturnsIndexZero() { Optional<Integer> videoIndex = extractor.extract(TrackType.VIDEO, 1, rendererTypeRequesterVideoTrack); int expectedVideoIndex = 0; assertThat(videoIndex.get()).isEqualTo(expectedVideoIndex); }