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
eda8ac4e
authored
Jan 22, 2016
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add eventSourceId to onAvailableRangeChange events
parent
00068c89
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
25 additions
and
16 deletions
demo/src/main/java/com/google/android/exoplayer/demo/EventLogger.java
demo/src/main/java/com/google/android/exoplayer/demo/player/DashRendererBuilder.java
demo/src/main/java/com/google/android/exoplayer/demo/player/DemoPlayer.java
library/src/androidTest/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java
library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java
demo/src/main/java/com/google/android/exoplayer/demo/EventLogger.java
View file @
eda8ac4e
...
...
@@ -177,7 +177,7 @@ public class EventLogger implements DemoPlayer.Listener, DemoPlayer.InfoListener
}
@Override
public
void
onAvailableRangeChanged
(
TimeRange
availableRange
)
{
public
void
onAvailableRangeChanged
(
int
sourceId
,
TimeRange
availableRange
)
{
availableRangeValuesUs
=
availableRange
.
getCurrentBoundsUs
(
availableRangeValuesUs
);
Log
.
d
(
TAG
,
"availableRange ["
+
availableRange
.
isStatic
()
+
", "
+
availableRangeValuesUs
[
0
]
+
", "
+
availableRangeValuesUs
[
1
]
+
"]"
);
...
...
demo/src/main/java/com/google/android/exoplayer/demo/player/DashRendererBuilder.java
View file @
eda8ac4e
...
...
@@ -217,7 +217,7 @@ public class DashRendererBuilder implements RendererBuilder {
ChunkSource
videoChunkSource
=
new
DashChunkSource
(
manifestFetcher
,
DefaultDashTrackSelector
.
newVideoInstance
(
context
,
true
,
filterHdContent
),
videoDataSource
,
new
AdaptiveEvaluator
(
bandwidthMeter
),
LIVE_EDGE_LATENCY_MS
,
elapsedRealtimeOffset
,
mainHandler
,
player
);
elapsedRealtimeOffset
,
mainHandler
,
player
,
DemoPlayer
.
TYPE_VIDEO
);
ChunkSampleSource
videoSampleSource
=
new
ChunkSampleSource
(
videoChunkSource
,
loadControl
,
VIDEO_BUFFER_SEGMENTS
*
BUFFER_SEGMENT_SIZE
,
mainHandler
,
player
,
DemoPlayer
.
TYPE_VIDEO
);
...
...
@@ -229,7 +229,7 @@ public class DashRendererBuilder implements RendererBuilder {
DataSource
audioDataSource
=
new
DefaultUriDataSource
(
context
,
bandwidthMeter
,
userAgent
);
ChunkSource
audioChunkSource
=
new
DashChunkSource
(
manifestFetcher
,
DefaultDashTrackSelector
.
newAudioInstance
(),
audioDataSource
,
null
,
LIVE_EDGE_LATENCY_MS
,
elapsedRealtimeOffset
,
mainHandler
,
player
);
elapsedRealtimeOffset
,
mainHandler
,
player
,
DemoPlayer
.
TYPE_AUDIO
);
ChunkSampleSource
audioSampleSource
=
new
ChunkSampleSource
(
audioChunkSource
,
loadControl
,
AUDIO_BUFFER_SEGMENTS
*
BUFFER_SEGMENT_SIZE
,
mainHandler
,
player
,
DemoPlayer
.
TYPE_AUDIO
);
...
...
@@ -241,7 +241,7 @@ public class DashRendererBuilder implements RendererBuilder {
DataSource
textDataSource
=
new
DefaultUriDataSource
(
context
,
bandwidthMeter
,
userAgent
);
ChunkSource
textChunkSource
=
new
DashChunkSource
(
manifestFetcher
,
DefaultDashTrackSelector
.
newTextInstance
(),
textDataSource
,
null
,
LIVE_EDGE_LATENCY_MS
,
elapsedRealtimeOffset
,
mainHandler
,
player
);
elapsedRealtimeOffset
,
mainHandler
,
player
,
DemoPlayer
.
TYPE_TEXT
);
ChunkSampleSource
textSampleSource
=
new
ChunkSampleSource
(
textChunkSource
,
loadControl
,
TEXT_BUFFER_SEGMENTS
*
BUFFER_SEGMENT_SIZE
,
mainHandler
,
player
,
DemoPlayer
.
TYPE_TEXT
);
...
...
demo/src/main/java/com/google/android/exoplayer/demo/player/DemoPlayer.java
View file @
eda8ac4e
...
...
@@ -126,7 +126,7 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
long
mediaStartTimeMs
,
long
mediaEndTimeMs
,
long
elapsedRealtimeMs
,
long
loadDurationMs
);
void
onDecoderInitialized
(
String
decoderName
,
long
elapsedRealtimeMs
,
long
initializationDurationMs
);
void
onAvailableRangeChanged
(
TimeRange
availableRange
);
void
onAvailableRangeChanged
(
int
sourceId
,
TimeRange
availableRange
);
}
/**
...
...
@@ -526,9 +526,9 @@ public class DemoPlayer implements ExoPlayer.Listener, ChunkSampleSource.EventLi
}
@Override
public
void
onAvailableRangeChanged
(
TimeRange
availableRange
)
{
public
void
onAvailableRangeChanged
(
int
sourceId
,
TimeRange
availableRange
)
{
if
(
infoListener
!=
null
)
{
infoListener
.
onAvailableRangeChanged
(
availableRange
);
infoListener
.
onAvailableRangeChanged
(
sourceId
,
availableRange
);
}
}
...
...
library/src/androidTest/java/com/google/android/exoplayer/dash/DashChunkSourceTest.java
View file @
eda8ac4e
...
...
@@ -324,7 +324,8 @@ public class DashChunkSourceTest extends InstrumentationTestCase {
DashChunkSource
chunkSource
=
new
DashChunkSource
(
manifestFetcher
,
mpd
,
DefaultDashTrackSelector
.
newVideoInstance
(
null
,
false
,
false
),
mock
(
DataSource
.
class
),
null
,
new
FakeClock
(
mpd
.
availabilityStartTime
+
mpd
.
duration
-
ELAPSED_REALTIME_OFFSET_MS
),
liveEdgeLatencyMs
*
1000
,
ELAPSED_REALTIME_OFFSET_MS
*
1000
,
startAtLiveEdge
,
null
,
null
);
liveEdgeLatencyMs
*
1000
,
ELAPSED_REALTIME_OFFSET_MS
*
1000
,
startAtLiveEdge
,
null
,
null
,
0
);
chunkSource
.
prepare
();
chunkSource
.
enable
(
0
);
return
chunkSource
;
...
...
library/src/main/java/com/google/android/exoplayer/dash/DashChunkSource.java
View file @
eda8ac4e
...
...
@@ -85,9 +85,10 @@ public class DashChunkSource implements ChunkSource, Output {
/**
* Invoked when the available seek range of the stream has changed.
*
* @param sourceId The id of the reporting {@link DashChunkSource}.
* @param availableRange The range which specifies available content that can be seeked to.
*/
public
void
onAvailableRangeChanged
(
TimeRange
availableRange
);
public
void
onAvailableRangeChanged
(
int
sourceId
,
TimeRange
availableRange
);
}
...
...
@@ -119,6 +120,7 @@ public class DashChunkSource implements ChunkSource, Output {
private
final
long
elapsedRealtimeOffsetUs
;
private
final
long
[]
availableRangeValues
;
private
final
boolean
live
;
private
final
int
eventSourceId
;
private
MediaPresentationDescription
currentManifest
;
private
MediaPresentationDescription
processedManifest
;
...
...
@@ -179,7 +181,7 @@ public class DashChunkSource implements ChunkSource, Output {
public
DashChunkSource
(
MediaPresentationDescription
manifest
,
DashTrackSelector
trackSelector
,
DataSource
dataSource
,
FormatEvaluator
adaptiveFormatEvaluator
)
{
this
(
null
,
manifest
,
trackSelector
,
dataSource
,
adaptiveFormatEvaluator
,
new
SystemClock
(),
0
,
0
,
false
,
null
,
null
);
0
,
false
,
null
,
null
,
0
);
}
/**
...
...
@@ -204,14 +206,15 @@ public class DashChunkSource implements ChunkSource, Output {
* @param eventHandler A handler to use when delivering events to {@code EventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param eventSourceId An identifier that gets passed to {@code eventListener} methods.
*/
public
DashChunkSource
(
ManifestFetcher
<
MediaPresentationDescription
>
manifestFetcher
,
DashTrackSelector
trackSelector
,
DataSource
dataSource
,
FormatEvaluator
adaptiveFormatEvaluator
,
long
liveEdgeLatencyMs
,
long
elapsedRealtimeOffsetMs
,
Handler
eventHandler
,
EventListener
eventListener
)
{
Handler
eventHandler
,
EventListener
eventListener
,
int
eventSourceId
)
{
this
(
manifestFetcher
,
manifestFetcher
.
getManifest
(),
trackSelector
,
dataSource
,
adaptiveFormatEvaluator
,
new
SystemClock
(),
liveEdgeLatencyMs
*
1000
,
elapsedRealtimeOffsetMs
*
1000
,
true
,
eventHandler
,
eventListener
);
elapsedRealtimeOffsetMs
*
1000
,
true
,
eventHandler
,
eventListener
,
eventSourceId
);
}
/**
...
...
@@ -235,21 +238,25 @@ public class DashChunkSource implements ChunkSource, Output {
* @param eventHandler A handler to use when delivering events to {@code EventListener}. May be
* null if delivery of events is not required.
* @param eventListener A listener of events. May be null if delivery of events is not required.
* @param eventSourceId An identifier that gets passed to {@code eventListener} methods.
*/
public
DashChunkSource
(
ManifestFetcher
<
MediaPresentationDescription
>
manifestFetcher
,
DashTrackSelector
trackSelector
,
DataSource
dataSource
,
FormatEvaluator
adaptiveFormatEvaluator
,
long
liveEdgeLatencyMs
,
long
elapsedRealtimeOffsetMs
,
boolean
startAtLiveEdge
,
Handler
eventHandler
,
EventListener
eventListener
)
{
boolean
startAtLiveEdge
,
Handler
eventHandler
,
EventListener
eventListener
,
int
eventSourceId
)
{
this
(
manifestFetcher
,
manifestFetcher
.
getManifest
(),
trackSelector
,
dataSource
,
adaptiveFormatEvaluator
,
new
SystemClock
(),
liveEdgeLatencyMs
*
1000
,
elapsedRealtimeOffsetMs
*
1000
,
startAtLiveEdge
,
eventHandler
,
eventListener
);
elapsedRealtimeOffsetMs
*
1000
,
startAtLiveEdge
,
eventHandler
,
eventListener
,
eventSourceId
);
}
/* package */
DashChunkSource
(
ManifestFetcher
<
MediaPresentationDescription
>
manifestFetcher
,
MediaPresentationDescription
initialManifest
,
DashTrackSelector
trackSelector
,
DataSource
dataSource
,
FormatEvaluator
adaptiveFormatEvaluator
,
Clock
systemClock
,
long
liveEdgeLatencyUs
,
long
elapsedRealtimeOffsetUs
,
boolean
startAtLiveEdge
,
Handler
eventHandler
,
EventListener
eventListener
)
{
boolean
startAtLiveEdge
,
Handler
eventHandler
,
EventListener
eventListener
,
int
eventSourceId
)
{
this
.
manifestFetcher
=
manifestFetcher
;
this
.
currentManifest
=
initialManifest
;
this
.
trackSelector
=
trackSelector
;
...
...
@@ -261,6 +268,7 @@ public class DashChunkSource implements ChunkSource, Output {
this
.
startAtLiveEdge
=
startAtLiveEdge
;
this
.
eventHandler
=
eventHandler
;
this
.
eventListener
=
eventListener
;
this
.
eventSourceId
=
eventSourceId
;
this
.
evaluation
=
new
Evaluation
();
this
.
availableRangeValues
=
new
long
[
2
];
periodHolders
=
new
SparseArray
<>();
...
...
@@ -797,7 +805,7 @@ public class DashChunkSource implements ChunkSource, Output {
eventHandler
.
post
(
new
Runnable
()
{
@Override
public
void
run
()
{
eventListener
.
onAvailableRangeChanged
(
seekRange
);
eventListener
.
onAvailableRangeChanged
(
eventSourceId
,
seekRange
);
}
});
}
...
...
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