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
58fcf52b
authored
Jul 23, 2018
by
ojw28
Committed by
GitHub
Jul 23, 2018
Browse files
Options
_('Browse Files')
Download
Plain Diff
Merge pull request #4534 from Chimerapps/dev-v2
Allow specifying the default live presentation delay
parents
d2eb3fbe
cf99963a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
1 deletions
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
library/dash/src/main/java/com/google/android/exoplayer2/source/dash/DashMediaSource.java
View file @
58fcf52b
...
@@ -79,6 +79,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -79,6 +79,7 @@ public final class DashMediaSource extends BaseMediaSource {
private
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
;
private
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
;
private
int
minLoadableRetryCount
;
private
int
minLoadableRetryCount
;
private
long
livePresentationDelayMs
;
private
long
livePresentationDelayMs
;
private
long
defaultLivePresentationDelayMs
;
private
boolean
isCreateCalled
;
private
boolean
isCreateCalled
;
private
@Nullable
Object
tag
;
private
@Nullable
Object
tag
;
...
@@ -98,6 +99,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -98,6 +99,7 @@ public final class DashMediaSource extends BaseMediaSource {
this
.
manifestDataSourceFactory
=
manifestDataSourceFactory
;
this
.
manifestDataSourceFactory
=
manifestDataSourceFactory
;
minLoadableRetryCount
=
DEFAULT_MIN_LOADABLE_RETRY_COUNT
;
minLoadableRetryCount
=
DEFAULT_MIN_LOADABLE_RETRY_COUNT
;
livePresentationDelayMs
=
DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
;
livePresentationDelayMs
=
DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
;
defaultLivePresentationDelayMs
=
DEFAULT_LIVE_PRESENTATION_DELAY_FIXED_MS
;
compositeSequenceableLoaderFactory
=
new
DefaultCompositeSequenceableLoaderFactory
();
compositeSequenceableLoaderFactory
=
new
DefaultCompositeSequenceableLoaderFactory
();
}
}
...
@@ -147,6 +149,26 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -147,6 +149,26 @@ public final class DashMediaSource extends BaseMediaSource {
this
.
livePresentationDelayMs
=
livePresentationDelayMs
;
this
.
livePresentationDelayMs
=
livePresentationDelayMs
;
return
this
;
return
this
;
}
}
/**
* Sets the duration in milliseconds by which the default start position should precede the end
* of the live window for live playbacks if the value is not present in the manifest.
* The default value is {@link #DEFAULT_LIVE_PRESENTATION_DELAY_FIXED_MS}. This value is only
* used when {@link setLivePresentationDelayMs} has not overwritten the presentation delay to a
* value other than #DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
*
* @param defaultLivePresentationDelayMs For live playbacks, the duration in milliseconds by
* which the default start position should precede the end of the live window if the
* duration is not specifed in the manifest or overwritten using
* {@link setLivePresentationDelayMs}.
* @return This factory, for convenience.
* @throws IllegalStateException If one of the {@code create} methods has already been called.
*/
public
Factory
setDefaultLivePresentationDelayMs
(
long
defaultLivePresentationDelayMs
)
{
Assertions
.
checkState
(!
isCreateCalled
);
this
.
defaultLivePresentationDelayMs
=
defaultLivePresentationDelayMs
;
return
this
;
}
/**
/**
* Sets the manifest parser to parse loaded manifest data when loading a manifest URI.
* Sets the manifest parser to parse loaded manifest data when loading a manifest URI.
...
@@ -201,6 +223,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -201,6 +223,7 @@ public final class DashMediaSource extends BaseMediaSource {
compositeSequenceableLoaderFactory
,
compositeSequenceableLoaderFactory
,
minLoadableRetryCount
,
minLoadableRetryCount
,
livePresentationDelayMs
,
livePresentationDelayMs
,
defaultLivePresentationDelayMs
,
tag
);
tag
);
}
}
...
@@ -241,6 +264,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -241,6 +264,7 @@ public final class DashMediaSource extends BaseMediaSource {
compositeSequenceableLoaderFactory
,
compositeSequenceableLoaderFactory
,
minLoadableRetryCount
,
minLoadableRetryCount
,
livePresentationDelayMs
,
livePresentationDelayMs
,
defaultLivePresentationDelayMs
,
tag
);
tag
);
}
}
...
@@ -302,6 +326,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -302,6 +326,7 @@ public final class DashMediaSource extends BaseMediaSource {
private
final
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
;
private
final
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
;
private
final
int
minLoadableRetryCount
;
private
final
int
minLoadableRetryCount
;
private
final
long
livePresentationDelayMs
;
private
final
long
livePresentationDelayMs
;
private
final
long
defaultLivePresentationDelayMs
;
private
final
EventDispatcher
manifestEventDispatcher
;
private
final
EventDispatcher
manifestEventDispatcher
;
private
final
ParsingLoadable
.
Parser
<?
extends
DashManifest
>
manifestParser
;
private
final
ParsingLoadable
.
Parser
<?
extends
DashManifest
>
manifestParser
;
private
final
ManifestCallback
manifestCallback
;
private
final
ManifestCallback
manifestCallback
;
...
@@ -379,6 +404,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -379,6 +404,7 @@ public final class DashMediaSource extends BaseMediaSource {
new
DefaultCompositeSequenceableLoaderFactory
(),
new
DefaultCompositeSequenceableLoaderFactory
(),
minLoadableRetryCount
,
minLoadableRetryCount
,
DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
,
DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
,
DEFAULT_LIVE_PRESENTATION_DELAY_FIXED_MS
,
/* tag= */
null
);
/* tag= */
null
);
if
(
eventHandler
!=
null
&&
eventListener
!=
null
)
{
if
(
eventHandler
!=
null
&&
eventListener
!=
null
)
{
addEventListener
(
eventHandler
,
eventListener
);
addEventListener
(
eventHandler
,
eventListener
);
...
@@ -476,6 +502,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -476,6 +502,7 @@ public final class DashMediaSource extends BaseMediaSource {
new
DefaultCompositeSequenceableLoaderFactory
(),
new
DefaultCompositeSequenceableLoaderFactory
(),
minLoadableRetryCount
,
minLoadableRetryCount
,
livePresentationDelayMs
,
livePresentationDelayMs
,
DEFAULT_LIVE_PRESENTATION_DELAY_FIXED_MS
,
/* tag= */
null
);
/* tag= */
null
);
if
(
eventHandler
!=
null
&&
eventListener
!=
null
)
{
if
(
eventHandler
!=
null
&&
eventListener
!=
null
)
{
addEventListener
(
eventHandler
,
eventListener
);
addEventListener
(
eventHandler
,
eventListener
);
...
@@ -491,6 +518,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -491,6 +518,7 @@ public final class DashMediaSource extends BaseMediaSource {
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
,
CompositeSequenceableLoaderFactory
compositeSequenceableLoaderFactory
,
int
minLoadableRetryCount
,
int
minLoadableRetryCount
,
long
livePresentationDelayMs
,
long
livePresentationDelayMs
,
long
defaultLivePresentationDelayMs
,
@Nullable
Object
tag
)
{
@Nullable
Object
tag
)
{
this
.
initialManifestUri
=
manifestUri
;
this
.
initialManifestUri
=
manifestUri
;
this
.
manifest
=
manifest
;
this
.
manifest
=
manifest
;
...
@@ -500,6 +528,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -500,6 +528,7 @@ public final class DashMediaSource extends BaseMediaSource {
this
.
chunkSourceFactory
=
chunkSourceFactory
;
this
.
chunkSourceFactory
=
chunkSourceFactory
;
this
.
minLoadableRetryCount
=
minLoadableRetryCount
;
this
.
minLoadableRetryCount
=
minLoadableRetryCount
;
this
.
livePresentationDelayMs
=
livePresentationDelayMs
;
this
.
livePresentationDelayMs
=
livePresentationDelayMs
;
this
.
defaultLivePresentationDelayMs
=
defaultLivePresentationDelayMs
;
this
.
compositeSequenceableLoaderFactory
=
compositeSequenceableLoaderFactory
;
this
.
compositeSequenceableLoaderFactory
=
compositeSequenceableLoaderFactory
;
this
.
tag
=
tag
;
this
.
tag
=
tag
;
sideloadedManifest
=
manifest
!=
null
;
sideloadedManifest
=
manifest
!=
null
;
...
@@ -885,7 +914,7 @@ public final class DashMediaSource extends BaseMediaSource {
...
@@ -885,7 +914,7 @@ public final class DashMediaSource extends BaseMediaSource {
long
presentationDelayForManifestMs
=
livePresentationDelayMs
;
long
presentationDelayForManifestMs
=
livePresentationDelayMs
;
if
(
presentationDelayForManifestMs
==
DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
)
{
if
(
presentationDelayForManifestMs
==
DEFAULT_LIVE_PRESENTATION_DELAY_PREFER_MANIFEST_MS
)
{
presentationDelayForManifestMs
=
manifest
.
suggestedPresentationDelayMs
!=
C
.
TIME_UNSET
presentationDelayForManifestMs
=
manifest
.
suggestedPresentationDelayMs
!=
C
.
TIME_UNSET
?
manifest
.
suggestedPresentationDelayMs
:
DEFAULT_LIVE_PRESENTATION_DELAY_FIXED_MS
;
?
manifest
.
suggestedPresentationDelayMs
:
defaultLivePresentationDelayMs
;
}
}
// Snap the default position to the start of the segment containing it.
// Snap the default position to the start of the segment containing it.
windowDefaultStartPositionUs
=
windowDurationUs
-
C
.
msToUs
(
presentationDelayForManifestMs
);
windowDefaultStartPositionUs
=
windowDurationUs
-
C
.
msToUs
(
presentationDelayForManifestMs
);
...
...
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