Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
03305c92
authored
Jul 23, 2015
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Modified timing of manifest fetches to compensate for drift due to fetch time.
parent
7ea19963
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
28 additions
and
10 deletions
demo/src/main/java/com/google/android/exoplayer/demo/player/DashRendererBuilder.java
library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java
library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingChunkSource.java
library/src/main/java/com/google/android/exoplayer/util/ManifestFetcher.java
demo/src/main/java/com/google/android/exoplayer/demo/player/DashRendererBuilder.java
View file @
03305c92
...
...
@@ -134,7 +134,7 @@ public class DashRendererBuilder implements RendererBuilder,
this
.
manifest
=
manifest
;
if
(
manifest
.
dynamic
&&
manifest
.
utcTiming
!=
null
)
{
UtcTimingElementResolver
.
resolveTimingElement
(
manifestDataSource
,
manifest
.
utcTiming
,
manifestFetcher
.
getManifestLoadTimestamp
(),
this
);
manifestFetcher
.
getManifestLoad
Complete
Timestamp
(),
this
);
}
else
{
buildRenderers
();
}
...
...
library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java
View file @
03305c92
...
...
@@ -386,7 +386,7 @@ public class DashChunkSource implements ChunkSource {
}
if
(
finishedCurrentManifest
&&
(
android
.
os
.
SystemClock
.
elapsedRealtime
()
>
manifestFetcher
.
getManifestLoadTimestamp
()
+
minUpdatePeriod
))
{
>
manifestFetcher
.
getManifestLoad
Start
Timestamp
()
+
minUpdatePeriod
))
{
manifestFetcher
.
requestRefresh
();
}
}
...
...
library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingChunkSource.java
View file @
03305c92
...
...
@@ -239,7 +239,7 @@ public class SmoothStreamingChunkSource implements ChunkSource {
}
if
(
finishedCurrentManifest
&&
(
SystemClock
.
elapsedRealtime
()
>
manifestFetcher
.
getManifestLoadTimestamp
()
+
MINIMUM_MANIFEST_REFRESH_PERIOD_MS
))
{
>
manifestFetcher
.
getManifestLoad
Start
Timestamp
()
+
MINIMUM_MANIFEST_REFRESH_PERIOD_MS
))
{
manifestFetcher
.
requestRefresh
();
}
}
...
...
library/src/main/java/com/google/android/exoplayer/util/ManifestFetcher.java
View file @
03305c92
...
...
@@ -108,13 +108,15 @@ public class ManifestFetcher<T> implements Loader.Callback {
private
int
enabledCount
;
private
Loader
loader
;
private
UriLoadable
<
T
>
currentLoadable
;
private
long
currentLoadStartTimestamp
;
private
int
loadExceptionCount
;
private
long
loadExceptionTimestamp
;
private
IOException
loadException
;
private
volatile
T
manifest
;
private
volatile
long
manifestLoadTimestamp
;
private
volatile
long
manifestLoadStartTimestamp
;
private
volatile
long
manifestLoadCompleteTimestamp
;
/**
* @param manifestUri The manifest location.
...
...
@@ -177,12 +179,22 @@ public class ManifestFetcher<T> implements Loader.Callback {
}
/**
* Gets the value of {@link SystemClock#elapsedRealtime()} when the last completed load started.
*
* @return The value of {@link SystemClock#elapsedRealtime()} when the last completed load
* started.
*/
public
long
getManifestLoadStartTimestamp
()
{
return
manifestLoadStartTimestamp
;
}
/**
* Gets the value of {@link SystemClock#elapsedRealtime()} when the last load completed.
*
* @return The value of {@link SystemClock#elapsedRealtime()} when the last load completed.
*/
public
long
getManifestLoadTimestamp
()
{
return
manifestLoadTimestamp
;
public
long
getManifestLoad
Complete
Timestamp
()
{
return
manifestLoad
Complete
Timestamp
;
}
/**
...
...
@@ -235,6 +247,7 @@ public class ManifestFetcher<T> implements Loader.Callback {
}
if
(!
loader
.
isLoading
())
{
currentLoadable
=
new
UriLoadable
<>(
manifestUri
,
uriDataSource
,
parser
);
currentLoadStartTimestamp
=
SystemClock
.
elapsedRealtime
();
loader
.
startLoading
(
currentLoadable
,
this
);
notifyManifestRefreshStarted
();
}
...
...
@@ -248,7 +261,8 @@ public class ManifestFetcher<T> implements Loader.Callback {
}
manifest
=
currentLoadable
.
getResult
();
manifestLoadTimestamp
=
SystemClock
.
elapsedRealtime
();
manifestLoadStartTimestamp
=
currentLoadStartTimestamp
;
manifestLoadCompleteTimestamp
=
SystemClock
.
elapsedRealtime
();
loadExceptionCount
=
0
;
loadException
=
null
;
...
...
@@ -282,9 +296,10 @@ public class ManifestFetcher<T> implements Loader.Callback {
notifyManifestError
(
loadException
);
}
/* package */
void
onSingleFetchCompleted
(
T
result
)
{
/* package */
void
onSingleFetchCompleted
(
T
result
,
long
loadStartTimestamp
)
{
manifest
=
result
;
manifestLoadTimestamp
=
SystemClock
.
elapsedRealtime
();
manifestLoadStartTimestamp
=
loadStartTimestamp
;
manifestLoadCompleteTimestamp
=
SystemClock
.
elapsedRealtime
();
}
private
long
getRetryDelayMillis
(
long
errorCount
)
{
...
...
@@ -331,6 +346,8 @@ public class ManifestFetcher<T> implements Loader.Callback {
private
final
ManifestCallback
<
T
>
wrappedCallback
;
private
final
Loader
singleUseLoader
;
private
long
loadStartTimestamp
;
public
SingleFetchHelper
(
UriLoadable
<
T
>
singleUseLoadable
,
Looper
callbackLooper
,
ManifestCallback
<
T
>
wrappedCallback
)
{
this
.
singleUseLoadable
=
singleUseLoadable
;
...
...
@@ -340,6 +357,7 @@ public class ManifestFetcher<T> implements Loader.Callback {
}
public
void
startLoading
()
{
loadStartTimestamp
=
SystemClock
.
elapsedRealtime
();
singleUseLoader
.
startLoading
(
callbackLooper
,
singleUseLoadable
,
this
);
}
...
...
@@ -347,7 +365,7 @@ public class ManifestFetcher<T> implements Loader.Callback {
public
void
onLoadCompleted
(
Loadable
loadable
)
{
try
{
T
result
=
singleUseLoadable
.
getResult
();
onSingleFetchCompleted
(
result
);
onSingleFetchCompleted
(
result
,
loadStartTimestamp
);
wrappedCallback
.
onSingleManifest
(
result
);
}
finally
{
releaseLoader
();
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment