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
4280511a
authored
Nov 19, 2014
by
Oliver Woodman
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Seamless splicing for adaptive HLS.
parent
87d0be25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
13 additions
and
5 deletions
demo/src/main/java/com/google/android/exoplayer/demo/full/player/HlsRendererBuilder.java
demo/src/main/java/com/google/android/exoplayer/demo/simple/HlsRendererBuilder.java
library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java
library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java
library/src/main/java/com/google/android/exoplayer/hls/TsExtractor.java
demo/src/main/java/com/google/android/exoplayer/demo/full/player/HlsRendererBuilder.java
View file @
4280511a
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
com
.
google
.
android
.
exoplayer
.
demo
.
full
.
player
;
package
com
.
google
.
android
.
exoplayer
.
demo
.
full
.
player
;
import
com.google.android.exoplayer.MediaCodecAudioTrackRenderer
;
import
com.google.android.exoplayer.MediaCodecAudioTrackRenderer
;
import
com.google.android.exoplayer.MediaCodecUtil
;
import
com.google.android.exoplayer.MediaCodecVideoTrackRenderer
;
import
com.google.android.exoplayer.MediaCodecVideoTrackRenderer
;
import
com.google.android.exoplayer.TrackRenderer
;
import
com.google.android.exoplayer.TrackRenderer
;
import
com.google.android.exoplayer.demo.DemoUtil
;
import
com.google.android.exoplayer.demo.DemoUtil
;
...
@@ -35,6 +36,7 @@ import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
...
@@ -35,6 +36,7 @@ import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
import
com.google.android.exoplayer.upstream.UriDataSource
;
import
com.google.android.exoplayer.upstream.UriDataSource
;
import
com.google.android.exoplayer.util.ManifestFetcher
;
import
com.google.android.exoplayer.util.ManifestFetcher
;
import
com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback
;
import
com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback
;
import
com.google.android.exoplayer.util.MimeTypes
;
import
android.media.MediaCodec
;
import
android.media.MediaCodec
;
import
android.net.Uri
;
import
android.net.Uri
;
...
@@ -92,7 +94,7 @@ public class HlsRendererBuilder implements RendererBuilder, ManifestCallback<Hls
...
@@ -92,7 +94,7 @@ public class HlsRendererBuilder implements RendererBuilder, ManifestCallback<Hls
DataSource
dataSource
=
new
UriDataSource
(
userAgent
,
bandwidthMeter
);
DataSource
dataSource
=
new
UriDataSource
(
userAgent
,
bandwidthMeter
);
HlsChunkSource
chunkSource
=
new
HlsChunkSource
(
dataSource
,
manifest
,
bandwidthMeter
,
null
,
HlsChunkSource
chunkSource
=
new
HlsChunkSource
(
dataSource
,
manifest
,
bandwidthMeter
,
null
,
fals
e
);
MediaCodecUtil
.
getDecoderInfo
(
MimeTypes
.
VIDEO_H264
,
false
).
adaptiv
e
);
HlsSampleSource
sampleSource
=
new
HlsSampleSource
(
chunkSource
,
true
,
3
);
HlsSampleSource
sampleSource
=
new
HlsSampleSource
(
chunkSource
,
true
,
3
);
MediaCodecVideoTrackRenderer
videoRenderer
=
new
MediaCodecVideoTrackRenderer
(
sampleSource
,
MediaCodecVideoTrackRenderer
videoRenderer
=
new
MediaCodecVideoTrackRenderer
(
sampleSource
,
MediaCodec
.
VIDEO_SCALING_MODE_SCALE_TO_FIT
,
0
,
player
.
getMainHandler
(),
player
,
50
);
MediaCodec
.
VIDEO_SCALING_MODE_SCALE_TO_FIT
,
0
,
player
.
getMainHandler
(),
player
,
50
);
...
...
demo/src/main/java/com/google/android/exoplayer/demo/simple/HlsRendererBuilder.java
View file @
4280511a
...
@@ -16,6 +16,7 @@
...
@@ -16,6 +16,7 @@
package
com
.
google
.
android
.
exoplayer
.
demo
.
simple
;
package
com
.
google
.
android
.
exoplayer
.
demo
.
simple
;
import
com.google.android.exoplayer.MediaCodecAudioTrackRenderer
;
import
com.google.android.exoplayer.MediaCodecAudioTrackRenderer
;
import
com.google.android.exoplayer.MediaCodecUtil
;
import
com.google.android.exoplayer.MediaCodecVideoTrackRenderer
;
import
com.google.android.exoplayer.MediaCodecVideoTrackRenderer
;
import
com.google.android.exoplayer.TrackRenderer
;
import
com.google.android.exoplayer.TrackRenderer
;
import
com.google.android.exoplayer.demo.DemoUtil
;
import
com.google.android.exoplayer.demo.DemoUtil
;
...
@@ -32,6 +33,7 @@ import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
...
@@ -32,6 +33,7 @@ import com.google.android.exoplayer.upstream.DefaultBandwidthMeter;
import
com.google.android.exoplayer.upstream.UriDataSource
;
import
com.google.android.exoplayer.upstream.UriDataSource
;
import
com.google.android.exoplayer.util.ManifestFetcher
;
import
com.google.android.exoplayer.util.ManifestFetcher
;
import
com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback
;
import
com.google.android.exoplayer.util.ManifestFetcher.ManifestCallback
;
import
com.google.android.exoplayer.util.MimeTypes
;
import
android.media.MediaCodec
;
import
android.media.MediaCodec
;
import
android.net.Uri
;
import
android.net.Uri
;
...
@@ -88,7 +90,7 @@ import java.util.Collections;
...
@@ -88,7 +90,7 @@ import java.util.Collections;
DefaultBandwidthMeter
bandwidthMeter
=
new
DefaultBandwidthMeter
();
DefaultBandwidthMeter
bandwidthMeter
=
new
DefaultBandwidthMeter
();
DataSource
dataSource
=
new
UriDataSource
(
userAgent
,
bandwidthMeter
);
DataSource
dataSource
=
new
UriDataSource
(
userAgent
,
bandwidthMeter
);
HlsChunkSource
chunkSource
=
new
HlsChunkSource
(
dataSource
,
manifest
,
bandwidthMeter
,
null
,
HlsChunkSource
chunkSource
=
new
HlsChunkSource
(
dataSource
,
manifest
,
bandwidthMeter
,
null
,
fals
e
);
MediaCodecUtil
.
getDecoderInfo
(
MimeTypes
.
VIDEO_H264
,
false
).
adaptiv
e
);
HlsSampleSource
sampleSource
=
new
HlsSampleSource
(
chunkSource
,
true
,
2
);
HlsSampleSource
sampleSource
=
new
HlsSampleSource
(
chunkSource
,
true
,
2
);
MediaCodecVideoTrackRenderer
videoRenderer
=
new
MediaCodecVideoTrackRenderer
(
sampleSource
,
MediaCodecVideoTrackRenderer
videoRenderer
=
new
MediaCodecVideoTrackRenderer
(
sampleSource
,
MediaCodec
.
VIDEO_SCALING_MODE_SCALE_TO_FIT
,
0
,
playerActivity
.
getMainHandler
(),
MediaCodec
.
VIDEO_SCALING_MODE_SCALE_TO_FIT
,
0
,
playerActivity
.
getMainHandler
(),
...
...
library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java
View file @
4280511a
...
@@ -249,9 +249,6 @@ public class HlsChunkSource {
...
@@ -249,9 +249,6 @@ public class HlsChunkSource {
}
else
{
}
else
{
extractor
=
previousTsChunk
.
extractor
;
extractor
=
previousTsChunk
.
extractor
;
}
}
if
(
splicingOut
)
{
extractor
.
discardFromNextKeyframes
();
}
return
new
TsChunk
(
dataSource
,
dataSpec
,
extractor
,
enabledVariants
[
currentVariantIndex
].
index
,
return
new
TsChunk
(
dataSource
,
dataSpec
,
extractor
,
enabledVariants
[
currentVariantIndex
].
index
,
startTimeUs
,
endTimeUs
,
nextChunkMediaSequence
,
splicingOut
);
startTimeUs
,
endTimeUs
,
nextChunkMediaSequence
,
splicingOut
);
...
...
library/src/main/java/com/google/android/exoplayer/hls/HlsSampleSource.java
View file @
4280511a
...
@@ -187,6 +187,13 @@ public class HlsSampleSource implements SampleSource, Loader.Callback {
...
@@ -187,6 +187,13 @@ public class HlsSampleSource implements SampleSource, Loader.Callback {
extractors
.
removeFirst
().
clear
();
extractors
.
removeFirst
().
clear
();
extractor
=
extractors
.
getFirst
();
extractor
=
extractors
.
getFirst
();
}
}
if
(
extractors
.
size
()
>
1
)
{
// If there's more than one extractor, attempt to configure a seamless splice from the
// current one to the next one.
extractor
.
configureSpliceTo
(
extractors
.
get
(
1
));
}
int
extractorIndex
=
0
;
int
extractorIndex
=
0
;
while
(
extractors
.
size
()
>
extractorIndex
+
1
&&
!
extractor
.
hasSamples
(
track
))
{
while
(
extractors
.
size
()
>
extractorIndex
+
1
&&
!
extractor
.
hasSamples
(
track
))
{
// We're finished reading from the extractor for this particular track, so advance to the
// We're finished reading from the extractor for this particular track, so advance to the
...
...
library/src/main/java/com/google/android/exoplayer/hls/TsExtractor.java
View file @
4280511a
This diff is collapsed.
Click to expand it.
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