https://github.com/google/ExoPlayer

sort by:
Revision Author Date Message Commit Date
be13805 Merge pull request #8102 from google/dev-v2-r2.12.1 r2.12.1 22 October 2020, 19:14:02 UTC
269ea4e Add missing release note PiperOrigin-RevId: 338446775 22 October 2020, 11:39:25 UTC
d7e8238 Bump version to 2.12.1 PiperOrigin-RevId: 338261975 21 October 2020, 21:36:32 UTC
de2b58e Fix bottom area to have even paddings and make seekbar slimmer. Also removed unused thumb resources. PiperOrigin-RevId: 338184661 21 October 2020, 09:27:24 UTC
efaa296 Read until the track formats are available in TestUtil.extractSeekMap() Otherwise, some extractor tests are seeking without making sure that the extractor has retrieved the formats. This is needed for PR Issue: #7378. PiperOrigin-RevId: 335934326 20 October 2020, 21:26:18 UTC
452f68f Merge pull request #7867 from GeneticGenesis:pc/update-expected-http-statuses-for-failover PiperOrigin-RevId: 338051017 20 October 2020, 21:16:12 UTC
d2fb9dd Merge pull request #8088 from xufuji456:dev-v2 PiperOrigin-RevId: 338024866 20 October 2020, 21:16:12 UTC
e720827 AudioSink: Remove comment about unconfirmed crash Consensus is that the NoClassDefFoundError does not causes a crash but only a warning. PiperOrigin-RevId: 338022354 20 October 2020, 21:16:12 UTC
7303005 Merge pull request #8030 from yqritc:add-output-surface-workaround PiperOrigin-RevId: 338016707 20 October 2020, 21:16:12 UTC
c3643ec Allow enabling IMA ext debug mode programmatically PiperOrigin-RevId: 337824945 20 October 2020, 21:16:12 UTC
e446f02 Remove references to the default Cast receiver The ExoPlayer receiver app id is a thin wrapper around the default receiver, so there are no reasons for users not to depend on it. By having ExoPlayer users refer to the ExoPlayer app id we can collect usage metrics. PiperOrigin-RevId: 337516767 20 October 2020, 21:16:12 UTC
fac3515 Move DataSource reading methods into Util This will be used to read ads responses out of data: URLs in a subsequent change. PiperOrigin-RevId: 334778780 20 October 2020, 21:16:12 UTC
fe7daa9 Merge pull request #7950 from friederbluemle:update-gradle-plugin PiperOrigin-RevId: 333036751 20 October 2020, 21:16:12 UTC
e0c9165 Upgrade IMA SDK dependency to 3.20.1 This brings in a fix for companion ads rendering when targeting API 29. Issue: #6432 PiperOrigin-RevId: 337279054 20 October 2020, 21:16:12 UTC
0de938c Do not inherit directly from AudioTrack.StreamEventCallback This was causing issues old devices where the class inheriting StreamEventCallback was loaded even though it was not used. Instead use an anonymous class that seem to be loaded more lazily. PiperOrigin-RevId: 337252687 20 October 2020, 21:16:12 UTC
ec96e0c Add MiTV devices requiring the output surface workaround Issue: #8014 PiperOrigin-RevId: 337142176 20 October 2020, 21:16:12 UTC
2b6a9a3 Use Math.round(double) to avoid result being limited to Integer.MAX_INT Issue: #8067 PiperOrigin-RevId: 337122011 20 October 2020, 21:16:12 UTC
a635bdd Switch to an 'api' dependency on Guava The 'implementation' dependency causes problems when resolving ListenableFuture in contexts that also include the com.google.guava:listenablefuture:1.0 dependency. Issue: #7905 Issue: #7997 Issue: #7993 PiperOrigin-RevId: 337093024 20 October 2020, 21:16:12 UTC
6611ac4 Add a way to override ad media MIME types Issue: #7961 PiperOrigin-RevId: 337069152 20 October 2020, 21:16:12 UTC
5cc6dac Encapsulate ImaAdsLoader configuration in a class This will reduce the amount of boilerplate required to pass the configuration values around (especially in a planned future change when logic is factored out of ImaAdsLoader). PiperOrigin-RevId: 337058355 20 October 2020, 21:16:12 UTC
53c4a39 Pass ad tags via AdsMediaSource This is in preparation for supporting playlists of ads media sources using ImaAdsLoader. Existing ways of passing ad tags should still function but are deprecated (and won't be supported with playlists). Issue: #3750 PiperOrigin-RevId: 335618364 20 October 2020, 21:16:12 UTC
947b637 Small fix in IndexSeekMap This change was meant to be in https://github.com/google/ExoPlayer/commit/2e5f2f12adda1b71b9520bf7b2b0a755f41d6cbd but was not added my mistake. PiperOrigin-RevId: 337041686 20 October 2020, 21:16:12 UTC
36c2fe1 Add missing properties of MediaItem.Subtitle Issue: #8044 PiperOrigin-RevId: 336955479 20 October 2020, 21:16:12 UTC
8f04968 Merge pull request #7378 from shenwill:dev-v2 PiperOrigin-RevId: 336875300 20 October 2020, 21:16:12 UTC
3149dd0 Fix a couple of StyledPlayerControlView bugs 1. The first time the player controls are are made visible, there is no animation. 2. The first time the player controls are made visible, the "select tracks" button isn't displayed. When tapping to subsequently hide the player controls, the button briefly becomes visible and then is hidden again. This bug is due to state in StyledPlayerControlViewLayoutManager being out of sync, resulting in StyledPlayerControlView's onVisibilityChange not being called properly. After this change both of these issues should be resolved. PiperOrigin-RevId: 336704031 20 October 2020, 21:16:10 UTC
8dc6b7e Update translations for UI module This should fix gradle errors like: "warn: removing resource com.google.android.exoplayer2.demo:string/exo_controls_fastforward_by_amount_description without required default value." PiperOrigin-RevId: 336670827 20 October 2020, 21:11:34 UTC
907d107 Use MP4VTT MIME type in DashManifestParser (again) We stopped using using this MIME type in https://github.com/google/ExoPlayer/commit/74a9d8f680995f2096c59fde6cd1ef6e85bb4d55 This broke subtitle decoding in some cases (Issue: #7985), which I fixed in https://github.com/google/ExoPlayer/commit/7b8895d655c9b48e042f66045bc9c7ab27e93346. After some discussion we've decided SubtitleDecoderFactory shouldn't depend on Format.containerMimeType (since the samples have already been extracted by this point, so the container shouldn't matter). So this change fixes DashManifestParser to use MimeTypes.APPLICATION_MP4VTT (and reverts the no-longer-needed SubtitleDecoderFactory change). PiperOrigin-RevId: 336668450 20 October 2020, 21:11:34 UTC
d4a0dfd Ensure ParsableByteArray is large enough when appending in VorbisReader PiperOrigin-RevId: 336643621 20 October 2020, 21:11:34 UTC
1e315e4 Expand bottom button's height and extend greyed background area to seekbar Adjusted the bottom layout of StyledPlayerControlView : - Enlarged bottom button's height to make tapping easier. - Extended greyed background area to upper edge of seekbar. - Gave padding between bottom edge of the overall layout and bottom buttons. - Reduced horizontal margins between bottom buttons. PiperOrigin-RevId: 336041160 20 October 2020, 21:11:34 UTC
c887939 Make resetPosition reset the position if true Issue: #8024 PiperOrigin-RevId: 335846035 17 October 2020, 11:18:39 UTC
5b0b447 Fix HLS chunkful preparation bug affecting certain master playlists The bug affects playlists that start with an I-FRAME only variant. Issue: #8025 PiperOrigin-RevId: 335819497 17 October 2020, 11:18:32 UTC
837cdc4 Fix miscellaneous nits/typos PiperOrigin-RevId: 335642909 17 October 2020, 11:18:13 UTC
bddaaf0 Ignore negative payload size in TS PesReader Issue: #8005 PiperOrigin-RevId: 335625992 17 October 2020, 11:18:05 UTC
1cca9ff Add search bytes parameter to TsExtractor Context: Issue: #7988 PiperOrigin-RevId: 335608610 17 October 2020, 11:17:42 UTC
88abe26 Allow apps to add a VideoAdPlayerCallback Issue: #7944 PiperOrigin-RevId: 335012643 17 October 2020, 11:16:39 UTC
13d8860 Tweak null-checking in TextRenderer#getNextEventTime() `subtitle` is only guaranteed to be non-null if `nextSubtitleEventIndex != C.INDEX_UNSET`. The null check added in https://github.com/google/ExoPlayer/commit/0efec5f6c12a5d583f24c122fbcbc1b1eebbabc3 was too early. Issue: #8017 PiperOrigin-RevId: 334777742 17 October 2020, 11:09:20 UTC
b8c8ce0 Use Mp4WebvttDecoder for WebVTT content in DASH MP4 containers This was broken by https://github.com/google/ExoPlayer/commit/74a9d8f680995f2096c59fde6cd1ef6e85bb4d55 because DashManifestParser switched to setting Format.sampleMimeType to text/vtt while SubtitleDecoderFactory was still expecting application/x-mp4-vtt. This change teaches SubtitleDecoderFactory to check both Format.containerMimeType and Format.sampleMimeType. I'll investigate a follow-up change to remove MimeTypes.APPLICATION_MP4VTT completely (it's currently still used in AtomParsers). Issue: #7985 PiperOrigin-RevId: 334771672 17 October 2020, 11:09:13 UTC
9ce2ac8 Create a robolectricutils module This holds shared test infrastructure that needs to depend on Robolectric. PiperOrigin-RevId: 334604041 17 October 2020, 11:08:59 UTC
bd312ec Preserve limit when resetting ParsableByteArray in OggPacket#populate When I moved ParsableByteArray#data behind a getter I replaced some assignments with calls to reset(byte[]): https://github.com/google/ExoPlayer/commit/ce2e6e2fd625db787b1f400614adcd7458144bbd reset(byte[]) deliberately sets `limit` to `data.length`, in order to handle cases that were reassigning `data` but not updating `limit`. However OggPacket was already using `limit` to track where to write 'new' data into the array, so changing `limit` to `data.length` caused us to try and write new data beyond the end of the array. I looked at other uses of reset(byte[]) in https://github.com/google/ExoPlayer/commit/ce2e6e2fd625db787b1f400614adcd7458144bbd and condluded the only other usage in MatroskaExtractor is legit and shouldn't be updated like this (because MatroskaExtractor previously *wasn't* correctly updating/maintaining `limit`). Issue: #7992 PiperOrigin-RevId: 334601586 17 October 2020, 10:53:40 UTC
f3767b3 Add ImaUtil for IMA extension utilities PiperOrigin-RevId: 334567234 17 October 2020, 10:53:34 UTC
358d205 Use Builder in ImaAdsLoader constructor PiperOrigin-RevId: 334562209 17 October 2020, 10:53:29 UTC
824b2a7 Fix position ramping behavior with AudioTrack speed params Non-realtime AudioTrack playback speed was not taken into account when extrapolating the old mode's position, causing the position not to advance smoothly. This should be a no-op when not using AudioTrack playback params for speed adjustment. Issue: #7982 PiperOrigin-RevId: 334151163 17 October 2020, 10:53:06 UTC
89cd796 Do not require subtitleButton in custom layouts of StyledPlayerView Every other subtitleButton has an if not null check, but does not force non null. Issue: #7962 PiperOrigin-RevId: 334124323 17 October 2020, 10:52:45 UTC
1bdccd4 Fix position reporting with fetch errors On receiving a fetch error for an ad that would otherwise play based on an initial/seek position, the pending content position wasn't cleared which meant that position reporting was broken after a fetch error. Fix this by always clearing the pending position (if there was a pending position that will have triggered the fetch error). Also deduplicate the code for handling empty ad groups (fetch errors) and ad group load errors. Issue: #7956 PiperOrigin-RevId: 334113131 17 October 2020, 10:52:12 UTC
9819664 Merge pull request #7798 from yoobi:trackSelectionView PiperOrigin-RevId: 333751261 17 October 2020, 10:51:53 UTC
57f11d1 Parse TLEN duration in Mp3Extractor Issue: #7949 PiperOrigin-RevId: 333733615 17 October 2020, 10:51:36 UTC
1953086 Always pass true for ongoing with the first notification ISSUE: #7977 PiperOrigin-RevId: 333726625 17 October 2020, 10:51:30 UTC
300bee5 Bring back setRenderTimeLimitMs PiperOrigin-RevId: 333712782 17 October 2020, 10:51:18 UTC
973d235 Add support for mp2 boxes. Issue: #7967 PiperOrigin-RevId: 333709003 17 October 2020, 10:49:06 UTC
a1999ef Util.getStringForTime() prefixes negative times Fix bug to place the negative sign in the beginning of the returned String. PiperOrigin-RevId: 333504868 17 October 2020, 10:48:24 UTC
31251a4 Merge pull request #7968 from DolbyLaboratories:dev-v2-channelConfiguration PiperOrigin-RevId: 333485323 17 October 2020, 10:48:14 UTC
30be792 Switch SntpClient to time.android.com and allow to set host. PiperOrigin-RevId: 333480727 17 October 2020, 10:48:08 UTC
64aa634 Fix offload buffer full detection after setEndOfStream This issue has been observed on a test app stress testing setEndOfStream. The issue has not been observed on ExoPlayer, probably due to timing differences, but it is fixed preventively. #exo-offload PiperOrigin-RevId: 333472136 17 October 2020, 10:48:02 UTC
92f9de8 Delete sample_cbs.adts test asset This seems to be an exact copy of sample.adts. Update the test to use the same sample but just output to a different dump file. PiperOrigin-RevId: 333469714 17 October 2020, 10:47:54 UTC
df1619f Add Japanese subtitle examples to the demo app These are from https://medium.com/google-exoplayer/improved-japanese-subtitle-support-7598fee12cf4 PiperOrigin-RevId: 333296789 17 October 2020, 10:47:50 UTC
79638d1 Add support for 'mett' sample description PiperOrigin-RevId: 333272292 17 October 2020, 10:47:44 UTC
884a0f5 Remove unused MP4 atom type PiperOrigin-RevId: 333051018 17 October 2020, 10:47:35 UTC
9394847 Don't require the existence of the next period to wait for its stream. We have a workaround for uneven sample stream durarions in playlists that assumes a renderer allows playback if it's reading ahead or waiting for the next stream. https://github.com/google/ExoPlayer/commit/652c2f9c188bf9d9d6e323ff5333e5026454a082 changed this logic to no longer require to wait until the next stream is prepared due to a change in how we advance media periods in the queue. However, the code falsely still requires the next stream to exist (even if it's not prepared). This can cause a stuck buffering state when the difference in the duration of the streams is more than what we buffer ahead because we never create the next stream in such a case. Note: DefaultMediaClock.shouldUseStandaloneClock has roughly the same logic and also doesn't require the next stream to be present. Also fix a test that seemed to rely on this stuck buffering case to test stuck buffering detection. Changed the test to not read the end of stream to ensure it runs into the desired stuck buffering case. Issue:#7943 PiperOrigin-RevId: 333050285 17 October 2020, 10:47:27 UTC
b603656 Exclude PC devices from H.265 GTS tests PiperOrigin-RevId: 333031399 17 October 2020, 10:46:31 UTC
1b5d07c Guava-ify https://github.com/google/ExoPlayer/commit/f2c51560c21bdd757c30678223345fa8f59fb82b PiperOrigin-RevId: 333031301 17 October 2020, 10:46:23 UTC
6a9f125 Don't assume FakeSampleStream is ended without end of stream signal PiperOrigin-RevId: 333029935 17 October 2020, 10:46:15 UTC
a837e7a Cleanup layout XMLs to be consistent with others PiperOrigin-RevId: 333023580 17 October 2020, 10:44:43 UTC
77249bd Use replace() instead of replaceAll() in SsaDecoder We're not using regex so there's no need to use replaceAll() PiperOrigin-RevId: 332865724 17 October 2020, 10:44:17 UTC
201d120 Recover from audio server crash while sleeping for offload Without this patch, playback would be frozen indefinitely until the user manually pauses and unpauses it. This has the side effect of disabling offload until the next stop due to the workaround of disabling offload when it encounters a failure. As an audio server crash is considered very infrequent, especially in stable conditions like an audio only playback, it is unlikely that disabling offload is an issue. PiperOrigin-RevId: 332857094 17 October 2020, 10:44:10 UTC
1850a91 Merge pull request #7938 from bennettpeter:pullreq-ssa-subtitles PiperOrigin-RevId: 332814223 17 October 2020, 10:43:54 UTC
9ec9828 Fix dump file write directory PiperOrigin-RevId: 332254072 17 October 2020, 10:41:49 UTC
3e36ebe Suppress Guava-related ProGuard/R8 warnings I didn't copy-paste the whole of https://github.com/google/guava/wiki/UsingProGuardWithGuava because this line seems relevant based on our current usage. Lots of that file seems to relate to classes that are strongly discouraged on Android: https://github.com/google/guava/wiki/Android#specifics I've only added this to the `common` module, since everyone that uses ExoPlayer must depend on that. This avoids duplicating this line into every module that has a Guava dependency. Also remove some other warning suppressions that are defined in both `core` and `common`. Issue: #7904 PiperOrigin-RevId: 332203086 17 October 2020, 10:41:41 UTC
f4896d7 Replace duration strings with plurals PiperOrigin-RevId: 332014290 17 October 2020, 10:41:35 UTC
97a0df7 Support android.resource URI scheme Issue: #7866 PiperOrigin-RevId: 330736774 17 October 2020, 10:40:56 UTC
8955cd3 Clean up experimental offload Javadoc PiperOrigin-RevId: 331591005 17 October 2020, 00:17:36 UTC
8a0d52b Add update to shrinking guide to release notes 22 September 2020, 12:53:17 UTC
d386d03 Add blog posts to release notes PiperOrigin-RevId: 332940209 21 September 2020, 22:03:30 UTC
9acf1e8 Mention moving skipSilence in release note Issue: #7939 PiperOrigin-RevId: 332838586 21 September 2020, 22:03:23 UTC
a15d01d More verbose instructions for consistency PiperOrigin-RevId: 332015471 16 September 2020, 16:03:35 UTC
d1ce5f5 Update the FFmpeg extension readme to use symlinking PiperOrigin-RevId: 332012857 16 September 2020, 16:03:24 UTC
fe2bc7b Fix the FFmpeg extension build Since gradle 4.0, CMake imported libraries are bundled in the APK, so manually bundling them causes a duplication which breaks the build. Issue: #7906 PiperOrigin-RevId: 332012375 16 September 2020, 16:03:19 UTC
52826c8 Fix bug in offline DRM downloads PiperOrigin-RevId: 331955966 16 September 2020, 12:37:52 UTC
bc89a8f Depend on robolectric 4.4, which has now been released Issue: #7906 PiperOrigin-RevId: 331775990 16 September 2020, 12:37:44 UTC
3fd47b9 Add missing release note Issue: #7902 PiperOrigin-RevId: 331771187 16 September 2020, 12:37:36 UTC
8386d61 Fix OOM-is-prevented test OOM-ing :) This test is intended to check that DefaultLoadControl will cause playback to fail as "stuck buffering" rather than OOM-ing, in the case that its target buffer size is reached and playback still hasn't started. Unfortunately, the target buffer size is ~130MB, and when running on some setups an OOM actually ends up happening before this much memory is allocated. This change makes the target buffer size much smaller to avoid the problem. PiperOrigin-RevId: 331748208 16 September 2020, 12:37:26 UTC
9a01e6c Add release note entry for DRM-protected downloads PiperOrigin-RevId: 331539036 16 September 2020, 12:37:12 UTC
d2fa7b0 Fix release notes PiperOrigin-RevId: 331354102 12 September 2020, 23:03:34 UTC
8347749 Merge pull request #7894 from google/dev-v2-r2.12.0 r2.12.0 12 September 2020, 22:39:26 UTC
4ab966d Improve IMA readme 12 September 2020, 21:19:02 UTC
3f6e5ce Update IMA readme 12 September 2020, 20:28:58 UTC
a5bf3f4 Remove references to cross-protocol redirects for Cronet There's no option to enable them. This is probably a copy/paste error from DefaultHttpDataSourceFactory. PiperOrigin-RevId: 331334263 12 September 2020, 20:07:50 UTC
4f98276 Add getMediaItemCount() and getMediaItemAt(int) PiperOrigin-RevId: 331211708 11 September 2020, 22:21:08 UTC
12b0537 Clean up some lint warnings PiperOrigin-RevId: 331162350 11 September 2020, 16:40:19 UTC
a8298fa MediaItemify the IMA extension README and the ads page in dev guide PiperOrigin-RevId: 331155539 11 September 2020, 16:39:40 UTC
b6842cf Fix handling of empty ad groups at non-integer cue points Issue: #7889 PiperOrigin-RevId: 331149688 11 September 2020, 16:39:12 UTC
9fb2902 Exclude Guava transitive annotation dependencies PiperOrigin-RevId: 331148067 11 September 2020, 15:02:37 UTC
ea25729 Make BatchBufferTest allocate less memory Setting to 2x BATCH_SIZE_BYTES PiperOrigin-RevId: 331124129 11 September 2020, 12:30:33 UTC
4691aa8 Throw RuntimeException instead of Error from ExoHostedTest Throwing Error forces a test to catch Throwable (e.g. DashWidevineOfflineTest#widevineOfflineReleasedV22), which will also catch AssertionError meaning the fail() call at the end of the try block won't work. The DashWidevineOfflineTest have been broken since https://github.com/google/ExoPlayer/commit/91185500a1242b99b86b18bc9f3449d3dac1fa01 PiperOrigin-RevId: 331120894 11 September 2020, 12:30:24 UTC
5bd6111 Fix incorrect type when creating ExoPlaybackException PiperOrigin-RevId: 331027732 11 September 2020, 12:30:15 UTC
862cf26 fix typo PiperOrigin-RevId: 331025924 11 September 2020, 12:30:06 UTC
4648a41 Don't keep 100MB static buffer in test. This may remove available memory from other tests running in the same process. Instead, create the huge buffer when needed so it can be GCed immediately. PiperOrigin-RevId: 330960844 11 September 2020, 12:29:57 UTC
c75077c Release player in e2e playback tests. Not releasing the player means the playback thread keeps running and also keeps its entire allocated playback buffer. PiperOrigin-RevId: 330958821 11 September 2020, 12:29:48 UTC
a67bebc Improve DEBUG VideoProgressUpdate logging PiperOrigin-RevId: 330918689 11 September 2020, 12:29:39 UTC
52a1c79 Introduce audio offload scheduling tests PiperOrigin-RevId: 330918396 11 September 2020, 12:29:29 UTC
4d2a238 Add convenience constructor methods. When passing in ExtractorFactory instances to SimpleExoPlayer.Builder or DefaultMediaSourceFactory, we currently need to pass in one other instance (RenderersFactory or DataSource.Factory), that developers will often set to its default. To avoid specifying these defaults, these new convience methods allow to just set the ExtractorsFactory if required. PiperOrigin-RevId: 330908002 11 September 2020, 12:29:02 UTC
back to top