https://github.com/google/ExoPlayer

sort by:
Revision Author Date Message Commit Date
7d3f54a Merge pull request #7162 from google/dev-v2-r2.11.4 r2.11.4 08 April 2020, 21:48:19 UTC
76374d7 Clean up playWhenReady 08 April 2020, 21:11:33 UTC
54f3e6a Revert release note indentation change 08 April 2020, 21:03:06 UTC
f95a0ca Update misc dependencies PiperOrigin-RevId: 305503804 08 April 2020, 20:53:45 UTC
1f4d374 Upgrade cast dependency Issue: #7191 PiperOrigin-RevId: 305502293 08 April 2020, 20:52:38 UTC
55e33e3 Fix missing subtitle addition 07 April 2020, 20:43:09 UTC
f696a56 Audio focus: Restore full volume if focus is abandoned when ducked If we're in the ducked state and updateAudioFocus is called with a new state for which focus is no longer required, we should restore the player back to full volume. Issue: #7182 PiperOrigin-RevId: 305232155 07 April 2020, 13:12:30 UTC
49858b8 Merge pull request #7184 from TiVo:p-subtitle-format-from-codecs PiperOrigin-RevId: 305137114 07 April 2020, 13:12:06 UTC
cc29798 Audio focus: Re-request audio focus if in a transient loss state This avoids cases where audio focus is never successfully acquired because another app is holding on to transient audio focus indefinitely. Issue: #7182 PiperOrigin-RevId: 305108528 07 April 2020, 13:02:46 UTC
3c0e617 Merge AudioFocusManager methods to simplify control flow. handlePrepare/Stop/SetPlayReady can be merged together as they all handle changes to the desires state of the player. Also, simplify parts of the control flow by not mixing code that determines if audio focus needs to be handled with code that actually acquires or abandons the focus. PiperOrigin-RevId: 299824857 07 April 2020, 13:01:54 UTC
07cbfb6 Fix stuck ad playbacks with DRM-protected content When ClippingMediaPeriod first tried to read a buffer, if its end position was before the end of the stream and it was buffered to its end position, it would sometimes erroneously signal end-of-stream for protected content because the sample queue might be waiting for DRM keys at this point. Work around the issue temporarily by signaling this specific case back to ClippingMediaPeriod via the DecoderInputBuffer. There will likely be a cleaner fix as a result of adding support for dynamic clip end points in the future, at which point this can be reverted. issue:#7188 PiperOrigin-RevId: 305081757 07 April 2020, 12:49:54 UTC
d4d7907 Revert "Remove duplicate SCTE-35 format and add sample to TsExtractorTest" This reverts commit 8591e69b6a40162ffc801a1569549ca826606cc5. 07 April 2020, 12:43:28 UTC
29118f4 Tweak release note 03 April 2020, 23:21:20 UTC
f14c028 Fix dump files for release 03 April 2020, 21:57:06 UTC
b8e6e98 Simplify `WakeLockManager` and `WifiLockManager` logic. Disabling reference counting allows some checks to be removed. This is a no-op. PiperOrigin-RevId: 299829600 03 April 2020, 21:52:40 UTC
83c2ca5 Add `WifiLock` management to `SimpleExoPlayer`. Issue:#6914 PiperOrigin-RevId: 297598910 03 April 2020, 21:52:35 UTC
e4e56fa Clean `WakeLockManager.updateWakeLock` logic. PiperOrigin-RevId: 284552723 03 April 2020, 21:49:03 UTC
a5420a0 Fix release notes PiperOrigin-RevId: 304196424 01 April 2020, 22:04:58 UTC
d921491 Remove thread checks in player constructor SimpleExoPlayer instances don't have to be created from the application thread. PiperOrigin-RevId: 304190901 01 April 2020, 22:04:51 UTC
38f2828 Fix ADTS extraction with mid-stream ID3 PiperOrigin-RevId: 304184650 01 April 2020, 22:04:36 UTC
d466b8c Make javadoc links point to Android docs for java.* classes Before: https://docs.oracle.com/javase/7/docs/api/index.html?java/lang/String.html After: https://developer.android.com/reference/java/lang/String.html PiperOrigin-RevId: 304137011 01 April 2020, 21:58:56 UTC
a9c4d2f Ensure javadoc fix applies to Android links with anchors This means is-external=true is removed and target=_top is set on the <a> tag. Without this, javadoc links to framework docs with anchors are currently broken when viewed in the "frame view" on exoplayer.dev/doc/reference/ Before this change: https://developer.android.com/reference/android/media/MediaDrm.html?is-external=true#getKeyRequest-byte:A-byte:A-java.lang.String-int-java.util.HashMap- With this change: https://developer.android.com/reference/android/media/MediaDrm.html#getKeyRequest-byte:A-byte:A-java.lang.String-int-java.util.HashMap- PiperOrigin-RevId: 304136858 01 April 2020, 21:58:48 UTC
c75f3f7 Merge pull request #7099 from matamegger:feature/fix_pssh_v1_on_firetv PiperOrigin-RevId: 303937576 01 April 2020, 21:58:03 UTC
1f44a4d Bump version to 2.11.4 PiperOrigin-RevId: 303776645 30 March 2020, 18:27:23 UTC
fea0acd Fix PlaybackStatsListener behavior when not keeping history issue:#7160 PiperOrigin-RevId: 303747338 30 March 2020, 17:36:10 UTC
94ca84f Allow developers to specify CharSequence for Notification strings CharSequence is used by Notification builders and allows to set Spannable text. It's the base interface of the String class, so apps wouldn't be break after the update. PiperOrigin-RevId: 303731890 30 March 2020, 17:36:10 UTC
f0e734d Workaround C2 AAC decoder flush problem on Android 10 Issue: #6671 PiperOrigin-RevId: 303364788 30 March 2020, 17:36:07 UTC
69ca534 Parse opus gain correctly as a signed value Issue: #7046 PiperOrigin-RevId: 303354941 30 March 2020, 17:31:24 UTC
a9cbbf9 Skip aliases of other codecs - They are always listed with their canonical names - Considering aliases means that blacklisting a decoder can end up not actually blacklisting it, since it may still be accessible via an alias. It also means that our decoder fallback logic can end up falling back to a decoder that we've already tried! PiperOrigin-RevId: 303348297 30 March 2020, 17:31:24 UTC
0a5a3cb Handle orientation changes in GL demo Issue: #7141 PiperOrigin-RevId: 303334072 30 March 2020, 17:31:24 UTC
3fd7d21 Consistency fixes for FFmpeg extension instructions PiperOrigin-RevId: 303316976 30 March 2020, 17:31:24 UTC
c9f2808 Make milliseconds optional in SubRip (SRT) subtitles issue:#7122 PiperOrigin-RevId: 303154493 30 March 2020, 17:31:24 UTC
a038346 Resample float audio to 16-bit by default to enable audio processing This is less confusing than having audio processing functionality (e.g., playback speed adjustment) just "not work" for some pieces of media. If this change is merged, I will update #6749 to also track making DefaultAudioSink intelligently enable/disable float output depending on how the audio processors are configured. Issue: #7134 PiperOrigin-RevId: 302871568 30 March 2020, 17:31:24 UTC
ddc9833 DefaultAudioSink: Fix issue if last processor is not active It's incorrect to use an AudioFormat returned from AudioProcessor.configure unless the AudioProcessor is active. Issue: #7134 PiperOrigin-RevId: 302674132 30 March 2020, 17:31:24 UTC
54c6084 Support 32-bit FP to 16-bit Int audio resampling This is a no-op for DefaultAudioSink for now, because DefaultAudioSink currently disables processing anyway if the input uses ENCODING_PCM_FLOAT. Issue: #7134 PiperOrigin-RevId: 302670534 30 March 2020, 17:31:24 UTC
2094c74 WAV: Don't read past data end position Issue: #7129 PiperOrigin-RevId: 302660343 30 March 2020, 17:31:24 UTC
1d6bd0d MP4 edit lists: Use floor rather than ceil to find first sample If the start time of the edit falls within a sample, start from that sample rather than the next one. This ensures playback can start from the correct point if the sample is a keyframe, rather than having to start from the next one. Issue: #7133 PiperOrigin-RevId: 302639115 30 March 2020, 17:31:24 UTC
d18292c Allow missing hours in SubRip (.srt) subtitle timecodes Add a test for this case, and extend the existing tests to ensure the hour is parsed when it's present. issue:#7122 PiperOrigin-RevId: 302472213 30 March 2020, 17:31:23 UTC
cac36be Conserve ByteOrder when growingDecoderInputBuffer #exo-offload PiperOrigin-RevId: 302403507 30 March 2020, 17:31:23 UTC
b67d79d Request storage permission if missing PiperOrigin-RevId: 302345647 30 March 2020, 17:31:20 UTC
a39715d Improve logging - Make sure logging of UnknownHostException indicates the failure reason - Indent stack traces inside event blocks in EventLogger - Don't log media URLs PiperOrigin-RevId: 302007601 30 March 2020, 17:27:14 UTC
dd4a732 Merge pull request #7098 from matamegger:feature/webvtt_negative_media_timestamp PiperOrigin-RevId: 301996778 30 March 2020, 17:27:14 UTC
4750785 Add option for sensor rotation in 360 playbacks Issue: #6761 PiperOrigin-RevId: 300715682 30 March 2020, 17:27:07 UTC
b2849fd Merge pull request #7057 from Chimerapps:dash_assetidentifier PiperOrigin-RevId: 300313753 30 March 2020, 13:32:35 UTC
dca68b2 Merge pull request #7064 from davibe:enhancement/6907 PiperOrigin-RevId: 300330109 30 March 2020, 13:30:33 UTC
40d5db0 Add support for x86_64 for the ffmpeg extension Requested by https://github.com/google/ExoPlayer/issues/7058. Additionally move one of the common option in COMMON_OPTIONS. PiperOrigin-RevId: 299862479 30 March 2020, 13:26:33 UTC
4e6383a Merge pull request #7051 from Cizor:dev-v2 PiperOrigin-RevId: 299357049 30 March 2020, 13:25:27 UTC
e2a6775 Merge pull request #6999 from xufuji456:dev-v2 PiperOrigin-RevId: 298544278 30 March 2020, 13:25:03 UTC
c3f9f0e Merge pull request #7010 from dbrain:fix_nullability PiperOrigin-RevId: 297187116 30 March 2020, 12:47:20 UTC
265670c Add ReleaseInputBuffer callback The release_input_buffer callback will be called when the library is done consuming an "input buffer". The buffer passed into EnqueueFrame must be kept valid until this callback is called. If frame parallel is false, then this callback can be nullptr (in this case the buffer has to be kept valid until the next call to DequeueFrame). If frame parallel is true, this callback cannot be nullptr. PiperOrigin-RevId: 296276083 30 March 2020, 12:46:50 UTC
8591e69 Remove duplicate SCTE-35 format and add sample to TsExtractorTest It's not clear why we're currently outputting the format in both init() and consume() - it seems likely that this was accidentally introduced in <unknown commit> when we started outputting the format in consume() but didn't remove it from init(). 30 March 2020, 12:46:24 UTC
908a76e Change libgav1's frame buffer callback API. 1. Have frame buffer callbacks return Libgav1StatusCode instead of int. The 0 (success), -1 (failure) return value convention is less obvious. Note: The callers of frame buffer callbacks, BufferPool::OnFrameBufferSizeChanged() and YuvBuffer::Realloc(), currently return bool, so more work is needed to propagate the frame buffer callbacks' Libgav1StatusCode return value to the Decoder API. 2. Allow the FrameBufferSizeChangedCallback to be omitted if the frame buffer size information is not useful to the application. 3. Remove the old (version 1) frame buffer callback API. Remove the frame buffer callback adaptor. frame_buffer2.h is renamed frame_buffer.h. Libgav1FrameBuffer2 is renamed Libgav1FrameBuffer. GetFrameBufferCallback2 and ReleaseFrameBufferCallback2 are renamed GetFrameBufferCallback and ReleaseFrameBufferCallback. PiperOrigin-RevId: 295971183 30 March 2020, 12:44:13 UTC
75bd4eb Use &id_ as buffer_private_data for libgav1. This avoids the issue of whether it is defined behaviour to cast an arbitrary int (or even intptr_t) value to a void* pointer. This is the original approach used before commit 0915998add5918214fa0282a69b50a159168a6d5. PiperOrigin-RevId: 295552115 30 March 2020, 12:44:05 UTC
766b383 Use libgav1 frame buffer callback helper functions Libgav1 recently added the ComputeFrameBufferInfo() and SetFrameBuffer() helper functions for writing frame buffer callbacks. Using them simplifies the Libgav1GetFrameBuffer() function. Also resurrect the AlignTo16() function. PiperOrigin-RevId: 295548330 30 March 2020, 12:43:58 UTC
b73f6b6 gav1_jni: fix pointer->int conversion warnings fixes: gav1_jni.cc:446:25: error: cast from pointer to smaller type 'int' loses information const int buffer_id = reinterpret_cast<int>(buffer_private_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gav1_jni.cc:730:9: error: cast from pointer to smaller type 'int' loses information reinterpret_cast<int>(decoder_buffer->buffer_private_data); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ after https://github.com/google/ExoPlayer/commit/0915998add5918214fa0282a69b50a159168a6d5 PiperOrigin-RevId: 295211245 30 March 2020, 12:43:47 UTC
0acc95c Cast void* to JniContext* using static_cast. static_cast is more appropriate than reinrerpret_cast for casting from void* to JniContext*. See Section 7.2.1 (page 173) in The C++ Programming Language, 4th Edition and https://stackoverflow.com/questions/310451/should-i-use-static-cast-or-reinterpret-cast-when-casting-a-void-to-whatever PiperOrigin-RevId: 293812940 30 March 2020, 12:43:39 UTC
1163519 Switch to new libgav1 frame buffer callback API. The new code in Libgav1GetFrameBuffer is copied from libgav1/src/frame_buffer_callback_adaptor.cc. It may become libgav1 utility functions available to libgav1 clients in the future. The Libgav1FrameBuffer struct in the old frame buffer callback API is defined as follows: typedef struct Libgav1FrameBuffer { uint8_t* data[3]; size_t size[3]; void* private_data; } Libgav1FrameBuffer; Copy these three fields to the JniFrameBuffer class as private data members and add the RawBuffer() and Id() getter methods. The existing AlignTo16 function is replaced by the copied Align template function. PiperOrigin-RevId: 293709205 30 March 2020, 12:43:27 UTC
1818921 Catch-and-log all subtitle decode errors issue:#6885 PiperOrigin-RevId: 295931197 30 March 2020, 12:41:41 UTC
ed1eade Update stale comment in TrimmingAudioProcessor The part about leaving the pending trim start byte count unmodified if the processor was just configured is not correct. PiperOrigin-RevId: 295745371 30 March 2020, 12:40:36 UTC
23e4236 Add missing IntDef to switch PiperOrigin-RevId: 295692163 30 March 2020, 12:39:30 UTC
49910fe Merge pull request #6989 from google/dev-v2-r2.11.3 r2.11.3 18 February 2020, 15:02:33 UTC
b14d879 Tweak Javadoc 18 February 2020, 14:47:58 UTC
5f1c6b6 Fix SmoothStreaming Issue: #6981 PiperOrigin-RevId: 295579872 18 February 2020, 12:15:13 UTC
d93b57c Zero out trailing bytes in CryptoInfo.iv CryptoInfo.iv length is always 16. When the actual initialization vector is shorter, zero out the trailing bytes. Issue: #6982 PiperOrigin-RevId: 295575845 18 February 2020, 12:14:34 UTC
a967ff3 Fix DefaultExtractorsFactory Javadoc PiperOrigin-RevId: 295540885 18 February 2020, 12:11:29 UTC
cd0999e Bump version to 2.11.3 PiperOrigin-RevId: 295695297 18 February 2020, 12:10:24 UTC
fd24df3 Fix demo app download notification PiperOrigin-RevId: 294503035 13 February 2020, 18:14:21 UTC
62092e6 Merge pull request #6888 from google/dev-v2-r2.11.2 r2.11.2 13 February 2020, 18:11:29 UTC
0740e3c Fix release date 13 February 2020, 18:08:54 UTC
fefe461 Revert accidental change in media.exolist. PiperOrigin-RevId: 294193213 13 February 2020, 18:06:09 UTC
646e690 Add GL demo app Demonstrates rendering to a GLSurfaceView while applying a GL shader. Issue: #6920 PiperOrigin-RevId: 293551724 13 February 2020, 16:52:20 UTC
19c8858 Prepare and release DrmSessionManager in Renderers Issue: #6951 PiperOrigin-RevId: 294187695 13 February 2020, 15:53:05 UTC
67a748f FLAC extension: remove sample rate check This check is not needed because the FLAC specification does not restrict the sample rate value and because the extension reads files with other sample rates properly. PiperOrigin-RevId: 292909391 13 February 2020, 15:50:20 UTC
890fd4e Don't re-init codec if DRM session is unchanged This condition is trying to detect when it might be necessary to switch from a non-secure to a secure codec. This is not possible if the DRM session is unchanged, unless a different codec is required for some other reason (e.g., H264 -> H265), which is anyway handled by canKeepCodec below. PiperOrigin-RevId: 292909126 03 February 2020, 14:46:08 UTC
b7c5f5c Avoid unnecessary decoder instantiations on key rotation Issue: #6903 PiperOrigin-RevId: 292884280 03 February 2020, 11:24:25 UTC
45cb55c Lock down SampleQueue to reasonable extension points PiperOrigin-RevId: 292542298 01 February 2020, 19:40:07 UTC
ee2ad94 annotate nullabilty of CommandReceiver Issue: #6938 PiperOrigin-RevId: 292415853 01 February 2020, 19:39:43 UTC
0cc1eba Add missing AV1 extension path to .gitignore PiperOrigin-RevId: 292347360 01 February 2020, 19:39:28 UTC
fd88115 HLS: Fix key rotation Passing EXT-X-KEY DrmInitData through the FragmentedMp4Extractor doesn't work for streams with key rotation, because an extractor instance is used for multiple segments, but is only passed the EXT-X-KEY DrmInitData corresponding to the first segment. This change removes passing DrmInitData through the extractor, and instead passes it via FormatAdjustingSampleQueue. This is in-line with how manifest DrmInitData is handled during DASH playbacks. Issue: #6903 PiperOrigin-RevId: 292323429 01 February 2020, 19:39:06 UTC
850aef4 SampleQueue: Let subclasses easily invalidate format adjustment This is a nice-regardless improvement to SampleQueue, which will likely to used to fix the referenced issue. It makes it possible for SampleQueue subclasses to support dynamic changes to format adjustment in a non-hacky way. Issue: #6903 PiperOrigin-RevId: 292314720 01 February 2020, 19:38:06 UTC
12bb358 Expand dangal workaround to all API levels It doesn't seem worth keeping the cap, since the device will presumably stop receiving major version updates at some point anyway. Issue: #6899 PiperOrigin-RevId: 291899439 01 February 2020, 19:37:20 UTC
3e75d2a Fix demo app 27 January 2020, 19:13:24 UTC
fbe840e Upgrade OkHttp dependency to 3.12.8 OkHttp 3.12.7 introduced a regression, which was fixed in 3.12.8. PiperOrigin-RevId: 291695577 27 January 2020, 19:08:45 UTC
d1703ad Ensure the demo app requests local-file permissions for subtitle files Currently we only do this for the main sample URI, not for subtitles. So pairing a web-based video file with a local subtitle file on a fresh install just throws a 'permission denied' exception. PiperOrigin-RevId: 290794091 27 January 2020, 19:07:41 UTC
b59a1b8 Remove duplicate release note PiperOrigin-RevId: 290600248 27 January 2020, 19:06:57 UTC
c79cb1b Add ID3 genres added in Wimamp 5.6 (2010). All these genres are currently causing a warning and are not added to the Metadata.Entry. PiperOrigin-RevId: 290594810 27 January 2020, 19:06:36 UTC
7aefaa7 extensions/av1: use -O2 for release builds + force arm (over thumb) mode for 32-bit builds -O2 improves performance ~30-40% over the default -Oz depending on the resolution; this is similar to what is done for vp9 which uses -O3. PiperOrigin-RevId: 290318121 27 January 2020, 19:06:17 UTC
ce1ec1d Release notes: Move download segment merging out of 2.11.2 PiperOrigin-RevId: 290276507 17 January 2020, 17:00:34 UTC
b137cfb Tidy up DownloadService restart. Final change for #6798. - Add additional Listener methods to DownloadManager, to inform of changes to whether the downloads are paused or waiting for requirements. - Only schedule the Scheduler if we really are waiting for requirements. - Only restart the service if we're no longer waiting for requirements, and if there are queued downloads that will now be restarted. Previously the service would be restarted whenever the requirements were met, regardless of whether there was any work to do. - Restart service if it might be stopping, as well as if it's already stopped. Also restart service if there's a download state change to a state for which the service should be started, if. Issue: #6798 PiperOrigin-RevId: 290270547 17 January 2020, 16:16:52 UTC
0a2373c 2.11.2 release notes and version bump PiperOrigin-RevId: 290269098 17 January 2020, 16:16:36 UTC
49349f0 Do not hold a codec in OnFrameRenderedListener Doing so prevent Codec which is a big object with JNI to be garbage collected. As the codec can not be hold in the listener, there is no way to call release, as it must be called on the same codec. As a result the release method is also removed. The downside is that at runtime some callbacks may be dropped but it should be a short transitive state. This also simplifies lifecycle of the listener as the client does not have to know if release needs to be called or not. An alternative would have been to hold a weak ref, but I deemed it too complicated for the runtime gain. PiperOrigin-RevId: 290231659 17 January 2020, 16:14:51 UTC
ea47116 Fix build 17 January 2020, 14:30:48 UTC
f146bad HLS: Fix slow seeking into long MP3 segments Issue: #6155 PiperOrigin-RevId: 290117324 17 January 2020, 14:02:33 UTC
0456b63 FlacExtractor: handle case where last frame < MAX_FRAME_HEADER_SIZE PiperOrigin-RevId: 290079840 17 January 2020, 14:02:29 UTC
e202560 Tunneling timestamp use Message instead of Runnable This avoids allocating a Runnable. PiperOrigin-RevId: 290079660 17 January 2020, 14:02:16 UTC
0ac22d3 Start service in foreground if allowed This fixes an issue where a DownloadService implementation that allows foreground but doesn't provide a scheduler would not be restarted in the case that it was still in memory but classed as idle by the platform. It also speeds up service restart in the case that a scheduler is provided. Issue: #6798 PiperOrigin-RevId: 290068960 17 January 2020, 14:01:50 UTC
f35cb8a Split SampleQueue.advanceTo for advance & seek use cases This method has two use cases: 1. Seeking. Calls are immediately preceded by a call to rewind(), and the returned value isn't important unless it's ADVANCED_FAILED (i.e. the caller is only interested in success and failure). 2. Advancing. The return value is important unless it's ADVANCED_FAILED, in which case the caller wants to treat it as 0. This change creates separate methods for each use case. The new seekTo methods automatically rewind and return a boolean. The updated advanceTo method returns 0 directly in cases where ADVANCED_FAILED was returned. Arguments that were always hard-coded to true by callers have also been removed. This change is a step toward one possible solution for #6155. How we'll solve that issue is still up for discussion, but this change seems like one we should make regardless! Issue: #6155 PiperOrigin-RevId: 290053743 17 January 2020, 14:01:45 UTC
dfa4d55 Fix DownloadService resumption - DownloadManagerHelper now passes all downloads to the DownloadService when the service is attached (and once the downloads are known). The service then starts the foreground notification updater if necessary. This fixes the ref'd issue. - Don't call getScheduler() if the service is background only. This was already documented to be the case on the DownloadService constructor. - If the service is started in the foreground on SDK level 26 and higher, satisfy the condition to move the service to the foreground in onStartCommand rather than in stop(). It's much more obviously correct, and should produce the same end result. Issue: #6798 PiperOrigin-RevId: 290050024 17 January 2020, 14:01:38 UTC
c269ffe Merge pull request #6603 from TiVo:fix-tunneling-stuck-release PiperOrigin-RevId: 290041295 17 January 2020, 14:00:33 UTC
38bc735 Merge pull request #6678 from phhusson:feature/enable-multi-metadata-tracks PiperOrigin-RevId: 290032841 17 January 2020, 13:59:48 UTC
back to top