/** * Creates event logger. * * @param trackSelector The mapping track selector used by the player. May be null if detailed * logging of track mapping is not required. * @param tag The tag used for logging. */ public EventLogger(@Nullable MappingTrackSelector trackSelector, String tag) { this.trackSelector = trackSelector; this.tag = tag; window = new Timeline.Window(); period = new Timeline.Period(); startTimeMs = SystemClock.elapsedRealtime(); }
/** * Creates an analytics collector for the specified player. * * @param player The {@link Player} for which data will be collected. Can be null, if the player * is set by calling {@link AnalyticsCollector#setPlayer(Player)} before using the analytics * collector. * @param clock A {@link Clock} used to generate timestamps. */ protected AnalyticsCollector(@Nullable Player player, Clock clock) { if (player != null) { this.player = player; } this.clock = Assertions.checkNotNull(clock); listeners = new CopyOnWriteArraySet<>(); mediaPeriodQueueTracker = new MediaPeriodQueueTracker(); window = new Window(); }
this.isAtomic = isAtomic; this.useLazyPreparation = useLazyPreparation; window = new Timeline.Window(); period = new Timeline.Period(); addMediaSources(Arrays.asList(mediaSources));
PositionGrabbingMessageTarget targetStartMiddlePeriod = new PositionGrabbingMessageTarget(); PositionGrabbingMessageTarget targetEndLastPeriod = new PositionGrabbingMessageTarget(); long duration1Ms = timeline.getWindow(0, new Window()).getDurationMs(); long duration2Ms = timeline.getWindow(1, new Window()).getDurationMs(); ActionSchedule actionSchedule = new ActionSchedule.Builder("testSendMessages")
throw new IllegalClippingException(IllegalClippingException.REASON_INVALID_PERIOD_COUNT); Window window = timeline.getWindow(0, new Window()); startUs = Math.max(0, startUs); long resolvedEndUs = endUs == C.TIME_END_OF_SOURCE ? window.durationUs : Math.max(0, endUs);
/** * Checks if the current playback is a livestream AND is playing at or beyond the live edge */ @SuppressWarnings("BooleanMethodIsAlwaysInverted") public boolean isLiveEdge() { if (simpleExoPlayer == null || !isLive()) return false; final Timeline currentTimeline = simpleExoPlayer.getCurrentTimeline(); final int currentWindowIndex = simpleExoPlayer.getCurrentWindowIndex(); if (currentTimeline.isEmpty() || currentWindowIndex < 0 || currentWindowIndex >= currentTimeline.getWindowCount()) { return false; } Timeline.Window timelineWindow = new Timeline.Window(); currentTimeline.getWindow(currentWindowIndex, timelineWindow); return timelineWindow.getDefaultPositionMs() <= simpleExoPlayer.getCurrentPosition(); }
private void assertCompletedAllMediaPeriodLoads(Timeline timeline) { Timeline.Period period = new Timeline.Period(); Timeline.Window window = new Timeline.Window(); ArrayList<MediaPeriodId> expectedMediaPeriodIds = new ArrayList<>(); for (int windowIndex = 0; windowIndex < timeline.getWindowCount(); windowIndex++) { timeline.getWindow(windowIndex, window); for (int periodIndex = window.firstPeriodIndex; periodIndex <= window.lastPeriodIndex; periodIndex++) { timeline.getPeriod(periodIndex, period); Object periodUid = timeline.getUidOfPeriod(periodIndex); expectedMediaPeriodIds.add(new MediaPeriodId(periodUid, windowIndex)); for (int adGroupIndex = 0; adGroupIndex < period.getAdGroupCount(); adGroupIndex++) { for (int adIndex = 0; adIndex < period.getAdCountInAdGroup(adGroupIndex); adIndex++) { expectedMediaPeriodIds.add( new MediaPeriodId(periodUid, adGroupIndex, adIndex, windowIndex)); } } } } testRunner.assertCompletedMediaPeriodLoads( expectedMediaPeriodIds.toArray(new MediaPeriodId[0])); }
/** * Creates an instance for a given {@link MediaSessionCompat} and maximum queue size. * <p> * If the number of windows in the {@link Player}'s {@link Timeline} exceeds {@code maxQueueSize}, * the media session queue will correspond to {@code maxQueueSize} windows centered on the one * currently being played. * * @param mediaSession The {@link MediaSessionCompat}. * @param maxQueueSize The maximum queue size. */ public TimelineQueueNavigator(MediaSessionCompat mediaSession, int maxQueueSize) { this.mediaSession = mediaSession; this.maxQueueSize = maxQueueSize; activeQueueItemId = MediaSessionCompat.QueueItem.UNKNOWN_ID; window = new Timeline.Window(); }
/** * Asserts that window tags are set correctly. * * @param expectedWindowTags A list of expected window tags. If a tag is unknown or not important * {@code null} can be passed to skip this window. */ public static void assertWindowTags(Timeline timeline, Object... expectedWindowTags) { Window window = new Window(); assertThat(timeline.getWindowCount()).isEqualTo(expectedWindowTags.length); for (int i = 0; i < timeline.getWindowCount(); i++) { timeline.getWindow(i, window, true); if (expectedWindowTags[i] != null) { assertThat(window.tag).isEqualTo(expectedWindowTags[i]); } } }
/** * Asserts that window tags are set correctly. * * @param expectedWindowTags A list of expected window tags. If a tag is unknown or not important * {@code null} can be passed to skip this window. */ public static void assertWindowTags(Timeline timeline, Object... expectedWindowTags) { Window window = new Window(); assertThat(timeline.getWindowCount()).isEqualTo(expectedWindowTags.length); for (int i = 0; i < timeline.getWindowCount(); i++) { timeline.getWindow(i, window, true); if (expectedWindowTags[i] != null) { assertThat(window.tag).isEqualTo(expectedWindowTags[i]); } } }
public EventLogger(MappingTrackSelector trackSelector) { this.trackSelector = trackSelector; window = new Timeline.Window(); period = new Timeline.Period(); startTimeMs = SystemClock.elapsedRealtime(); }
public BasePlayer() { window = new Timeline.Window(); }
/** Creates the broadcast receiver. */ public NotificationBroadcastReceiver() { window = new Timeline.Window(); }
/** Creates a new media period queue. */ public MediaPeriodQueue() { period = new Timeline.Period(); window = new Timeline.Window(); timeline = Timeline.EMPTY; }
@Override @Nullable public Object getTag() { boolean hasTimeline = timeline != null && !timeline.isEmpty(); return hasTimeline ? timeline.getWindow(0, new Timeline.Window()).tag : null; }
/** Asserts that window properties {@link Window}.isDynamic are set correctly. */ public static void assertWindowIsDynamic(Timeline timeline, boolean... windowIsDynamic) { Window window = new Window(); for (int i = 0; i < timeline.getWindowCount(); i++) { timeline.getWindow(i, window, true); assertThat(window.isDynamic).isEqualTo(windowIsDynamic[i]); } }
/** Asserts that window properties {@link Window}.isDynamic are set correctly. */ public static void assertWindowIsDynamic(Timeline timeline, boolean... windowIsDynamic) { Window window = new Window(); for (int i = 0; i < timeline.getWindowCount(); i++) { timeline.getWindow(i, window, true); assertThat(window.isDynamic).isEqualTo(windowIsDynamic[i]); } }
@Before public void setUp() throws Exception { window = new Window(); period = new Period(); }
@Before public void setUp() throws Exception { window = new Timeline.Window(); period = new Timeline.Period(); }
@Override @Nullable public Object getTag() { boolean hasTimeline = timeline != null && !timeline.isEmpty(); return hasTimeline ? timeline.getWindow(0, new Timeline.Window()).tag : null; }