Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WIP: Work around and demo for stuck buffering tunneling issue #6400

Closed
wants to merge 227 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
227 commits
Select commit Hold shift + click to select a range
dcb8417
Assert customCacheKey is null for DASH, HLS and SmoothStreaming downl…
erdemguven Apr 17, 2019
6b0fd51
Reset playback info but not position/state in release
andrewlewis Apr 17, 2019
721e1db
Add WritableDownloadIndex interface
ojw28 Apr 17, 2019
e15e621
Fix playback of badly clipped MP3 streams
ojw28 Apr 17, 2019
c124693
Upgrade IMA to 3.11.2
andrewlewis Apr 17, 2019
2907f79
Don't start download if user explicitly deselects all tracks
ojw28 Apr 17, 2019
afd7283
Disable cache span touching for offline
ojw28 Apr 17, 2019
289a8ff
Small javadoc fix for DownloadManager constructors
erdemguven Apr 17, 2019
0748566
Remove TODOs we're not going to do
ojw28 Apr 17, 2019
898bfbf
[libvpx] permalaunch number of buffers.
ojw28 Apr 17, 2019
c2bbf38
Extend Bluetooth dead audio track workaround to Q
andrewlewis Apr 18, 2019
be0acc3
Add test for HlsTrackMetadataEntry population in the HlsPlaylistParser
AquilesCanta Apr 18, 2019
a501f8c
Fix flaky DownloadManagerDashTest
erdemguven Apr 18, 2019
b6337ad
Avoid selecting a forced text track that doesn't match the audio sele…
AquilesCanta Apr 18, 2019
6d8bd34
Add missing DownloadService build*Intent and startWith* methods
erdemguven Apr 18, 2019
138da6d
Rename manualStopReason to stopReason
ojw28 Apr 18, 2019
8c62408
Rename start/stopDownloads to resume/pauseDownloads
ojw28 Apr 18, 2019
38c5350
Simplify DownloadManager constructors
ojw28 Apr 18, 2019
7d67047
Support multiple DefaultDownloadIndex instances
ojw28 Apr 18, 2019
54a5d69
Improve progress reporting logic
ojw28 Apr 18, 2019
b30efe9
Clean up database tables for launch
ojw28 Apr 18, 2019
b8cdd7e
Fix lint warnings for 2.10
ojw28 Apr 18, 2019
0d8146c
Further improve DownloadService action names & methods
ojw28 Apr 18, 2019
7f88535
Upgrade dependency versions
ojw28 Apr 18, 2019
b4b82f5
Remove dev-v2 section for 2.10
ojw28 Apr 18, 2019
6473d46
Fix tests
ojw28 Apr 19, 2019
3d6407a
Always update loading period in handleSourceInfoRefreshed.
tonihei Apr 23, 2019
6155139
Fix bug which logs errors twice if stack traces are disabled.
tonihei Apr 23, 2019
f7f6489
Add option to add entries in an ActionFile to DownloadIndex as completed
erdemguven Apr 23, 2019
4da14e4
Add DownloadService SET_REQUIREMENTS action
erdemguven Apr 24, 2019
7626ff7
Update gradle plugin.
tonihei Apr 25, 2019
249f6a7
Update gradle plugin (part 2).
tonihei Apr 25, 2019
c97ee94
Allow content id to be set in DownloadHelper.getDownloadRequest
erdemguven Apr 26, 2019
fc35d5f
Add simpler DownloadManager constructor
erdemguven Apr 26, 2019
9d03ae4
Add missing getters and clarify STATE_QUEUED documentation
ojw28 Apr 26, 2019
d187d9e
Post maxParallelDownload and minRetryCount changes
ojw28 Apr 26, 2019
56520b7
Move DownloadManager internal logic into isolated inner class
ojw28 Apr 26, 2019
b55e175
Link blog post from release notes
ojw28 Apr 26, 2019
f62fa43
Log warnings when extension libraries can't be used
andrewlewis Apr 26, 2019
9463c31
Update default min duration for playbacks with video to match max dur…
tonihei Apr 23, 2019
e4f1f89
Downloading documentation
erdemguven Apr 26, 2019
0128ceb
Add simpler DownloadManager constructor
erdemguven Apr 26, 2019
cb13f2d
Merge branch 'dev-v2-r2.10.0' of https://github.com/google/ExoPlayer …
ojw28 Apr 26, 2019
5eb36f8
Fix line break
ojw28 Apr 26, 2019
590140c
Fix bad merge
ojw28 Apr 26, 2019
618d97d
Never set null as a session meta data object.
marcbaechinger Apr 29, 2019
6b34ade
Rename DownloadThread to Task
ojw28 Apr 30, 2019
4a5b8e1
DownloadManager improvements
ojw28 Apr 30, 2019
6c1065c
Prevent index out of bounds exceptions in some live HLS scenarios
AquilesCanta Apr 30, 2019
d215b81
Rework DownloadManager to fix remaining TODOs
ojw28 May 1, 2019
214a372
Periodically persist progress to index whilst downloading
ojw28 May 1, 2019
9f9cf31
Remove unnecessary logging
ojw28 May 1, 2019
241ce2d
Post-submit fixes for https://github.com/google/ExoPlayer/commit/eed5…
tonihei May 2, 2019
c33835b
Fix SmoothStreaming links
AquilesCanta May 2, 2019
116602d
Minor download documentation tweaks
ojw28 May 2, 2019
71d7e0a
Add a couple of assertions to DownloadManager set methods
ojw28 May 3, 2019
ce37c79
Fix Javadoc
ojw28 May 3, 2019
8b2d436
Prevent CachedContentIndex.idToKey from growing without bound
ojw28 May 5, 2019
90cb157
Update translations
ojw28 May 5, 2019
d31f23f
Merge branch 'release-v2' into dev-v2-r2.10.0
ojw28 May 5, 2019
7d43042
Merge pull request #5760 from matamegger:feature/hex_format_tags_in_u…
ojw28 May 5, 2019
44293e8
Merge pull request #5833 from google/dev-v2-r2.10.0
ojw28 May 6, 2019
b626dd7
Add DownloadHelper.createMediaSource utility method
erdemguven Apr 25, 2019
3609a7e
Merge commit 'faecef0befc4bb97c4c4a9316a94732dfd6aaec1' into dev-v2-r…
ojw28 May 15, 2019
8325e40
Merge commit '2a0ead1b295c3ac2ad5e4ddc42913331a0616aa5' into dev-v2-r…
ojw28 May 15, 2019
0698bd1
Add option to clear all downloads.
tonihei May 8, 2019
85a86e4
Increase gapless trim sample count
andrewlewis May 9, 2019
ee5981c
Ensure messages get deleted if they throw an exception.
tonihei May 9, 2019
29add85
Update player accessed on wrong thread URL
andrewlewis May 9, 2019
ac07c56
Fix NPE in HLS deriveAudioFormat.
tonihei May 10, 2019
6ead148
Add setCodecOperatingRate workaround for 48KHz audio on ZTE Axon7 mini.
tonihei May 10, 2019
1b9d018
Fix Javadoc links.
tonihei May 10, 2019
bef386b
Increase gradle heap size
tonihei May 13, 2019
48de101
Allow line terminators in ICY metadata
ojw28 May 13, 2019
035686e
Fix Javadoc generation.
tonihei May 13, 2019
cea3071
Fix rendering DVB subtitle on API 28.
marcbaechinger May 14, 2019
3ce0d89
Allow empty values in ICY metadata
ojw28 May 14, 2019
6e9df31
Add links to the developer guide in some READMEs
AquilesCanta May 14, 2019
7f89fa9
Add simpler HttpDataSource constructors
ojw28 May 15, 2019
8efaf5f
don't call stop before preparing the player
marcbaechinger May 15, 2019
6e581f5
Revert "don't call stop before preparing the player"
marcbaechinger May 15, 2019
9e4b89d
Ignore empty timelines in ImaAdsLoader.
tonihei May 16, 2019
15b319c
Bump release to 2.10.1 and update release notes
ojw28 May 16, 2019
9ec330e
Fix platform scheduler javadoc
andrewlewis May 16, 2019
35e030f
Merge pull request #5895 from google/dev-v2-r2.10.1
ojw28 May 20, 2019
6fa58f8
Update issue template for bugs
marcbaechinger May 22, 2019
a5d18f3
Update issue template for content_not_playing
marcbaechinger May 22, 2019
762a132
Update issue template for feature requests
marcbaechinger May 22, 2019
ecb7b87
Update issue template for questions
marcbaechinger May 22, 2019
0a5a8f5
don't call stop before preparing the player
marcbaechinger May 15, 2019
e961def
Add playWhenReady to prepareXyz methods of PlaybackPreparer.
marcbaechinger May 16, 2019
b4d72d1
Add ProgressUpdateListener
marcbaechinger May 20, 2019
e4d66c4
Update a reference to SimpleExoPlayerView
andrewlewis May 20, 2019
1d0618e
Update surface directly from SphericalSurfaceView
andrewlewis May 21, 2019
94c10f1
Propagate attributes to DefaultTimeBar
ojw28 May 21, 2019
7e587ae
Add missing annotations dependency
andrewlewis May 22, 2019
b1ff911
Remove mistakenly left link in vp9 readme
erdemguven May 22, 2019
cf93b8e
Release DownloadHelper automatically if preparation failed.
tonihei May 22, 2019
2e1ea37
Fix IndexOutOfBounds when there are no available codecs
ojw28 May 23, 2019
9b104f6
Reset upstream format when empty track selection happens
ojw28 May 24, 2019
42ffc52
Fix anchor usage in SubtitlePainter's setupBitmapLayout
AquilesCanta May 28, 2019
5d72942
Fix VP9 build setup
andrewlewis May 28, 2019
8bc14bc
Allow enabling decoder fallback in DefaultRenderersFactory
andrewlewis May 28, 2019
41ab7ef
Fix video size reporting in surface YUV mode
andrewlewis May 29, 2019
082aee6
Allow passthrough of E-AC3-JOC streams
andrewlewis May 29, 2019
9da9941
Fix TTML bitmap subtitles
AquilesCanta May 29, 2019
9860c48
Keep controller visible on d-pad key events
ojw28 May 30, 2019
7cdcd89
Update cast extension build
ojw28 May 30, 2019
d626e4b
Rename host_activity.xml to avoid manifest merge conflicts.
tonihei May 30, 2019
b9f3fd4
Make parallel adaptive track selection more robust.
tonihei May 30, 2019
25e93a1
Toggle playback controls according to standard Android click handling.
tonihei Apr 25, 2019
92e2581
Fix CacheUtil.cache() use too much data
erdemguven May 29, 2019
bbf8a9a
Simplify CacheUtil
erdemguven May 30, 2019
811cdf0
Modify DashDownloaderTest to test if content length is stored
erdemguven May 30, 2019
c231e11
Fix misreporting cached bytes when caching is paused
erdemguven May 30, 2019
19de134
CEA608: Handling XDS and TEXT modes
ojw28 Jun 3, 2019
d11778d
Add ResolvingDataSource for just-in-time resolution of DataSpecs.
tonihei May 21, 2019
578abcc
Add SilenceMediaSource
andrewlewis May 17, 2019
edee3dd
Bump to 2.10.2
ojw28 Jun 3, 2019
83a6d51
Use listener notification batching in CastPlayer
AquilesCanta Jun 4, 2019
2f8c8b6
Fix detection of current window index in CastPlayer
AquilesCanta Jun 5, 2019
f638634
Simplify re-creation of the CastPlayer queue in the Cast demo app
AquilesCanta Jun 5, 2019
d3967b5
Don't throw DecoderQueryException from getCodecMaxSize
ojw28 Jun 5, 2019
95c08ad
tell user that #1234 should be the issue number
marcbaechinger Jun 18, 2019
67879f9
add sections asking for bug report
marcbaechinger Jun 18, 2019
7e40708
add sections for bug report and link to test content
marcbaechinger Jun 18, 2019
692f415
Support for UDP data source
Jun 14, 2019
7f435b4
Merge pull request #6036 from angelrc96:dev-v2
tonihei Jun 14, 2019
76b9175
Add bug report section to question and content_not_playing issue temp…
marcbaechinger Jun 17, 2019
e1ff3d0
Gracefully handle revoked ACCESS_NETWORK_STATE permission.
tonihei Jun 18, 2019
a090f7e
Remove unused variable
AquilesCanta Jun 18, 2019
9da2c33
Prevent negative total buffered duration at the point where it is cal…
tonihei Jun 18, 2019
d072a52
Fix application of maxAudioBitrate for adaptive audio track groups
AquilesCanta Jun 18, 2019
def01f6
Let AudioTrack write headers on SDK_INT >= 26
ojw28 Jun 18, 2019
8286e1d
Prevent negative renderer timestamps when seeking back.
tonihei Jun 18, 2019
0f514a0
Update release notes for 2.10.2 cherrypicks
ojw28 Jun 18, 2019
5d54497
keep notification when stop(false) is called
marcbaechinger Jun 19, 2019
66e1211
allow multiple style rules in a STYLE block of a webvtt file
marcbaechinger Jun 19, 2019
c8955ed
Fix build
ojw28 Jun 19, 2019
6799097
Fix decoder fallback for E-AC3 JOC to E-AC3
andrewlewis Jun 21, 2019
fbf5842
Release notes language tweaks
ojw28 Jun 20, 2019
4703ce1
Fix ad pod index offset calculation without preroll
andrewlewis Jun 21, 2019
b9c8861
Disable publishEnabled
ojw28 Jun 21, 2019
f6297f4
Merge pull request #5986 from google/dev-v2-r2.10.2
ojw28 Jun 23, 2019
1ab402c
Create player-accessed-on-wrong-thread.md
ojw28 Jun 26, 2019
913dcb3
Display last frame when seeking to end of stream.
tonihei Jun 4, 2019
1c7bb28
Merge pull request #6055 from xirac:dev-v2
ojw28 Jun 21, 2019
feefaac
Gracefully handle revoked ACCESS_NETWORK_STATE permission.
tonihei Jun 18, 2019
18f1b06
Fix all FIXME comments.
tonihei Jun 17, 2019
e3f1332
Update TrackSelectionDialog.java
eneim Jul 2, 2019
d57a858
Add threading model note to hello-word page
ojw28 Jun 26, 2019
cdf70ed
Remove unnecessary FileDescriptor sync
ojw28 Jun 27, 2019
d3e7ea8
call setPlayWhenReady in any case
marcbaechinger Jun 27, 2019
5365272
Use the floor of the frame rate for capability checks
andrewlewis Jun 28, 2019
71e0f2e
Don't consume touch events if no controller is attached.
tonihei Jul 1, 2019
c4c7f4b
MediaSessionConnector: Document how to provide metadata asynchronously
marcbaechinger Jul 1, 2019
3d5d237
FLV extractor fixes
ojw28 Jul 2, 2019
91728d4
Merge pull request #5908 from sr1990:dev-v2
ojw28 Jul 2, 2019
1538e5d
CEA608: no-op readability clean-up
tonihei Jul 5, 2019
d035f24
CEA608: Fix repeated Special North American chars.
tonihei Jul 8, 2019
6fd235f
Merge pull request #5732 from ToxicBakery:feature/add-license-to-pom
ojw28 Jul 9, 2019
b3495df
Update release notes
ojw28 Jul 9, 2019
1d766c4
Play out remaining data on reconfiguration
andrewlewis Apr 23, 2019
dbabb7c
Apply playback parameters in a consistent way.
tonihei Jul 4, 2019
be9fea8
Fix race condition in DownloadHelper
ojw28 Jul 9, 2019
fdef76c
Bump version to 2.10.3
ojw28 Jul 9, 2019
1273f18
Fix syntax error in publish.gradle
AquilesCanta Jul 9, 2019
f314be5
fix typo in release notes
marcbaechinger Jul 9, 2019
1275217
Add missing file header
ojw28 Jul 11, 2019
51acd81
Merge pull request #6150 from google/dev-v2-r2.10.3
ojw28 Jul 14, 2019
f045bb2
Merge pull request #5617 from loki666:workmanager
ojw28 May 20, 2019
67ad84f
Remove more classes from nullness blacklist
ojw28 Jul 2, 2019
9871423
Simplify FlacExtractor (step toward enabling nullness checking)
ojw28 Jul 4, 2019
008efd1
Make FlacExtractor output methods static
ojw28 Jul 4, 2019
a2a1414
Remove FlacExtractor from nullness blacklist
ojw28 Jul 4, 2019
383c0ad
Remove more low hanging fruit from nullness blacklist
ojw28 Jul 4, 2019
b5e3ae4
Add Nullable annotations to CastPlayer
ojw28 Jul 5, 2019
b6777e0
Remove some UI classes from nullness blacklist
ojw28 Jul 6, 2019
bba0a27
Merge pull request #6151 from ittiam-systems:bug-5527
ojw28 Jul 14, 2019
fa69103
Extend RK video_decoder workaround to newer API levels
ojw28 Jul 17, 2019
962d5e7
Keep default start position (TIME_UNSET) as content position for prer…
tonihei Jul 17, 2019
e181d4b
Fix DataSchemeDataSource re-opening and range requests
AquilesCanta Jul 17, 2019
f829209
Switch language normalization to 2-letter language codes.
tonihei Jul 18, 2019
40fd11d
Further language normalization tweaks for API < 21.
tonihei Jul 18, 2019
97e98ab
Cast: Remove obsolete flavor dimension
ojw28 Jul 23, 2019
78d6393
Add A10-70L to output surface workaround
ojw28 Jul 26, 2019
0b756a9
Merge pull request #6042 from Timbals:dev-v2
ojw28 Jul 18, 2019
70978ce
Update release notes
ojw28 Jul 26, 2019
95d2988
Fix handling of channel count changes with speed adjustment
andrewlewis Jul 26, 2019
d76bf4b
Bump version to 2.10.4
ojw28 Jul 26, 2019
9c88e54
Deprecate JobDispatcherScheduler
erdemguven May 21, 2019
926ad19
Update README.md
ojw28 Jul 28, 2019
e56deba
Update README.md
ojw28 Jul 28, 2019
d395db9
Update README.md
ojw28 Jul 28, 2019
d279c3d
Update README.md
ojw28 Jul 28, 2019
f5980a5
Ensure the SilenceMediaSource position is in range
andrewlewis Jul 29, 2019
8c1b60f
Tweak Firebase JobDispatcher extension README
ojw28 Jul 29, 2019
58e70e8
Update javadoc for TrackOutput#sampleData to make it more clear that …
ojw28 Jul 30, 2019
b5ca187
Mp3Extractor: Avoid outputting seek frame as a sample
ojw28 Jul 31, 2019
3e99e7a
Clean up some Ogg comments & document granulePosition
ojw28 Jul 31, 2019
e159e3a
Mp3Extractor: Avoid outputting non-zero position seek frame as a sample
ojw28 Aug 1, 2019
309d043
Merge pull request #6239 from ittiam-systems:vorbis-picture-parse
ojw28 Aug 1, 2019
4438cdb
return lg specific mime type as codec supported type for OMX.lge.alac…
marcbaechinger Aug 1, 2019
7405021
Some no-op cleanup for DefaultOggSeeker
ojw28 Aug 1, 2019
520275e
Make OggSeeker.startSeek take a granule rather than a time
ojw28 Aug 1, 2019
23ace19
Standardize ALAC initialization data
ojw28 Aug 1, 2019
7162bd8
Propagate non-standard MIME type aliases
ojw28 Aug 1, 2019
7ec7aab
Move E-AC3 workaround out of MediaCodecUtil
andrewlewis Apr 18, 2019
c373ff0
Don't print warning when skipping RIFF and FMT chunks
ojw28 Jul 31, 2019
6d20a5c
WavExtractor: Skip to data start position if position reset to 0
ojw28 Jul 31, 2019
f5e9213
Shorten data length if it exceeds length of input
ojw28 Aug 1, 2019
88b68e5
Fix ExoPlayerTest
ojw28 Aug 1, 2019
80bc50b
Revert to using header bitrate for CBR MP3s
andrewlewis Aug 1, 2019
3c8c5a3
Fix DefaultOggSeeker seeking
ojw28 Aug 2, 2019
1da5689
Improve extractor tests based on ExtractorAsserts
ojw28 Aug 2, 2019
f497bb9
Move DefaultOggSeeker tests into a single class
ojw28 Aug 2, 2019
cd7fe05
Constraint seek targetGranule within bounds + simplify tests
ojw28 Aug 2, 2019
f2cff05
Remove obsolete workaround
ojw28 Aug 2, 2019
f3e5aaa
Upgrade dependency versions
ojw28 Aug 2, 2019
b0c2b1a
Bump annotations dependency
ojw28 Aug 2, 2019
936a778
Check if controller is used when performing click directly.
tonihei Aug 5, 2019
d1ac272
Update stale TrackSelections in chunk sources when keeping the streams.
tonihei Aug 5, 2019
8fdae6d
WIP: Add logging to MediaCodecAudioRenderer...
stevemayhew Aug 23, 2019
825b132
Add logging for tunneling
stevemayhew Aug 26, 2019
492fe8a
Add more logging to get at the issue.
stevemayhew Aug 29, 2019
a212860
Add reams of logging
stevemayhew Sep 5, 2019
066e66e
Revert non logging changes, add workaround in MediaCodecVideoRenderer
stevemayhew Sep 5, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 11 additions & 7 deletions .github/ISSUE_TEMPLATE/bug.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ assignees: ''

Before filing a bug:
-----------------------
- Search existing issues, including issues that are closed.
- Consult our FAQs, supported devices and supported formats pages. These can be
found at https://exoplayer.dev/.
- Search existing issues, including issues that are closed:
https://github.com/google/ExoPlayer/issues?q=is%3Aissue
- Consult our developer website, which can be found at https://exoplayer.dev/.
It provides detailed information about supported formats and devices.
- Learn how to create useful log output by using the EventLogger:
https://exoplayer.dev/listening-to-player-events.html#using-eventlogger
- Rule out issues in your own code. A good way to do this is to try and
reproduce the issue in the ExoPlayer demo app. Information about the ExoPlayer
demo app can be found here:
Expand All @@ -33,16 +36,17 @@ or a small sample app that you’re able to share as source code on GitHub.
Provide a JSON snippet for the demo app’s media.exolist.json file, or a link to
media that reproduces the issue. If you don't wish to post it publicly, please
submit the issue, then email the link to [email protected] using a subject
in the format "Issue #1234". Provide all the metadata we'd need to play the
content like drm license urls or similar. If the content is accessible only in
certain countries or regions, please say so.
in the format "Issue #1234", where "#1234" should be replaced with your issue
number. Provide all the metadata we'd need to play the content like drm license
urls or similar. If the content is accessible only in certain countries or
regions, please say so.

### [REQUIRED] A full bug report captured from the device
Capture a full bug report using "adb bugreport". Output from "adb logcat" or a
log snippet is NOT sufficient. Please attach the captured bug report as a file.
If you don't wish to post it publicly, please submit the issue, then email the
bug report to [email protected] using a subject in the format
"Issue #1234".
"Issue #1234", where "#1234" should be replaced with your issue number.

### [REQUIRED] Version of ExoPlayer being used
Specify the absolute version number. Avoid using terms such as "latest".
Expand Down
19 changes: 15 additions & 4 deletions .github/ISSUE_TEMPLATE/content_not_playing.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,12 @@ assignees: ''

Before filing a content issue:
------------------------------
- Search existing issues, including issues that are closed.
- Search existing issues, including issues that are closed:
https://github.com/google/ExoPlayer/issues?q=is%3Aissue
- Consult our supported formats page, which can be found at
https://exoplayer.dev/supported-formats.html.
- Learn how to create useful log output by using the EventLogger:
https://exoplayer.dev/listening-to-player-events.html#using-eventlogger
- Try playing your content in the ExoPlayer demo app. Information about the
ExoPlayer demo app can be found here:
http://exoplayer.dev/demo-application.html.
Expand All @@ -30,9 +33,10 @@ and you expect to play, like 5.1 audio track, text tracks or drm systems.
Provide a JSON snippet for the demo app’s media.exolist.json file, or a link to
media that reproduces the issue. If you don't wish to post it publicly, please
submit the issue, then email the link to [email protected] using a subject
in the format "Issue #1234". Provide all the metadata we'd need to play the
content like drm license urls or similar. If the content is accessible only in
certain countries or regions, please say so.
in the format "Issue #1234", where "#1234" should be replaced with your issue
number. Provide all the metadata we'd need to play the content like drm license
urls or similar. If the content is accessible only in certain countries or
regions, please say so.

### [REQUIRED] Version of ExoPlayer being used
Specify the absolute version number. Avoid using terms such as "latest".
Expand All @@ -41,6 +45,13 @@ Specify the absolute version number. Avoid using terms such as "latest".
Specify the devices and versions of Android on which you expect the content to
play. If possible, please test on multiple devices and Android versions.

### [REQUIRED] A full bug report captured from the device
Capture a full bug report using "adb bugreport". Output from "adb logcat" or a
log snippet is NOT sufficient. Please attach the captured bug report as a file.
If you don't wish to post it publicly, please submit the issue, then email the
bug report to [email protected] using a subject in the format
"Issue #1234", where "#1234" should be replaced with your issue number.

<!-- DO NOT DELETE
validate_template=true
template_path=.github/ISSUE_TEMPLATE/content_not_playing.md
Expand Down
5 changes: 3 additions & 2 deletions .github/ISSUE_TEMPLATE/feature_request.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@ assignees: ''

Before filing a feature request:
-----------------------
- Search existing open issues, specifically with the label ‘enhancement’.
- Search existing pull requests.
- Search existing open issues, specifically with the label ‘enhancement’:
https://github.com/google/ExoPlayer/labels/enhancement
- Search existing pull requests: https://github.com/google/ExoPlayer/pulls

When filing a feature request:
-----------------------
Expand Down
25 changes: 23 additions & 2 deletions .github/ISSUE_TEMPLATE/question.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ Before filing a question:
a general Android development question, please do so on Stack Overflow.
- Search existing issues, including issues that are closed. It’s often the
quickest way to get an answer!
- Consult our FAQs, developer guide and the class reference of ExoPlayer. These
can be found at https://exoplayer.dev/.
https://github.com/google/ExoPlayer/issues?q=is%3Aissue
- Consult our developer website, which can be found at https://exoplayer.dev/.
It provides detailed information about supported formats, devices as well as
information about how to use the ExoPlayer library.
- The ExoPlayer library Javadoc can be found at
https://exoplayer.dev/doc/reference/

When filing a question:
-----------------------
Expand All @@ -28,6 +32,23 @@ important for us to know this so that we can improve our documentation.
### [REQUIRED] Question
Describe your question in detail.

### A full bug report captured from the device
In case your question refers to a problem you are seeing in your app, capture a
full bug report using "adb bugreport". Please attach the captured bug report as
a file. If you don't wish to post it publicly, please submit the issue, then
email the bug report to [email protected] using a subject in the format
"Issue #1234", where "#1234" should be replaced with your issue number.

### Link to test content
In case your question is related to a piece of media, which you are trying to
play, please provide a JSON snippet for the demo app’s media.exolist.json file,
or a link to media that reproduces the issue. If you don't wish to post it
publicly, please submit the issue, then email the link to
[email protected] using a subject in the format "Issue #1234", where
"#1234" should be replaced with your issue number. Provide all the metadata we'd
need to play the content like drm license urls or similar. If the content is
accessible only in certain countries or regions, please say so.

<!-- DO NOT DELETE
validate_template=true
template_path=.github/ISSUE_TEMPLATE/question.md
Expand Down
120 changes: 110 additions & 10 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,116 @@
# Release notes #

### dev-v2 (not yet released) ###

* Decoders:
* Prefer codecs that advertise format support over ones that do not, even if
they are listed lower in the `MediaCodecList`.
### 2.10.4 ###

* Offline: Add `Scheduler` implementation that uses `WorkManager`.
* Add ability to specify a description when creating notification channels via
ExoPlayer library classes.
* Switch normalized BCP-47 language codes to use 2-letter ISO 639-1 language
tags instead of 3-letter ISO 639-2 language tags.
* Ensure the `SilenceMediaSource` position is in range
([#6229](https://github.com/google/ExoPlayer/issues/6229)).
* WAV: Calculate correct duration for clipped streams
([#6241](https://github.com/google/ExoPlayer/issues/6241)).
* MP3: Use CBR header bitrate, not calculated bitrate. This reverts a change
from 2.9.3 ([#6238](https://github.com/google/ExoPlayer/issues/6238)).
* Flac extension: Parse `VORBIS_COMMENT` and `PICTURE` metadata
([#5527](https://github.com/google/ExoPlayer/issues/5527)).
* Fix issue where initial seek positions get ignored when playing a preroll ad
([#6201](https://github.com/google/ExoPlayer/issues/6201)).
* Fix issue where invalid language tags were normalized to "und" instead of
keeping the original
([#6153](https://github.com/google/ExoPlayer/issues/6153)).
* Fix `DataSchemeDataSource` re-opening and range requests
([#6192](https://github.com/google/ExoPlayer/issues/6192)).
* Fix Flac and ALAC playback on some LG devices
([#5938](https://github.com/google/ExoPlayer/issues/5938)).
* Fix issue when calling `performClick` on `PlayerView` without
`PlayerControlView`
([#6260](https://github.com/google/ExoPlayer/issues/6260)).
* Fix issue where playback speeds are not used in adaptive track selections
after manual selection changes for other renderers
([#6256](https://github.com/google/ExoPlayer/issues/6256)).

### 2.10.3 ###

* Display last frame when seeking to end of stream
([#2568](https://github.com/google/ExoPlayer/issues/2568)).
* Audio:
* Fix an issue where not all audio was played out when the configuration
for the underlying track was changing (e.g., at some period transitions).
* Fix an issue where playback speed was applied inaccurately in playlists
([#6117](https://github.com/google/ExoPlayer/issues/6117)).
* UI: Fix `PlayerView` incorrectly consuming touch events if no controller is
attached ([#6109](https://github.com/google/ExoPlayer/issues/6109)).
* CEA608: Fix repetition of special North American characters
([#6133](https://github.com/google/ExoPlayer/issues/6133)).
* FLV: Fix bug that caused playback of some live streams to not start
([#6111](https://github.com/google/ExoPlayer/issues/6111)).
* SmoothStreaming: Parse text stream `Subtype` into `Format.roleFlags`.
* MediaSession extension: Fix `MediaSessionConnector.play()` not resuming
playback ([#6093](https://github.com/google/ExoPlayer/issues/6093)).

### 2.10.2 ###

* Add `ResolvingDataSource` for just-in-time resolution of `DataSpec`s
([#5779](https://github.com/google/ExoPlayer/issues/5779)).
* Add `SilenceMediaSource` that can be used to play silence of a given
duration ([#5735](https://github.com/google/ExoPlayer/issues/5735)).
* Offline:
* Prevent unexpected `DownloadHelper.Callback.onPrepared` callbacks after
preparation of a `DownloadHelper` fails
([#5915](https://github.com/google/ExoPlayer/issues/5915)).
* Fix `CacheUtil.cache()` downloading too much data
([#5927](https://github.com/google/ExoPlayer/issues/5927)).
* Fix misreporting cached bytes when caching is paused
([#5573](https://github.com/google/ExoPlayer/issues/5573)).
* UI:
* Allow setting `DefaultTimeBar` attributes on `PlayerView` and
`PlayerControlView`.
* Change playback controls toggle from touch down to touch up events
([#5784](https://github.com/google/ExoPlayer/issues/5784)).
* Fix issue where playback controls were not kept visible on key presses
([#5963](https://github.com/google/ExoPlayer/issues/5963)).
* Subtitles:
* CEA-608: Handle XDS and TEXT modes
([5807](https://github.com/google/ExoPlayer/pull/5807)).
* Audio: fix an issue where not all audio was played out when the configuration
for the underlying track was changing (e.g., at some period transitions).
* UI: Change playback controls toggle from touch down to touch up events
([#5784](https://github.com/google/ExoPlayer/issues/5784)).
([#5807](https://github.com/google/ExoPlayer/pull/5807)).
* TTML: Fix bitmap rendering
([#5633](https://github.com/google/ExoPlayer/pull/5633)).
* IMA: Fix ad pod index offset calculation without preroll
([#5928](https://github.com/google/ExoPlayer/issues/5928)).
* Add a `playWhenReady` flag to MediaSessionConnector.PlaybackPreparer methods
to indicate whether a controller sent a play or only a prepare command. This
allows to take advantage of decoder reuse with the MediaSessionConnector
([#5891](https://github.com/google/ExoPlayer/issues/5891)).
* Add `ProgressUpdateListener` to `PlayerControlView`
([#5834](https://github.com/google/ExoPlayer/issues/5834)).
* Add support for auto-detecting UDP streams in `DefaultDataSource`
([#6036](https://github.com/google/ExoPlayer/pull/6036)).
* Allow enabling decoder fallback with `DefaultRenderersFactory`
([#5942](https://github.com/google/ExoPlayer/issues/5942)).
* Gracefully handle revoked `ACCESS_NETWORK_STATE` permission
([#6019](https://github.com/google/ExoPlayer/issues/6019)).
* Fix decoding problems when seeking back after seeking beyond a mid-roll ad
([#6009](https://github.com/google/ExoPlayer/issues/6009)).
* Fix application of `maxAudioBitrate` for adaptive audio track groups
([#6006](https://github.com/google/ExoPlayer/issues/6006)).
* Fix bug caused by parallel adaptive track selection using `Format`s without
bitrate information
([#5971](https://github.com/google/ExoPlayer/issues/5971)).
* Fix bug in `CastPlayer.getCurrentWindowIndex()`
([#5955](https://github.com/google/ExoPlayer/issues/5955)).

### 2.10.1 ###

* Offline: Add option to remove all downloads.
* HLS: Fix `NullPointerException` when using HLS chunkless preparation
([#5868](https://github.com/google/ExoPlayer/issues/5868)).
* Fix handling of empty values and line terminators in SHOUTcast ICY metadata
([#5876](https://github.com/google/ExoPlayer/issues/5876)).
* Fix DVB subtitles for SDK 28
([#5862](https://github.com/google/ExoPlayer/issues/5862)).
* Add a workaround for a decoder failure on ZTE Axon7 mini devices when playing
48kHz audio ([#5821](https://github.com/google/ExoPlayer/issues/5821)).

### 2.10.0 ###

Expand Down
9 changes: 1 addition & 8 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@ buildscript {
classpath 'com.novoda:bintray-release:0.9'
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.1.0'
}
// Workaround for the following test coverage issue. Remove when fixed:
// https://code.google.com/p/android/issues/detail?id=226070
configurations.all {
resolutionStrategy {
force 'org.jacoco:org.jacoco.report:0.7.4.201502262128'
force 'org.jacoco:org.jacoco.core:0.7.4.201502262128'
}
}
}
allprojects {
repositories {
Expand All @@ -44,6 +36,7 @@ allprojects {
}
buildDir = "${externalBuildDir}/${project.name}"
}
group = 'com.google.android.exoplayer'
}

apply from: 'javadoc_combined.gradle'
8 changes: 3 additions & 5 deletions constants.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,17 @@
// limitations under the License.
project.ext {
// ExoPlayer version and version code.
releaseVersion = '2.10.0'
releaseVersionCode = 2010000
releaseVersion = '2.10.4'
releaseVersionCode = 2010004
minSdkVersion = 16
targetSdkVersion = 28
compileSdkVersion = 28
dexmakerVersion = '2.21.0'
mockitoVersion = '2.25.0'
robolectricVersion = '4.3-alpha-2'
robolectricVersion = '4.2'
autoValueVersion = '1.6'
autoServiceVersion = '1.0-rc4'
checkerframeworkVersion = '2.5.0'
androidXTestVersion = '1.1.0'
truthVersion = '0.44'
modulePrefix = ':'
if (gradle.ext.has('exoplayerModulePrefix')) {
modulePrefix += gradle.ext.exoplayerModulePrefix
Expand Down
2 changes: 2 additions & 0 deletions core_settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ include modulePrefix + 'extension-vp9'
include modulePrefix + 'extension-rtmp'
include modulePrefix + 'extension-leanback'
include modulePrefix + 'extension-jobdispatcher'
include modulePrefix + 'extension-workmanager'

project(modulePrefix + 'library').projectDir = new File(rootDir, 'library/all')
project(modulePrefix + 'library-core').projectDir = new File(rootDir, 'library/core')
Expand All @@ -60,3 +61,4 @@ project(modulePrefix + 'extension-vp9').projectDir = new File(rootDir, 'extensio
project(modulePrefix + 'extension-rtmp').projectDir = new File(rootDir, 'extensions/rtmp')
project(modulePrefix + 'extension-leanback').projectDir = new File(rootDir, 'extensions/leanback')
project(modulePrefix + 'extension-jobdispatcher').projectDir = new File(rootDir, 'extensions/jobdispatcher')
project(modulePrefix + 'extension-workmanager').projectDir = new File(rootDir, 'extensions/workmanager')
11 changes: 0 additions & 11 deletions demos/cast/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,6 @@ android {
// The demo app isn't indexed and doesn't have translations.
disable 'GoogleAppIndexingWarning','MissingTranslation'
}

flavorDimensions "receiver"

productFlavors {
defaultCast {
dimension "receiver"
manifestPlaceholders =
[castOptionsProvider: "com.google.android.exoplayer2.ext.cast.DefaultCastOptionsProvider"]
}
}

}

dependencies {
Expand Down
2 changes: 1 addition & 1 deletion demos/cast/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
android:largeHeap="true" android:allowBackup="false">

<meta-data android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
android:value="${castOptionsProvider}" />
android:value="com.google.android.exoplayer2.ext.cast.DefaultCastOptionsProvider"/>

<activity android:name="com.google.android.exoplayer2.castdemo.MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@
private final Listener listener;
private final ConcatenatingMediaSource concatenatingMediaSource;

private boolean castMediaQueueCreationPending;
private int currentItemIndex;
private Player currentPlayer;

Expand Down Expand Up @@ -255,7 +254,7 @@ public void release() {
// Player.EventListener implementation.

@Override
public void onPlayerStateChanged(boolean playWhenReady, @Player.State int playbackState) {
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
updateCurrentItemIndex();
}

Expand All @@ -268,9 +267,6 @@ public void onPositionDiscontinuity(@DiscontinuityReason int reason) {
public void onTimelineChanged(
Timeline timeline, @Nullable Object manifest, @TimelineChangeReason int reason) {
updateCurrentItemIndex();
if (currentPlayer == castPlayer && timeline.isEmpty()) {
castMediaQueueCreationPending = true;
}
}

// CastPlayer.SessionAvailabilityListener implementation.
Expand Down Expand Up @@ -332,7 +328,6 @@ private void setCurrentPlayer(Player currentPlayer) {
this.currentPlayer = currentPlayer;

// Media queue management.
castMediaQueueCreationPending = currentPlayer == castPlayer;
if (currentPlayer == exoPlayer) {
exoPlayer.prepare(concatenatingMediaSource);
}
Expand All @@ -352,12 +347,11 @@ private void setCurrentPlayer(Player currentPlayer) {
*/
private void setCurrentItem(int itemIndex, long positionMs, boolean playWhenReady) {
maybeSetCurrentItemAndNotify(itemIndex);
if (castMediaQueueCreationPending) {
if (currentPlayer == castPlayer && castPlayer.getCurrentTimeline().isEmpty()) {
MediaQueueItem[] items = new MediaQueueItem[mediaQueue.size()];
for (int i = 0; i < items.length; i++) {
items[i] = buildMediaQueueItem(mediaQueue.get(i));
}
castMediaQueueCreationPending = false;
castPlayer.loadItems(items, itemIndex, positionMs, Player.REPEAT_MODE_OFF);
} else {
currentPlayer.seekTo(itemIndex, positionMs);
Expand Down
Loading