https://github.com/google/ExoPlayer

sort by:
Revision Author Date Message Commit Date
44293e8 Merge pull request #5833 from google/dev-v2-r2.10.0 r2.10.0 06 May 2019, 17:29:21 UTC
7d43042 Merge pull request #5760 from matamegger:feature/hex_format_tags_in_url_template PiperOrigin-RevId: 246733842 05 May 2019, 18:44:11 UTC
d31f23f Merge branch 'release-v2' into dev-v2-r2.10.0 05 May 2019, 17:44:35 UTC
90cb157 Update translations PiperOrigin-RevId: 246729123 05 May 2019, 17:24:21 UTC
8b2d436 Prevent CachedContentIndex.idToKey from growing without bound PiperOrigin-RevId: 246727723 05 May 2019, 17:24:04 UTC
ce37c79 Fix Javadoc 03 May 2019, 20:12:02 UTC
71d7e0a Add a couple of assertions to DownloadManager set methods PiperOrigin-RevId: 246491511 03 May 2019, 18:44:54 UTC
116602d Minor download documentation tweaks PiperOrigin-RevId: 246333281 03 May 2019, 18:44:49 UTC
c33835b Fix SmoothStreaming links NOTE: Streams are working on ExoPlayer but querying them from other platforms yields "bad request". The new links: + Match Microsoft's test server. + Allow querying from clients other than ExoPlayer, like curl. PiperOrigin-RevId: 246289755 02 May 2019, 12:14:30 UTC
241ce2d Post-submit fixes for https://github.com/google/ExoPlayer/commit/eed5d957d87d44cb9c716f1a4c80f39ad2a6a442. One wrong return value, a useless assignment, unusual visibility of private class fields and some nullability issues. PiperOrigin-RevId: 246282995 02 May 2019, 12:14:05 UTC
9f9cf31 Remove unnecessary logging As justification for why we should not have this type of logging, it would scale up to about 13K LOC, 1800 Strings, and 36K (after pro-guarding - in the case of the demo app) if we did it through the whole code base*. It makes the code messier to read, and in most cases doesn't add significant value. Note: I left the Scheduler logging because it logs interactions with some awkward library components outside of ExoPlayer, so is perhaps a bit more justified. * This is a bit unfair since realistically we wouldn't ever add lots of logging into trivial classes. But I think it is fair to say that the deltas would be non-negligible. PiperOrigin-RevId: 246181421 02 May 2019, 12:13:59 UTC
214a372 Periodically persist progress to index whilst downloading PiperOrigin-RevId: 246173972 02 May 2019, 12:13:53 UTC
d215b81 Rework DownloadManager to fix remaining TODOs - Removed DownloadInternal and its sometimes-out-of-sync duplicate state - Fixed downloads being in STOPPED rather than QUEUED state when the manager is paused - Fixed setMaxParallelDownloads to start/stop downloads if necessary when the value changes - Fixed isWaitingForRequirements PiperOrigin-RevId: 246164845 02 May 2019, 12:13:38 UTC
6c1065c Prevent index out of bounds exceptions in some live HLS scenarios Can happen if the load position falls behind in every playlist and when we try to load the next segment, the adaptive selection logic decides to change variant. Issue:#5816 PiperOrigin-RevId: 245923006 30 April 2019, 21:13:47 UTC
4a5b8e1 DownloadManager improvements - Do requirements TODO - Add useful helper method to retrieve not met requirements - Fix WritableDownloadIndex Javadoc PiperOrigin-RevId: 245922903 30 April 2019, 21:13:41 UTC
6b34ade Rename DownloadThread to Task This resolves some naming confusion that previously existed as a result of DownloadThread also being used for removals. Some related variables (e.g. activeDownloadCount) would refer to both download and removal tasks, whilst others (e.g. maxParallelDownloads) would refer only to downloads. This change renames those that refer to both to use "task" terminology. This change also includes minor test edits. PiperOrigin-RevId: 245913671 30 April 2019, 21:13:35 UTC
618d97d Never set null as a session meta data object. Issue: #5810 PiperOrigin-RevId: 245745646 30 April 2019, 21:13:27 UTC
590140c Fix bad merge 26 April 2019, 19:41:29 UTC
5eb36f8 Fix line break 26 April 2019, 17:49:45 UTC
cb13f2d Merge branch 'dev-v2-r2.10.0' of https://github.com/google/ExoPlayer into dev-v2-r2.10.0 26 April 2019, 17:48:06 UTC
0128ceb Add simpler DownloadManager constructor PiperOrigin-RevId: 245397736 26 April 2019, 17:45:52 UTC
e4f1f89 Downloading documentation PiperOrigin-RevId: 245443109 26 April 2019, 17:45:29 UTC
9463c31 Update default min duration for playbacks with video to match max duration. Experiments show this is beneficial for rebuffers with only minor impact on battery usage. Configurations which explicitly set a minimum buffer duration are unaffected. Issue:#2083 PiperOrigin-RevId: 244823642 26 April 2019, 17:45:07 UTC
f62fa43 Log warnings when extension libraries can't be used Issue: #5788 PiperOrigin-RevId: 245440858 26 April 2019, 17:43:58 UTC
b55e175 Link blog post from release notes PiperOrigin-RevId: 245411528 26 April 2019, 17:41:55 UTC
56520b7 Move DownloadManager internal logic into isolated inner class There are no logic changes here. It's just moving code around and removing the "internal" part of names where no longer required. PiperOrigin-RevId: 245407238 26 April 2019, 17:41:46 UTC
d187d9e Post maxParallelDownload and minRetryCount changes PiperOrigin-RevId: 245405316 26 April 2019, 17:41:40 UTC
9d03ae4 Add missing getters and clarify STATE_QUEUED documentation PiperOrigin-RevId: 245401274 26 April 2019, 17:41:30 UTC
fc35d5f Add simpler DownloadManager constructor PiperOrigin-RevId: 245397736 26 April 2019, 17:41:17 UTC
c97ee94 Allow content id to be set in DownloadHelper.getDownloadRequest PiperOrigin-RevId: 245388082 26 April 2019, 17:41:03 UTC
249f6a7 Update gradle plugin (part 2). PiperOrigin-RevId: 245218900 26 April 2019, 17:39:28 UTC
7626ff7 Update gradle plugin. This also removes the build warning about the experimental flag. PiperOrigin-RevId: 245218251 26 April 2019, 17:39:21 UTC
4da14e4 Add DownloadService SET_REQUIREMENTS action PiperOrigin-RevId: 245014381 26 April 2019, 17:38:56 UTC
f7f6489 Add option to add entries in an ActionFile to DownloadIndex as completed PiperOrigin-RevId: 244864742 26 April 2019, 17:38:24 UTC
6155139 Fix bug which logs errors twice if stack traces are disabled. Disabling stack trackes currently logs messages twice, once with and once without stack trace. PiperOrigin-RevId: 244853127 26 April 2019, 17:38:16 UTC
3d6407a Always update loading period in handleSourceInfoRefreshed. This ensures we keep the loading period in sync with the the playing period in PlybackInfo, when the latter changes to something new. PiperOrigin-RevId: 244838123 26 April 2019, 17:37:43 UTC
6473d46 Fix tests 19 April 2019, 15:05:04 UTC
b4b82f5 Remove dev-v2 section for 2.10 18 April 2019, 23:04:02 UTC
7f88535 Upgrade dependency versions 18 April 2019, 23:00:53 UTC
0d8146c Further improve DownloadService action names & methods - We had buildAddRequest and sendNewDownload. Converged to buildAddDownload and sendAddDownload. - Also fixed a few more inconsistencies, and brought the action constants into line as well. PiperOrigin-RevId: 244274041 18 April 2019, 22:47:19 UTC
b8cdd7e Fix lint warnings for 2.10 PiperOrigin-RevId: 244268855 18 April 2019, 22:43:07 UTC
b30efe9 Clean up database tables for launch PiperOrigin-RevId: 244267255 18 April 2019, 22:43:02 UTC
54a5d69 Improve progress reporting logic - Listener based reporting of progress allows the content length to be persisted into the download index (and notified via a download state change) as soon as it's available. - Moved contentLength back into Download proper. It should only ever change once, so I'm not sure it belongs in the mutable part of Download. - Made a DownloadProgress class, for naming sanity. PiperOrigin-RevId: 244242487 18 April 2019, 22:42:57 UTC
7d67047 Support multiple DefaultDownloadIndex instances PiperOrigin-RevId: 244226680 18 April 2019, 22:42:51 UTC
38c5350 Simplify DownloadManager constructors PiperOrigin-RevId: 244223870 18 April 2019, 22:42:45 UTC
8c62408 Rename start/stopDownloads to resume/pauseDownloads PiperOrigin-RevId: 244216620 18 April 2019, 22:42:40 UTC
138da6d Rename manualStopReason to stopReason PiperOrigin-RevId: 244210737 18 April 2019, 22:42:33 UTC
6d8bd34 Add missing DownloadService build*Intent and startWith* methods PiperOrigin-RevId: 244196081 18 April 2019, 22:42:20 UTC
b6337ad Avoid selecting a forced text track that doesn't match the audio selection Assuming there is no text language preference. PiperOrigin-RevId: 244176667 18 April 2019, 22:41:15 UTC
a501f8c Fix flaky DownloadManagerDashTest PiperOrigin-RevId: 244170179 18 April 2019, 22:41:04 UTC
be0acc3 Add test for HlsTrackMetadataEntry population in the HlsPlaylistParser PiperOrigin-RevId: 244168713 18 April 2019, 22:40:58 UTC
c2bbf38 Extend Bluetooth dead audio track workaround to Q PiperOrigin-RevId: 244139959 18 April 2019, 22:40:36 UTC
898bfbf [libvpx] permalaunch number of buffers. PiperOrigin-RevId: 244094942 18 April 2019, 22:40:29 UTC
0748566 Remove TODOs we're not going to do 1. customCacheKey for DASH/HLS/SS is now asserted against in DownloadRequest 2. Merging of event delivery in DownloadManager is very tricky to get right and probably not a good idea PiperOrigin-RevId: 244048392 18 April 2019, 22:38:43 UTC
289a8ff Small javadoc fix for DownloadManager constructors PiperOrigin-RevId: 244009343 18 April 2019, 22:38:37 UTC
afd7283 Disable cache span touching for offline Currently SimpleCache will touch cache spans whenever it reads from them. With legacy SimpleCache setups this involves a potentially expensive file rename. With new SimpleCache setups it involves a more efficient but still non-free database write. For offline use cases, and more generally any use case where the eviction policy doesn't use last access timestamps, touching is not useful. This change allows the evictor to specify whether it needs cache spans to be touched or not. SimpleCache will only touch spans if the evictor requires it. Note: There is a potential change in behavior in cases where a cache uses an evictor that doesn't need cache spans to be touched, but then later switches to an evictor that does. The new evictor may temporarily make sub-optimal eviction decisions as a result. I think this is a very fair trade-off, since this scenario is unlikely to occur much, if at all, in practice, and even if it does occur the result isn't that bad. PiperOrigin-RevId: 244005682 18 April 2019, 22:38:30 UTC
2907f79 Don't start download if user explicitly deselects all tracks PiperOrigin-RevId: 244003817 18 April 2019, 22:38:24 UTC
c124693 Upgrade IMA to 3.11.2 PiperOrigin-RevId: 243988105 18 April 2019, 22:38:00 UTC
e15e621 Fix playback of badly clipped MP3 streams Issue: #5772 PiperOrigin-RevId: 243987497 18 April 2019, 22:37:36 UTC
721e1db Add WritableDownloadIndex interface One goal we forgot about a little bit was to allow applications to provide their own index implementation. This requires the writable side to also be defined by an interface. PiperOrigin-RevId: 243979660 18 April 2019, 22:37:28 UTC
6b0fd51 Reset playback info but not position/state in release ImaAdsLoader gets the player position after the app releases the player to support resuming ads at their current position if the same ads loader is reused. PiperOrigin-RevId: 243969916 18 April 2019, 22:37:06 UTC
dcb8417 Assert customCacheKey is null for DASH, HLS and SmoothStreaming downloads PiperOrigin-RevId: 243954989 18 April 2019, 22:36:08 UTC
10f3b8d Update release notes for 2.10 branch cut PiperOrigin-RevId: 243821394 18 April 2019, 14:12:47 UTC
e62da36 Use player.retry in demo app instead of manual position tracking. We currently do manual position tracking while the player is in error mode. This is to allow an initial seek to the new position when trying to re-prepare. Instead, we can just use our player.retry method and remove the tracking code. PiperOrigin-RevId: 243819580 18 April 2019, 14:12:26 UTC
8e7a2ba Don't reset masking position when prepare fails. The removed condition only applies when prepare fails and no timeline was or is known. We should keep a pending seek position in such a case. The internal player does the same thing already. PiperOrigin-RevId: 243819466 18 April 2019, 14:12:07 UTC
ee08e7d Fix key and accessibility scrubbing Issue: #5767 PiperOrigin-RevId: 243811443 16 April 2019, 15:42:08 UTC
0be4bee Add "setCustomErrorMessage" override that allows including an extras bundle with a custom error. PiperOrigin-RevId: 243807109 16 April 2019, 15:41:49 UTC
5856e75 Rename DownloadAction to DownloadRequest PiperOrigin-RevId: 243806888 16 April 2019, 15:41:29 UTC
9fc3ea7 Add ability to register/unregister custom CommandReceivers. PiperOrigin-RevId: 243799572 16 April 2019, 14:28:57 UTC
c2c7c43 Remove redundant proguard files PiperOrigin-RevId: 243781000 16 April 2019, 14:28:39 UTC
77b78b9 DownloadTracker shouldn't depend on DefaultDownloadIndex - It can work with any DownloadIndex - Also simplify things to not require that it's registered as a DownloadManager listener by someone else PiperOrigin-RevId: 243697352 16 April 2019, 14:28:20 UTC
9c759a8 Prepare SimpleCache for 2.10.0 release - Expose constructors that take DatabaseProvider. Deprecate those that do not. - Expose Cache.getUid. This will likely be used for naming of the tables accessed by DefaultDownloadIndex . PiperOrigin-RevId: 243637786 16 April 2019, 14:28:01 UTC
45348a9 Fix Atom ConstantCaseForConstant suppression PiperOrigin-RevId: 243636923 16 April 2019, 14:27:41 UTC
68bd5da Fix DecryptionResource.Owner#onLastReferenceReleased type PiperOrigin-RevId: 243632134 16 April 2019, 14:27:22 UTC
7b84a1e DownloadManager.getCurrentDownloads: Return list instead of array - Allows enforcing immutability, which in a future CL will allow avoiding allocating a new array/list on every call. - Also some left over doc cleanup from the DownloadState rename. PiperOrigin-RevId: 243627352 16 April 2019, 14:27:03 UTC
9ddd39c Add the HlsMetadataEntry from the Master playlist to the Hls tracks PiperOrigin-RevId: 243624081 16 April 2019, 14:26:44 UTC
e9a7d47 Move the RELEASENOTES entry for PlayReady's LA_URL workaround from HLS to DRM PiperOrigin-RevId: 243618907 16 April 2019, 14:26:24 UTC
ba91501 Add DownloadService.invalidateForegroundNotification ISSUE: #4563 PiperOrigin-RevId: 243616444 16 April 2019, 14:26:05 UTC
18dd3fd Bump release to 2.10.0 and update release notes PiperOrigin-RevId: 243592790 16 April 2019, 14:25:47 UTC
1ee5151 Use new exoplayer.dev domain everywhere. The old domain automatically forwards to the new one. For consistency, change all doc and code references regardless. Also adds GitHub CNAME config file which configures our page for the custom domain. PiperOrigin-RevId: 243592110 16 April 2019, 14:25:27 UTC
75238e5 Remove duplications from handleSourceInfoRefreshed. handleSourceInfoRefreshed checks for various conditions which may trigger a change in position. In all cases, we need to resolve the new position for ads, and if the corresponding MediaPeriods already exist, perform the seek to the new position. This change simplified the code by 1. Moving all conditions in a single if-else structure which just determines the new playback position. This makes it easier to read and to follow. 2. Doing the subsequent seek and position update in one final step to remove duplicated code. As a side effect, it also improves some edge cases. For example when skipping an ad to an already prebuffered period, we now properly update the existing prebuffered period. PiperOrigin-RevId: 243588014 16 April 2019, 14:25:08 UTC
1bf1790 Extract factory method for FragmentedMp4Extractor in DefaultHlsExtractorFactory PiperOrigin-RevId: 243582468 16 April 2019, 14:24:48 UTC
2e3eac2 Cleanly detach DownloadThreads on release - Make a best effort to avoid posting MSG_DOWNLOAD_THREAD_STOPPED if the internal thread has already quit. Doing so is harmless, but causes an error in Logcat. We used to generate this warning quite a bit in ExoPlayerImplInternal as well, and we got quite a few issues filed about it, so best to avoid it if possible. - Null out the back reference DownloadThread holds to its manager on release. This avoids a potential issue where a download thread can prevent GC of its manager if it doesn't cancel quickly. There's similar logic (with a similar comment) in Loader.LoadTask. PiperOrigin-RevId: 243365143 13 April 2019, 00:45:59 UTC
97acc68 Add HlsMetadataEntries to HlsMasterPlaylist's variants and renditions PiperOrigin-RevId: 243304549 13 April 2019, 00:43:21 UTC
b2c29da Finalize DownloadManager interface - Rename getAllDownloads to getCurrentDownloads to make it clear that it doesn't include completed and failed downloads - Change getDownloadCount to isWaitingForRequirements, which is what it's used for. Added TODO to make it returns the right thing PiperOrigin-RevId: 243257856 13 April 2019, 00:43:02 UTC
c1e25f7 Add check for retryDelayMs==C.TIME_UNSET in DASH and SS manifest onLoadError. If the returned retry delay is unset, we should use a DONT_RETRY_FATAL action instead and dispatch the event with the "canceled" flag. PiperOrigin-RevId: 243251554 13 April 2019, 00:42:42 UTC
a588717 Move download state transitions into DownloadManager Non-trivial download state transitions are currently split across DownloadManager and Download. These transitions are part of the same state machine, so it's clearer if they're all in the same place (i.e. DownloadManager, since this is the component that transitions downloads between states). PiperOrigin-RevId: 243249915 13 April 2019, 00:42:22 UTC
f623a9d Reduce use of DownloadInternal in DownloadManager The only state DownloadInternal holds is duplicate of state contained in Download, but can confusingly be temporarily out of sync. This is error prone because it's easy to use the wrong variable (e.g. download.state vs state). DownloadInternals methods are called into and call out into DownloadManager, which makes some code paths that are quite hard to follow. It's possible to simplify DownloadManager quite a lot by removing the duplicated state in DownloadInternal, at which point DownloadInternal's methods flatten into DownloadManager, which can just hold an internal list of Downloads directly. This is a first step, which makes it clear that DownloadThready only needs its immutable DownloadAction + an isRemove flag. PiperOrigin-RevId: 243245288 13 April 2019, 00:42:02 UTC
bd841b1 Add DecryptionResource to FormatHolder PiperOrigin-RevId: 243243975 13 April 2019, 00:41:42 UTC
936bc24 Add an HLS metadata entry sublcass to populate HLS track formats Include information to facilitate adaptive track selection in HLS. PiperOrigin-RevId: 243238232 13 April 2019, 00:41:23 UTC
9cfac7e Rename CryptoResource to DecryptionResource PiperOrigin-RevId: 243237265 13 April 2019, 00:41:03 UTC
53934c1 Select non-primary tunneling decoder Issue: #3100 Issue: #5547 PiperOrigin-RevId: 243181217 13 April 2019, 00:40:43 UTC
b84c514 Deprecate ActionFile and simplify upgrading PiperOrigin-RevId: 243085292 13 April 2019, 00:40:24 UTC
112117a Reorder DownloadManager methods Put methods into a more sensible order (the same order as in the switch statement, which is a more natural order with e.g. initialize coming first and release coming last). PiperOrigin-RevId: 242891742 13 April 2019, 00:40:04 UTC
9779d71 Fix stopping downloads - Changed startDownloads/stopDownloads back to their previous behavior of starting and stopping all downloads at the manager level. - Made setManualStopReason methods for the new case of setting a manual stop reason or some or all downloads. - Added plumbing to specify an initial manual stop reason when adding a new download, without also overwriting the manual stop reasons of all other preexisting downloads. Using the value is left as a TODO pending a bit of further cleanup that'll make it easier. PiperOrigin-RevId: 242891688 13 April 2019, 00:39:44 UTC
68993f2 Improve DownloadNotificationHelper - Remove completed downloads from progress notification. - Treat restarting as a downloading, When there are both remove and download tasks ongoing, we prefer to show a download notification to a remove one. A restarting task encapsulates is basically a (remove+download) task. Given our preference, we should treat it as a download rather than as a removal. PiperOrigin-RevId: 242867228 13 April 2019, 00:39:24 UTC
c830c8d Use LoadErrorHandlingPolicy.getRetryDelayMsFor for DASH/SS manifest loads. Both manifest loads currently use the default retry delay although a LoadErrorHandlingPolicy is provided to the MediaSource. PiperOrigin-RevId: 242852672 13 April 2019, 00:39:05 UTC
30beb9b Add DownloadAction merge tests PiperOrigin-RevId: 242851294 13 April 2019, 00:38:45 UTC
8688bd2 Rename DownloadState to Download PiperOrigin-RevId: 242839480 13 April 2019, 00:38:25 UTC
f0cd144 Update UI translations. We have new strings for track role types. PiperOrigin-RevId: 242829944 13 April 2019, 00:38:05 UTC
back to top