Update ExoPlayer documentation + tweak method naming

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=131843222
This commit is contained in:
olly 2016-08-31 10:17:41 -07:00 committed by Oliver Woodman
parent 9adce6b007
commit 962b5940c2
22 changed files with 138 additions and 126 deletions

View file

@ -95,7 +95,7 @@ import java.util.Locale;
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
int periodCount = timeline.getPeriodCount();
int windowCount = timeline.getWindowCount();
Log.d(TAG, "sourceInfo [periodCount=" + periodCount + ", windowCount=" + windowCount);

View file

@ -330,7 +330,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi
}
MediaSource mediaSource = mediaSources.length == 1 ? mediaSources[0]
: new ConcatenatingMediaSource(mediaSources);
player.setMediaSource(mediaSource, !shouldRestorePosition);
player.prepare(mediaSource, !shouldRestorePosition);
playerNeedsSource = false;
updateButtonVisibilities();
}
@ -431,7 +431,7 @@ public class PlayerActivity extends Activity implements OnKeyListener, OnTouchLi
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}

View file

@ -80,7 +80,7 @@ public class FlacPlaybackTest extends InstrumentationTestCase {
MatroskaExtractor.FACTORY,
null,
null);
player.setMediaSource(mediaSource);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Looper.loop();
}
@ -96,7 +96,7 @@ public class FlacPlaybackTest extends InstrumentationTestCase {
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}

View file

@ -80,7 +80,7 @@ public class OpusPlaybackTest extends InstrumentationTestCase {
MatroskaExtractor.FACTORY,
null,
null);
player.setMediaSource(mediaSource);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Looper.loop();
}
@ -96,7 +96,7 @@ public class OpusPlaybackTest extends InstrumentationTestCase {
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}

View file

@ -99,7 +99,7 @@ public class VpxPlaybackTest extends InstrumentationTestCase {
player.sendMessages(new ExoPlayer.ExoPlayerMessage(videoRenderer,
LibvpxVideoRenderer.MSG_SET_OUTPUT_BUFFER_RENDERER,
new VpxVideoSurfaceView(context)));
player.setMediaSource(mediaSource);
player.prepare(mediaSource);
player.setPlayWhenReady(true);
Looper.loop();
}
@ -115,7 +115,7 @@ public class VpxPlaybackTest extends InstrumentationTestCase {
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}

View file

@ -15,83 +15,93 @@
*/
package com.google.android.exoplayer2;
import com.google.android.exoplayer2.source.MediaPeriod;
import com.google.android.exoplayer2.audio.MediaCodecAudioRenderer;
import com.google.android.exoplayer2.metadata.MetadataRenderer;
import com.google.android.exoplayer2.source.ConcatenatingMediaSource;
import com.google.android.exoplayer2.source.ExtractorMediaSource;
import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.MergingMediaSource;
import com.google.android.exoplayer2.source.SingleSampleMediaSource;
import com.google.android.exoplayer2.source.dash.DashMediaSource;
import com.google.android.exoplayer2.source.hls.HlsMediaSource;
import com.google.android.exoplayer2.source.smoothstreaming.SsMediaSource;
import com.google.android.exoplayer2.text.TextRenderer;
import com.google.android.exoplayer2.trackselection.DefaultTrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.upstream.DataSource;
import com.google.android.exoplayer2.video.MediaCodecVideoRenderer;
/**
* An extensible media player exposing traditional high-level media player functionality, such as
* the ability to buffer media, play, pause and seek.
* the ability to buffer media, play, pause and seek. Instances can be obtained from
* {@link ExoPlayerFactory}.
*
* <p>Topics covered here are:
* <ol>
* <li><a href="#Assumptions">Assumptions and player composition</a>
* <li><a href="#Threading">Threading model</a>
* <li><a href="#State">Player state</a>
* </ol>
* <h3>Player composition</h3>
* <p>ExoPlayer is designed to make few assumptions about (and hence impose few restrictions on) the
* type of the media being played, how and where it is stored, and how it is rendered. Rather than
* implementing the loading and rendering of media directly, ExoPlayer implementations delegate this
* work to components that are injected when a player is created or when it's prepared for playback.
* Components common to all ExoPlayer implementations are:
* <ul>
* <li>A <b>{@link MediaSource}</b> that defines the media to be played, loads the media, and from
* which the loaded media can be read. A MediaSource is injected via {@link #prepare} to prepare
* the player for playback. The library provides default implementations for regular media files
* ({@link ExtractorMediaSource}), DASH ({@link DashMediaSource}), SmoothStreaming
* ({@link SsMediaSource}) and HLS ({@link HlsMediaSource}), implementations for merging
* ({@link MergingMediaSource}) and concatenating ({@link ConcatenatingMediaSource}) other
* MediaSources, and an implementation for loading single samples
* ({@link SingleSampleMediaSource}) most often used for side-loaded subtitle and closed
* caption files.</li>
* <li><b>{@link Renderer}</b>s that render individual components of the media. The library
* provides default implementations for common media types ({@link MediaCodecVideoRenderer},
* {@link MediaCodecAudioRenderer}, {@link TextRenderer} and {@link MetadataRenderer}). A Renderer
* consumes media of its corresponding type from the MediaSource being played. Renderers are
* injected when the player is created.</li>
* <li>A <b>{@link TrackSelector}</b> that selects tracks provided by the MediaSource to be
* consumed by each of the available Renderers. The library provides a default implementation
* ({@link DefaultTrackSelector}) suitable for most use cases. A TrackSelector is injected when
* the player is created.</li>
* <li>A <b>{@link LoadControl}</b> that controls when the MediaSource buffers more media, and how
* much media is buffered. The library provides a default implementation
* ({@link DefaultLoadControl}) suitable for most use cases. A LoadControl is injected when the
* player is created.</li>
* </ul>
* <p>An ExoPlayer can be built using the default components provided by the library, but may also
* be built using custom implementations if non-standard behaviors are required. For example a
* custom LoadControl could be injected to change the player's buffering strategy, or a custom
* Renderer could be injected to use a video codec not supported natively by Android.
*
* <a name="Assumptions"></a>
* <h3>Assumptions and player construction</h3>
* <p>The concept of injecting components that implement pieces of player functionality is present
* throughout the library. The default component implementations listed above delegate work to
* further injected components. This allows many sub-components to be individually replaced with
* custom implementations. For example the default MediaSource implementations require one or more
* {@link DataSource} factories to be injected via their constructors. By providing a custom factory
* it's possible to load data from a non-standard source or through a different network stack.
*
* <p>The implementation is designed to make no assumptions about (and hence impose no restrictions
* on) the type of the media being played, how and where it is stored, or how it is rendered.
* Rather than implementing the loading and rendering of media directly, {@link ExoPlayer} instead
* delegates this work to one or more {@link Renderer}s, which are injected when the player
* is created. Hence {@link ExoPlayer} is capable of loading and playing any media for which a
* {@link Renderer} implementation can be provided.
*
* <p>{@link com.google.android.exoplayer2.audio.MediaCodecAudioRenderer} and
* {@link com.google.android.exoplayer2.video.MediaCodecVideoRenderer} can be used for the common
* cases of rendering audio and video. These components in turn require an <i>upstream</i>
* {@link MediaPeriod} to be injected through their constructors, where upstream is defined to
* denote a component that is closer to the source of the media. This pattern of upstream dependency
* injection is actively encouraged, since it means that the functionality of the player is built up
* through the composition of components that can easily be exchanged for alternate implementations.
* For example a {@link MediaPeriod} implementation may require a further upstream data loading
* component to be injected through its constructor, with different implementations enabling the
* loading of data from various sources.
*
* <a name="Threading"></a>
* <h3>Threading model</h3>
*
* <p>The figure below shows the {@link ExoPlayer} threading model.</p>
* <p align="center"><img src="doc-files/exoplayer-threading-model.png"
* alt="MediaPlayer state diagram"
* border="0"></p>
* <p>The figure below shows ExoPlayer's threading model.</p>
* <p align="center">
* <img src="doc-files/exoplayer-threading-model.svg" alt="ExoPlayer's threading model">
* </p>
*
* <ul>
* <li>It is recommended that instances are created and accessed from a single application thread.
* An application's main thread is ideal. Accessing an instance from multiple threads is
* <li>It is recommended that ExoPlayer instances are created and accessed from a single application
* thread. The application's main thread is ideal. Accessing an instance from multiple threads is
* discouraged, however if an application does wish to do this then it may do so provided that it
* ensures accesses are synchronized.
* </li>
* <li>Registered {@link EventListener}s are called on the thread that created the {@link ExoPlayer}
* instance.</li>
* <li>An internal playback thread is responsible for managing playback and invoking the
* {@link Renderer}s in order to load and play the media.</li>
* <li>{@link Renderer} implementations (or any upstream components that they depend on) may
* use additional background threads (e.g. to load data). These are implementation specific.</li>
* ensures accesses are synchronized.</li>
* <li>Registered listeners are called on the thread that created the ExoPlayer instance.</li>
* <li>An internal playback thread is responsible for playback. Injected player components such as
* Renderers, MediaSources, TrackSelectors and LoadControls are called by the player on this
* thread.</li>
* <li>When the application performs an operation on the player, for example a seek, a message is
* delivered to the internal playback thread via a message queue. The internal playback thread
* consumes messages from the queue and performs the corresponding operations. Similarly, when a
* playback event occurs on the internal playback thread, a message is delivered to the application
* thread via a second message queue. The application thread consumes messages from the queue,
* updating the application visible state and calling corresponding listener methods.</li>
* <li>Injected player components may use additional background threads. For example a MediaSource
* may use a background thread to load data. These are implementation specific.</li>
* </ul>
*
* <a name="State"></a>
* <h3>Player state</h3>
*
* <p>The components of an {@link ExoPlayer}'s state can be divided into two distinct groups. The
* state accessed by calling {@link #getPlayWhenReady()} is only ever changed by invoking
* {@link #setPlayWhenReady(boolean)}, and is never changed as a result of operations that have been
* performed asynchronously by the playback thread. In contrast, the playback state accessed by
* calling {@link #getPlaybackState()} is only ever changed as a result of operations completing on
* the playback thread, as illustrated below.</p>
*
* <p align="center"><img src="doc-files/exoplayer-state.png"
* alt="ExoPlayer state"
* border="0"></p>
*
* <p>The possible playback state transitions are shown below. Transitions can be triggered either
* by changes in the state of the {@link Renderer}s being used, or as a result of
* {@link #setMediaSource(MediaSource)}, {@link #stop()} or {@link #release()} being called.</p>
* <p align="center"><img src="doc-files/exoplayer-playbackstate.png"
* alt="ExoPlayer playback state transitions"
* border="0"></p>
*/
public interface ExoPlayer {
@ -117,23 +127,13 @@ public interface ExoPlayer {
*/
void onPlayerStateChanged(boolean playWhenReady, int playbackState);
// TODO: Should be windowIndex and position in the window.
/**
* Called when the player's position changes due to a discontinuity (i.e. due to seeking,
* playback transitioning to the next window, or a source induced discontinuity).
* Called when timeline and/or manifest has been refreshed.
*
* @param periodIndex The index of the period being played.
* @param positionMs The playback position in that period, in milliseconds.
* @param timeline The latest timeline.
* @param manifest The latest manifest.
*/
void onPositionDiscontinuity(int periodIndex, long positionMs);
/**
* Called when manifest and/or timeline has been refreshed.
*
* @param timeline The source's timeline.
* @param manifest The loaded manifest.
*/
void onSourceInfoRefreshed(Timeline timeline, Object manifest);
void onTimelineChanged(Timeline timeline, Object manifest);
/**
* Called when an error occurs. The playback state will transition to {@link #STATE_IDLE}
@ -144,6 +144,16 @@ public interface ExoPlayer {
*/
void onPlayerError(ExoPlaybackException error);
// TODO: Should be windowIndex and position in the window.
/**
* Called when the player's position changes due to a discontinuity (i.e. due to seeking,
* playback transitioning to the next window, or a source induced discontinuity).
*
* @param periodIndex The index of the period being played.
* @param positionMs The playback position in that period, in milliseconds.
*/
void onPositionDiscontinuity(int periodIndex, long positionMs);
}
/**
@ -239,19 +249,21 @@ public interface ExoPlayer {
int getPlaybackState();
/**
* Sets the {@link MediaSource} to play. Equivalent to {@code setMediaSource(mediaSource, true)}.
* Prepares the player to play the provided {@link MediaSource}. Equivalent to
* {@code prepare(mediaSource, true)}.
*/
void setMediaSource(MediaSource mediaSource);
void prepare(MediaSource mediaSource);
/**
* Sets the {@link MediaSource} to play.
* Prepares the player to play the provided {@link MediaSource}, optionally resetting the playback
* position the default position in the first {@link Timeline.Window}.
*
* @param mediaSource The {@link MediaSource} to play.
* @param resetPosition Whether the playback position should be reset to the source's default
* position. If false, playback will start from the position defined by
* {@link #getCurrentWindowIndex()} and {@link #getCurrentPosition()}.
* @param resetPosition Whether the playback position should be reset to the default position in
* the first {@link Timeline.Window}. If false, playback will start from the position defined
* by {@link #getCurrentWindowIndex()} and {@link #getCurrentPosition()}.
*/
void setMediaSource(MediaSource mediaSource, boolean resetPosition);
void prepare(MediaSource mediaSource, boolean resetPosition);
/**
* Sets whether playback should proceed when {@link #getPlaybackState()} == {@link #STATE_READY}.
@ -279,17 +291,15 @@ public interface ExoPlayer {
/**
* Seeks to the default position associated with the current window. The position can depend on
* the type of source passed to {@link #setMediaSource(MediaSource)}. For live streams it will
* typically be the live edge of the window. For other streams it will typically be the start of
* the window.
* the type of source passed to {@link #prepare(MediaSource)}. For live streams it will typically
* be the live edge of the window. For other streams it will typically be the start of the window.
*/
void seekToDefaultPosition();
/**
* Seeks to the default position associated with the specified window. The position can depend on
* the type of source passed to {@link #setMediaSource(MediaSource)}. For live streams it will
* typically be the live edge of the window. For other streams it will typically be the start of
* the window.
* the type of source passed to {@link #prepare(MediaSource)}. For live streams it will typically
* be the live edge of the window. For other streams it will typically be the start of the window.
*
* @param windowIndex The index of the window whose associated default position should be seeked
* to.
@ -353,7 +363,7 @@ public interface ExoPlayer {
/**
* Returns the current manifest. The type depends on the {@link MediaSource} passed to
* {@link #setMediaSource(MediaSource)} or {@link #setMediaSource(MediaSource, boolean)}.
* {@link #prepare}.
*/
Object getCurrentManifest();

View file

@ -28,7 +28,7 @@ import com.google.android.exoplayer2.util.Assertions;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* Concrete implementation of {@link ExoPlayer}.
* An {@link ExoPlayer} implementation. Instances can be obtained from {@link ExoPlayerFactory}.
*/
/* package */ final class ExoPlayerImpl implements ExoPlayer {
@ -62,8 +62,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
* @param loadControl The {@link LoadControl} that will be used by the instance.
*/
@SuppressLint("HandlerLeak")
public ExoPlayerImpl(Renderer[] renderers, TrackSelector trackSelector,
LoadControl loadControl) {
public ExoPlayerImpl(Renderer[] renderers, TrackSelector trackSelector, LoadControl loadControl) {
Log.i(TAG, "Init " + ExoPlayerLibraryInfo.VERSION);
Assertions.checkNotNull(renderers);
Assertions.checkState(renderers.length > 0);
@ -99,12 +98,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
}
@Override
public void setMediaSource(MediaSource mediaSource) {
setMediaSource(mediaSource, true);
public void prepare(MediaSource mediaSource) {
prepare(mediaSource, true);
}
@Override
public void setMediaSource(MediaSource mediaSource, boolean resetPosition) {
public void prepare(MediaSource mediaSource, boolean resetPosition) {
timeline = null;
internalPlayer.setMediaSource(mediaSource, resetPosition);
}
@ -342,7 +341,7 @@ import java.util.concurrent.CopyOnWriteArraySet;
timeline = timelineAndManifest.first;
manifest = timelineAndManifest.second;
for (EventListener listener : listeners) {
listener.onSourceInfoRefreshed(timeline, manifest);
listener.onTimelineChanged(timeline, manifest);
}
break;
}

View file

@ -45,8 +45,8 @@ import java.util.ArrayList;
import java.util.List;
/**
* An {@link ExoPlayer} that uses default {@link Renderer} components. Instances can be obtained
* from {@link ExoPlayerFactory}.
* An {@link ExoPlayer} implementation that uses default {@link Renderer} components. Instances can
* be obtained from {@link ExoPlayerFactory}.
*/
@TargetApi(16)
public final class SimpleExoPlayer implements ExoPlayer {
@ -367,13 +367,13 @@ public final class SimpleExoPlayer implements ExoPlayer {
}
@Override
public void setMediaSource(MediaSource mediaSource) {
player.setMediaSource(mediaSource);
public void prepare(MediaSource mediaSource) {
player.prepare(mediaSource);
}
@Override
public void setMediaSource(MediaSource mediaSource, boolean resetPosition) {
player.setMediaSource(mediaSource, resetPosition);
public void prepare(MediaSource mediaSource, boolean resetPosition) {
player.prepare(mediaSource, resetPosition);
}
@Override

View file

@ -89,7 +89,7 @@ public final class DebugTextViewHelper implements Runnable, ExoPlayer.EventListe
}
@Override
public void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 687 478 108" width="478pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="198.47753" y="700" width="148.4428" height="25" fill="#dee1f8"/><rect x="198.47753" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.47753 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="347.1864" y="700" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="700" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period3</tspan></text><rect x="254" y="730" width="195" height="25" fill="#c3f9bc"/><rect x="254" y="730" width="195" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(259 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="73.044434" y="10" textLength="38.911133">window2</tspan></text><circle cx="405" cy="742.5" r="5.000008" fill="black"/><circle cx="405" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="765" x2="485.1" y2="765" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="763.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 768.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="700" width="148.4428" height="25" fill="#dee1f8"/><rect x="50" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="730" width="148.4428" height="25" fill="#c3f9bc"/><rect x="50" y="730" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="742.5" r="5.000008" fill="black"/><circle cx="50" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 687 478 108" width="478pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 712.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="198.47753" y="700" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="198.47753" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.47753 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="347.1864" y="700" width="147.8136" height="25" fill="black" fill-opacity="0"/><rect x="347.1864" y="700" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period3</tspan></text><rect x="254" y="730" width="195" height="25" fill="black" fill-opacity="0"/><rect x="254" y="730" width="195" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(259 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="73.044434" y="10" textLength="38.911133">window2</tspan></text><circle cx="405" cy="742.5" r="5.000008" fill="black"/><circle cx="405" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="765" x2="485.1" y2="765" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="763.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 768.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="696.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="700" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="700" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 706.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="730" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="730" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 736.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="742.5" r="5.000008" fill="black"/><circle cx="50" cy="742.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 487 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="500" width="445" height="25" fill="#dee1f8"/><rect x="50" y="500" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 506.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="530" width="399" height="25" fill="#c3f9bc"/><rect x="50" y="530" width="399" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 536.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="175.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="542.5" r="5.000008" fill="black"/><circle cx="405" cy="542.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="565" x2="485.1" y2="565" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="563.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 568.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 487 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 512.5) rotate(180) scale(57.75467)"/><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="500" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="500" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 506.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="496.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/><rect x="50" y="530" width="399" height="25" fill="black" fill-opacity="0"/><rect x="50" y="530" width="399" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 536.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="175.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="542.5" r="5.000008" fill="black"/><circle cx="405" cy="542.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="565" x2="485.1" y2="565" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="563.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 568.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 387 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="400" width="445" height="25" fill="#dee1f8"/><rect x="50" y="400" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 406.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="214.6568" y="430" width="234.3432" height="25" fill="#c3f9bc"/><rect x="214.6568" y="430" width="234.3432" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.6568 436.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.716034" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="442.5" r="5.000008" fill="black"/><circle cx="405" cy="442.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="465" x2="485.1" y2="465" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="463.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 468.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 387 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 412.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="400" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="400" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 406.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="214.6568" y="430" width="234.3432" height="25" fill="black" fill-opacity="0"/><rect x="214.6568" y="430" width="234.3432" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.6568 436.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.716034" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="442.5" r="5.000008" fill="black"/><circle cx="405" cy="442.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="465" x2="485.1" y2="465" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="463.4195" width="29" height="22" fill="black" fill-opacity="0"/><text transform="translate(458.41325 468.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="396.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 587 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="600" width="296.92033" height="25" fill="#dee1f8"/><rect x="50" y="600" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="600" width="147.8136" height="25" fill="#dee1f8"/><rect x="347.1864" y="600" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><rect x="214.33803" y="630" width="234.66197" height="25" fill="#c3f9bc"/><rect x="214.33803" y="630" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.33803 636.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="642.5" r="5.000008" fill="black"/><circle cx="405" cy="642.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="665" x2="485.1" y2="665" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="663.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 668.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="38 587 474 108" width="474pt" height="9pc" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker><linearGradient x1="0" x2="1" id="Gradient" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="white"/><stop offset="1" stop-color="white" stop-opacity="0"/></linearGradient><linearGradient id="Obj_Gradient" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_2" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_3" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/><linearGradient id="Obj_Gradient_4" xl:href="#Gradient" gradientTransform="translate(502.75467 612.5) rotate(180) scale(57.75467)"/></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="600" width="296.92033" height="25" fill="black" fill-opacity="0"/><rect x="50" y="600" width="296.92033" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="126.78048" y="10" textLength="33.359375">period1</tspan></text><rect x="347.1864" y="600" width="147.8136" height="25" fill="black" fill-opacity="0"/><rect x="347.1864" y="600" width="147.8136" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(352.1864 606.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.227112" y="10" textLength="33.359375">period2</tspan></text><rect x="214.33803" y="630" width="234.66197" height="25" fill="black" fill-opacity="0"/><rect x="214.33803" y="630" width="234.66197" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(219.33803 636.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="92.87542" y="10" textLength="38.911133">window1</tspan></text><circle cx="405" cy="642.5" r="5.000008" fill="black"/><circle cx="405" cy="642.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="50" y1="665" x2="485.1" y2="665" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="663.4195" width="29" height="22" fill="black" fill-opacity="0"/><text transform="translate(458.41325 668.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_2)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_3)"/><rect x="445" y="596.1257" width="57.75467" height="32.748597" fill="url(#Obj_Gradient_4)"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 289 473 106" width="473pt" height="106pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="300" width="148.4428" height="25" fill="#dee1f8"/><rect x="50" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="50" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><rect x="198.4428" y="300" width="148.4428" height="25" fill="#dee1f8"/><rect x="198.4428" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="346.8856" y="300" width="148.4428" height="25" fill="#dde1f7"/><rect x="346.8856" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period3</tspan></text><rect x="198.4428" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="198.4428" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window2</tspan></text><rect x="346.8856" y="330" width="148.4428" height="25" fill="#c3f9bc"/><rect x="346.8856" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window3</tspan></text><line x1="50" y1="365" x2="485.1" y2="365" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="363.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 368.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x=".05419922" y="10" textLength="18.891602">time</tspan></text><circle cx="50" cy="342.5" r="5.000008" fill="black"/><circle cx="50" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="198.4428" cy="342.5" r="5.000008" fill="black"/><circle cx="198.4428" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="346.88559" cy="342.5" r="5.000008" fill="black"/><circle cx="346.88559" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 289 473 106" width="473pt" height="106pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="300" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="330" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="50" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window1</tspan></text><rect x="198.4428" y="300" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="198.4428" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period2</tspan></text><rect x="346.8856" y="300" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="346.8856" y="300" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 306.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="52.541713" y="10" textLength="33.359375">period3</tspan></text><rect x="198.4428" y="330" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="198.4428" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(203.4428 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window2</tspan></text><rect x="346.8856" y="330" width="148.4428" height="25" fill="black" fill-opacity="0"/><rect x="346.8856" y="330" width="148.4428" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(351.8856 336.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="49.765834" y="10" textLength="38.911133">window3</tspan></text><line x1="50" y1="365" x2="485.1" y2="365" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="453.41325" y="363.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(458.41325 368.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" fill="black" x=".05419922" y="10" textLength="18.891602">time</tspan></text><circle cx="50" cy="342.5" r="5.000008" fill="black"/><circle cx="50" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="198.4428" cy="342.5" r="5.000008" fill="black"/><circle cx="198.4428" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><circle cx="346.88559" cy="342.5" r="5.000008" fill="black"/><circle cx="346.88559" cy="342.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

View file

@ -1,3 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 189 484 107" width="484pt" height="107pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-29 18:21:43 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="200" width="445" height="25" fill="#dee1f8"/><rect x="50" y="200" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 206.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="230" width="445" height="25" fill="#c3f9bc"/><rect x="50" y="230" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 236.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="198.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="242.5" r="5.000008" fill="black"/><circle cx="50" cy="242.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="51" y1="266" x2="486.1" y2="266" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="454.41325" y="264.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(459.41325 269.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 189 484 107" width="484pt" height="107pt" xmlns:dc="http://purl.org/dc/elements/1.1/"><metadata> Produced by OmniGraffle 6.6.1 <dc:date>2016-08-30 16:05:23 +0000</dc:date></metadata><defs><font-face font-family="Helvetica" font-size="10" units-per-em="1000" underline-position="-75.683594" underline-thickness="49.316406" slope="0" x-height="522.94922" cap-height="717.28516" ascent="770.01953" descent="-229.98047" font-weight="500"><font-face-src><font-face-name name="Helvetica"/></font-face-src></font-face><marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -4 10 8" markerWidth="10" markerHeight="8" color="black"><g><path d="M 8 0 L 0 -3 L 0 3 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/></g></marker></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><rect fill="white" width="836" height="2e3"/><g><title>Layer 1</title><rect x="50" y="200" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="200" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 206.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="200.82031" y="10" textLength="33.359375">period1</tspan></text><rect x="50" y="230" width="445" height="25" fill="black" fill-opacity="0"/><rect x="50" y="230" width="445" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="miter" stroke-width="1"/><text transform="translate(55 236.5)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x="198.04443" y="10" textLength="38.911133">window1</tspan></text><circle cx="50" cy="242.5" r="5.000008" fill="black"/><circle cx="50" cy="242.5" r="5.000008" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><line x1="51" y1="266" x2="486.1" y2="266" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/><rect x="454.41325" y="264.4195" width="29" height="22" fill="white" fill-opacity="0"/><text transform="translate(459.41325 269.4195)" fill="black"><tspan font-family="Helvetica" font-size="10" font-weight="500" x=".05419922" y="10" textLength="18.891602">time</tspan></text></g></g></svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View file

@ -132,7 +132,7 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen
String userAgent = "ExoPlayerPlaybackTests";
DrmSessionManager drmSessionManager = buildDrmSessionManager(userAgent);
player = buildExoPlayer(host, surface, trackSelector, drmSessionManager);
player.setMediaSource(buildSource(host, Util.getUserAgent(host, userAgent), bandwidthMeter));
player.prepare(buildSource(host, Util.getUserAgent(host, userAgent), bandwidthMeter));
player.addListener(this);
player.setAudioDebugListener(this);
player.setVideoDebugListener(this);
@ -215,7 +215,7 @@ public abstract class ExoHostedTest implements HostedTest, ExoPlayer.EventListen
}
@Override
public final void onSourceInfoRefreshed(Timeline timeline, Object manifest) {
public final void onTimelineChanged(Timeline timeline, Object manifest) {
// Do nothing.
}