https://github.com/google/ExoPlayer

sort by:
Revision Author Date Message Commit Date
0ba317b Merge pull request #8816 from google/dev-v2-r2.13.3 r2.13.3 14 April 2021, 16:01:14 UTC
b34e0b2 Remove release notes item about publication intructions 14 April 2021, 15:41:46 UTC
c4a6b2e Mention publishing to Google Maven at top of release notes. 14 April 2021, 13:28:47 UTC
9fde2cf fix release notes 14 April 2021, 13:12:35 UTC
278a398 Bump version to 2.13.3 PiperOrigin-RevId: 368235728 13 April 2021, 17:30:40 UTC
b8f83ac Parse DASH forced_subtitle role #minor-release Issue: #8781 PiperOrigin-RevId: 368212289 13 April 2021, 17:14:54 UTC
f93fb5d Switch DashManifestParser to use Ascii.equalsIgnoreCase String.equalsIgnoreCase depends on the device locale and is discouraged. #minor-release PiperOrigin-RevId: 368211677 13 April 2021, 17:14:31 UTC
19121f7 Merge pull request #8764 from uvjustin:dev-v2 PiperOrigin-RevId: 367994410 13 April 2021, 10:16:04 UTC
a449d0c Upgrade IMA SDK dependency to 3.23.0 This brings in another fix for `NullPointerExceptions` within `WebView` callbacks in the IMA SDK, related to companion ads. Issue: #8447 #minor-release PiperOrigin-RevId: 367591047 12 April 2021, 13:12:13 UTC
f3c63e2 StyledPlayerView: Fix layout issues - Take centerControls padding into account to prevent switching to minimal mode too soon - Disable clipping to padding to avoid the edges of controls from being clipped as the view gets smaller Issue: #8763 PiperOrigin-RevId: 366966298 12 April 2021, 13:12:13 UTC
4fd8e79 HLS: Fix incorrect handling of byte ranges for EXT-X-MAP tags Issue: #8783 #minor-release PiperOrigin-RevId: 366265419 12 April 2021, 13:12:13 UTC
1062941 Fix SimpleExoPlayer documentation I've removed the "by default" statements, since this now depends on how the builder was configured. PiperOrigin-RevId: 366249995 12 April 2021, 13:12:12 UTC
b93395e HLS: Set initial SampleQueue start times This ensures BUFFER_FLAG_DECODE_ONLY is set on samples that are before the playback start position, in the case that the queue is created after the start position is set. #minor-release PiperOrigin-RevId: 366249188 12 April 2021, 13:12:12 UTC
f8cc83a Ffmpeg extension: Wait for channel count and sample rate When playing TrueHD streams, it's possible that the first decoded buffer is empty, and that the channel count and sample rate are still unknown. To correct for this, defer determining the format until a buffer that will actually be output from the decoder has been obtained, and only then query the channel count and sample rate. Issue: #8616 #minor-release PiperOrigin-RevId: 366246245 12 April 2021, 13:12:12 UTC
e8742b3 Use outputStreamEnded for MetadataRenderer#isEnded Issue: #8710 PiperOrigin-RevId: 366051836 12 April 2021, 13:12:07 UTC
6d0a04d Release all PlaybackStatsListener session when timeline becomes empty. Currently they are only released when the timeline becomes non-empty again or the player is released. Issue: #8778 PiperOrigin-RevId: 366041625 12 April 2021, 13:09:26 UTC
e6780bd Add back jcenter() to repositories The buildscript entry is required by com.android.tools.build:gradle:4.0.1. For other projects, it appears that org.checkerframework is in jcenter. Without this change building with gradlew is broken, at least. #minor-release PiperOrigin-RevId: 366222799 12 April 2021, 13:09:26 UTC
eb682ae Use Metadata.Entry.toString in PlaybackOutput test logging if possible Add an allowlist of Metadata.Entry implementations with stable toString overrides. PiperOrigin-RevId: 366037505 12 April 2021, 13:09:26 UTC
7e7715d Update instructions for GMaven releasing Issue: #5246 PiperOrigin-RevId: 366041182 09 April 2021, 16:29:15 UTC
1fd62c6 Merge pull request #8720 from dlafayet:tts-shear-block PiperOrigin-RevId: 365998615 09 April 2021, 16:27:31 UTC
ffb1f61 StyledPlayerControlView: Fix view measurement issue The exo_controls_background view is supposed to fill its parent, and so previously used match_parent to do this. However, if the parent uses wrap_content for its own dimensions, the constraints being specified become somewhat ambiguous. The parent is supposed to be sizing itself to wrap its children, and one of the children is supposed to be sizing itself to match the parent. Intuitively for this case, you'd hope that the layout logic would size the parent to wrap its other children, and that the match_parent child would then fill the parent with its determined size. That's not what happens, and instead the parent ends up expanding to occupy all of the space available to it. This commit sets the exo_controls_background view's dimensions to be 0dp in the layout, to stop it from influencing the size of the parent. It's then expanded to fill the parent in code. Issue: #8726 #minor-release PiperOrigin-RevId: 364868301 09 April 2021, 16:26:35 UTC
74a9bf0 Simplify handling of playback speed in StyledPlayerControlView PiperOrigin-RevId: 360404403 09 April 2021, 16:25:04 UTC
14711d1 Treat Dolby Vision as H264 in MCVR#getCodecMaxInputSize() Issue: #8705 PiperOrigin-RevId: 364821429 09 April 2021, 16:11:03 UTC
d102b93 Merge pull request #8749 from romanofranz:patch-1 PiperOrigin-RevId: 364779790 09 April 2021, 16:09:08 UTC
3d487da Add missing switch case Before this change, calling read after reaching the end of input in an Ogg file would cause an IllegalStateException. PiperOrigin-RevId: 364758873 09 April 2021, 16:08:39 UTC
aa25037 JpegExtractor: support JFIF segment preceding Exif segment #minor-release PiperOrigin-RevId: 364561115 09 April 2021, 16:07:44 UTC
65ab008 Merge pull request #8653 from dlafayet:textemphasis PiperOrigin-RevId: 364363882 09 April 2021, 16:07:08 UTC
871c24b Fix typo in styled player control view javadoc #minor-release PiperOrigin-RevId: 363915106 09 April 2021, 16:05:40 UTC
ca9af38 Add 'once' to list of devices that need SetOutputSurfaceWorkaround Issue: #8718 PiperOrigin-RevId: 363869093 09 April 2021, 16:05:13 UTC
5c722ac JpegExtractor: read GContainer and GContainerItem XMP prefixes #minor-release PiperOrigin-RevId: 363859522 09 April 2021, 16:04:39 UTC
3732eca Avoid invalid extractors in DefaultHlsExtractorFactory This change fixes playback of playlists where segments have the extension and Content-Type of JPEG pictures (although in reality) they are transport streams. File inferrence before this change will cause an exception when assuming the inferred file type is one of the allowed HLS containers. #minor-release Issue: #8733 PiperOrigin-RevId: 363641277 09 April 2021, 16:04:08 UTC
6400cc2 Upgrade IMA SDK dependency to 3.22.3 This brings in a fix for `NullPointerExceptions` within `WebView` callbacks in the IMA SDK. Issue: #8447 PiperOrigin-RevId: 363627446 09 April 2021, 16:03:26 UTC
8e0d0c4 Replace timeline reference equality checks in FakeMediaSource #minor-release PiperOrigin-RevId: 363141851 09 April 2021, 16:00:30 UTC
0d052e0 HLS: Allow audio variants to initialize the timestamp adjuster This makes HLS playback less liable to become stuck if discontinuity tags are inserted at different times across media playlists. Issue: #8700 Issue: #8372 PiperOrigin-RevId: 362903428 09 April 2021, 15:59:46 UTC
06e6391 Fix CEA-708 priority According to the spec (section 8.4.2), high numeric values represent low priorities, so we need to flip this sort. Issue: #8704 #minor-release PiperOrigin-RevId: 362558370 09 April 2021, 15:57:26 UTC
3bdfb76 Don't update the ad group count when releasing ImaAdsLoader `ImaAdsLoader` clears its `AdPlaybackState` when it's released but this could cause `AdsMediaSource` to look up information in the ad playback state that is no longer in bounds. Issue: #8693 PiperOrigin-RevId: 362556286 09 April 2021, 15:56:54 UTC
64ce86a Merge duplicate UI and Text release notes sections PiperOrigin-RevId: 362079362 09 April 2021, 15:52:03 UTC
21326e6 Fallback to inferred file types when sniffing fails If none of the extractors successfully sniff the content then we will fall back to inferred file types in the following order: - Webvtt if the media comes from a SUBTITLE EXT-X-MEDIA. - The type of media declared in the HTTP "Content-Type" header. - The type of the media according to the file extension. - Transport stream. Issue: #8700 PiperOrigin-RevId: 362519769 09 April 2021, 15:49:31 UTC
3dae045 Deflake ClippedPlaybackTest PiperOrigin-RevId: 362298115 09 April 2021, 15:49:00 UTC
39e6f66 Pass the end position of a stream to TextRenderer when marking it final In a period transition we pass the start time of the next period, for the final period we pass the duration of the period or timeline, if known. This means sideloaded subtitles now respect the end point of ClippingMediaSource and ensures that content subtitles aren't incorrectly displayed over mid-roll ads. When transitioning back into the subtitled content the subtitles still appear slightly before the video transitions, meaning the first subtitle of the content is shown with the last few frames of the ad. Resolving this in a way that doesn't break anything else requires a deeper investigation. Issue: #5317 Issue: #8456 #minor-release PiperOrigin-RevId: 361797118 09 April 2021, 15:13:10 UTC
fbdc1bb Merge pull request #8654 from abeljim:dev-v2-8435-bolditalic PiperOrigin-RevId: 361767801 09 April 2021, 15:11:47 UTC
37d5947 Use correct period-window offset for initial prepare position. MaskingMediaSource needs to resolve the prepare position set for a MaskingPeriod while the source was still unprepared to the first actual prepare position. It currently assumes that the period-window offset and the default position is zero. This assumption is correct when a PlaceholderTimeline is used, but it may not be true if the real timeline is already known (e.g. when re-preparing a live stream after a playback error). Fix this by using the known timeline at the time of the preparation. Also: - Update a test that should have caught this to use lazy re-preparation. - Change the demo app code to use the recommended way to restart playback after a BehindLiveWindowException. Issue: #8675 PiperOrigin-RevId: 361604191 09 April 2021, 15:10:26 UTC
4bf5762 Merge pull request #8677 from dlafayet:ttml PiperOrigin-RevId: 361106701 09 April 2021, 15:09:48 UTC
a67d260 Fix onPositionDiscontinuity event in CastPlayer - Avoid having two onPositionDiscontinuity events (seek and transition) sent after a seek to another media item. - Avoid triggering an onPositionDiscontinuity event after a timeline change. #minor-release PiperOrigin-RevId: 361092914 09 April 2021, 15:08:40 UTC
db60db7 Merge pull request #8662 from joakimzhang:dev-v2 PiperOrigin-RevId: 361029604 09 April 2021, 15:07:55 UTC
01d4ada Reset playback speed when live speed control becomes unused Issue: #8664 #minor-release PiperOrigin-RevId: 360877086 09 April 2021, 15:06:56 UTC
d6eb61d Merge pull request #8546 from TadejZupancic:dev-v2 PiperOrigin-RevId: 360433358 09 April 2021, 15:06:22 UTC
1a190ff Link to callback in Player getters' Javadoc PiperOrigin-RevId: 360398175 09 April 2021, 15:04:54 UTC
bcd0a91 Fall back from DTS HD to DTS #minor-release PiperOrigin-RevId: 360384540 09 April 2021, 13:10:21 UTC
8570248 Fix scrubber not reappearing correctly in some cases Issue: #8646 PiperOrigin-RevId: 360184586 09 April 2021, 13:08:49 UTC
46e156a Lint and test artifacts for Maven publication Issue: #5246 PiperOrigin-RevId: 360132205 09 April 2021, 13:05:10 UTC
e38b48a Use a debug signature config for demo apps' release variant PiperOrigin-RevId: 359724874 09 April 2021, 13:03:46 UTC
e4d5e07 Make SsaDecoder robust against absent Format items Suggested in a comment on PR Issue: #8615 PiperOrigin-RevId: 359522217 09 April 2021, 13:01:23 UTC
4364b91 Disable flaky test in ExoPlayerTest targetLiveOffsetInMedia_unknownWindowStartTime_doesNotAdjustLiveOffset is flaky on the release branch. It's not flaky on the dev-v2 branch due to recent changes to FakeClock's behaviour which aren't yet present on release-v2. 25 February 2021, 16:29:37 UTC
ce48a28 Merge pull request #8634 from google/dev-v2-r2.13.2 r2.13.2 25 February 2021, 13:15:45 UTC
c96f695 Bump version to 2.13.2 PiperOrigin-RevId: 359486817 25 February 2021, 11:51:24 UTC
734bf4c Update extensions NDK version to latest LTS version Latest LTS version is better than latest stable version because it will be supported for longer. #minor-release Issue:#8581 PiperOrigin-RevId: 359467482 25 February 2021, 09:39:00 UTC
e21b99a Merge pull request #8615 from szaboa:dev-v2-8435-ssa-font-size PiperOrigin-RevId: 359244236 24 February 2021, 18:35:59 UTC
3f8f7ba Fix conditions to enable UI actions - Ensure consistency between (Styled)PlayerControlView, PlayerNotificationManager, TimelineQueueNavigator and DefaultControlDispatcher. - Handle the case where a live stream has ended when enabling previous and next actions (window.isLive() is true and window.isDynamic is false in that case) PiperOrigin-RevId: 359063793 24 February 2021, 18:32:11 UTC
abf65e2 Fix publishing to bintray The configuration to publish to Maven seems to be incompatible with the configuration for bintray, so only enable one at once. Once the GMaven publishing flow is completely set up we can remove the exoplayerPublishEnabled constant and the first branch entirely. Issue: #5246 PiperOrigin-RevId: 359056610 24 February 2021, 18:16:32 UTC
e3adac5 Add Maven publishing support The release AAR and Android sources are included for each published artifact. Issue: #5246 Issue: #8353 #minor-release PiperOrigin-RevId: 358146555 24 February 2021, 18:15:46 UTC
90c18e4 Enable next button if window is live This behavior is consistent with DefaultControlDispatcher#dispatchNext(). #minor-release PiperOrigin-RevId: 357145076 24 February 2021, 18:14:03 UTC
2635922 Add jacoco.exec files to .gitignore #minor-release PiperOrigin-RevId: 359041513 24 February 2021, 18:08:47 UTC
e890204 Merge pull request #8539 from larryng:patch-1 PiperOrigin-RevId: 359000734 24 February 2021, 18:07:55 UTC
46995b3 Remove unused mocking in CacheWriterTest #minor-release PiperOrigin-RevId: 358998449 23 February 2021, 13:55:35 UTC
5e517f8 Read to end-of-stream for HTTP contract tests #minor-release PiperOrigin-RevId: 358847933 23 February 2021, 13:55:13 UTC
18a94aa SilenceSampleStream.readData: Handle flags-only buffers The SampleStream.readData contract is that when reading a sample with a flags-only buffer, the buffer timestamp and flags should be set and the read position should not be advanced. #minor-release PiperOrigin-RevId: 357842130 22 February 2021, 15:04:08 UTC
625c830 Fix seeking to a non-zero position in a preloaded ad item `ImaAdsLoader` will preload the first ad of a subsequent media item, but the preloaded ad might not actually play because the user could seek to a non-zero position in that media item (which could trigger playback of a midroll, not the preroll). In this case, playback would get stuck because the midroll ad expected to play after the seek would never load, because the IMA SDK expected the preroll to play first. Fix this behavior by discarding the preloaded ad break. If there isn't a seek, the transition to the next media item is still seamless. #minor-release PiperOrigin-RevId: 357682510 22 February 2021, 15:02:51 UTC
326ec96 Fix ad tag loader period index Previously it was safe to query the first period in the timeline, but now we support using the ads loader in concatenations we need to use the current period index instead. PiperOrigin-RevId: 357578003 22 February 2021, 15:01:02 UTC
c6ed561 Upgrade extensions NDK version Issue:#8581 PiperOrigin-RevId: 357563419 22 February 2021, 14:58:10 UTC
5be7d4d Don't clear audioSessionId when audio disabled Issue: #8585 PiperOrigin-RevId: 357553237 22 February 2021, 14:52:37 UTC
0ab9a21 Clarify/correct restrictions of AdsMediaSource. The source can be used in compositions (in fact, every source is automatically used in an internal composition when constructing the playlist), and there is not really a concept of top-level media source any more since the Player supports playlists. The actual restriction is that the content media source needs to have exactly one period to be able to create a SinglePeriodAdTimeline. #minor-release PiperOrigin-RevId: 357544191 22 February 2021, 14:46:35 UTC
84d7433 Revert logic to decide whether meta atom is full The previous logic was changed under the assumption that the first box inside a meta box was not always an hdlr box, but this is not true. #minor-release PiperOrigin-RevId: 357200713 22 February 2021, 14:35:54 UTC
75cc599 Add support for MP4/QuickTime non-full meta atoms PiperOrigin-RevId: 357160215 22 February 2021, 14:32:08 UTC
4b1e0fa Merge pull request #8582 from google/dev-v2-r2.13.1 r2.13.1 13 February 2021, 00:56:14 UTC
5807d2e Fix RequiresApi annotation #minor-release PiperOrigin-RevId: 357273184 12 February 2021, 22:55:02 UTC
26371ae Bump version to 2.13.1 PiperOrigin-RevId: 357219132 12 February 2021, 20:01:59 UTC
01f57c3 Fix available end time calculation for multi-period DASH live streams The available end time was accidentally substracted by the start time of the last period. To avoid similar time reference confusion in the future, also renaming many variables and methods to clearly reflect the time reference point. And to avoid constant conversion, the processManifest method also attempts to converge to time relative to the start of the window as quickly as possible. Issue: #8537 PiperOrigin-RevId: 357001624 12 February 2021, 17:19:37 UTC
295e8ba Check if keepalive is enabled before releasing sessions in DDSM.release If keepalive is disabled the existing code over-eagerly releases DrmSession instances. This is arguably OK since a (Default)DrmSession should be released before its (Default)Manager is released (since the underlying MediaDrm instance might be released when the manager is released). And if all sessions are released before the manager is released then `sessions` is empty, so the loop is a no-op. Issue: #8576 PiperOrigin-RevId: 356955308 12 February 2021, 17:19:19 UTC
d48d59b Propagate DRM config when creating ad media sources The `DrmConfiguration.sessionForClearTypes` property is often used to ensure a secure decoder is used for clear ads played in encrypted content. This is because some devices show black frames when switching decoders. Before this change the DRM config isn't propagated down when constructing the ad media source, meaning `DrmSessionManager.DRM_UNSUPPORTED` is always used, which will cause playback to switch from secure to clear decoder when transitioning to an ad break (ignoring the MediaItem `sessionForClearTypes` option. Issue: #8568 PiperOrigin-RevId: 356951124 12 February 2021, 17:19:03 UTC
ed3d1c6 Don't set playback parameters when using tunneling Issue: #4803 PiperOrigin-RevId: 356923345 12 February 2021, 17:18:34 UTC
d0dd33e Add a method to focus the 'skip ad' button, if shown Issue: #8565 PiperOrigin-RevId: 356691251 12 February 2021, 17:18:16 UTC
19ab087 Cache the last DrmSessionManager instance inside the default provider Without this a new manager is instantiated for every item in a playlist, meaning the impact of caching improvements to DefaultDrmSessionManager are reduced (since the cache doesn't persist across playlist items). With this change, playlists of items with identical DRM config will use the same manager instance (and thus share existing sessions). Issue: #8523 PiperOrigin-RevId: 356690852 12 February 2021, 17:17:58 UTC
56feb96 Handle loading the same ad more than once Also allow the player's prepared ad media period durations array to exceed the length of the loaded ad URIs array, as it's possible for the player to buffer an ad media period fully at the point where it's known that an ad is coming up but its URI is still unknown. PiperOrigin-RevId: 356249284 12 February 2021, 17:17:40 UTC
5211f06 Don't apply speed adjustment if windowStartTime is unknown. This may happen for HLS live streams without program date time information. Issue: #8560 PiperOrigin-RevId: 356227729 12 February 2021, 17:17:11 UTC
a085143 Transformer: remove SpeedProvider interface from Javadoc #minor-release PiperOrigin-RevId: 356221487 12 February 2021, 17:15:58 UTC
b100094 Merge pull request #8541 from google/dev-v2-r2.13.0 r2.13.0 04 February 2021, 20:40:16 UTC
77798e4 Avoid skipping the first decoder output buffers after speed change #minor-release PiperOrigin-RevId: 355652144 04 February 2021, 18:16:51 UTC
7fb166b Finalize release notes for 2.13.0 PiperOrigin-RevId: 355621265 04 February 2021, 16:20:31 UTC
045048f Fall back to AVC/HEVC for Dolby Vision levels 10-13 Before, the level was set to null in this case. MediaCodecUtil.getCodecProfileAndLevel() was therefore returning null and the fallback to AVC/HEVC was not enabled in MediaCodecVideoRenderer. Issue:#8530 PiperOrigin-RevId: 355574499 04 February 2021, 16:19:46 UTC
74ade6f Merge branch 'release-v2' into dev-v2-r2.13.0 04 February 2021, 00:43:20 UTC
bad6506 Merge branch 'release-v2' into dev-v2-r2.13.0 04 February 2021, 00:40:10 UTC
95d9060 Suppress SwitchIntDef warning where it makes sense In both cases it's deliberate that all excluded constants should use the default branch. Furthermore, there are quite a lot of excluded constants missing, so it's probably better to suppress the warning than to include them all. #minor-release PiperOrigin-RevId: 355426749 04 February 2021, 00:32:03 UTC
6bcc679 Fix gradle conflict resolution for Cronet tests This resolves the following constraint resolution issue when running our release script: > Cannot find a version of 'org.chromium.net:cronet-api' that satisfies the version constraints: Dependency path 'com.google.android.exoplayer:extension-cronet:unspecified' --> 'com.google.android.gms:play-services-cronet:17.0.0' --> 'org.chromium.net:cronet-api:72.3626.96' Constraint path 'com.google.android.exoplayer:extension-cronet:unspecified' --> 'org.chromium.net:cronet-api:{strictly 72.3626.96}' because of the following reason: debugRuntimeClasspath uses version 72.3626.96 Dependency path 'com.google.android.exoplayer:extension-cronet:unspecified' --> 'org.chromium.net:cronet-embedded:76.3809.111' --> 'org.chromium.net:cronet-common:76.3809.111' --> 'org.chromium.net:cronet-api:76.3809.111' #minor-release PiperOrigin-RevId: 355414968 04 February 2021, 00:31:57 UTC
b879869 Add Transformer "Getting started" page #minor-release PiperOrigin-RevId: 355381610 04 February 2021, 00:31:46 UTC
42d3bb4 Refine ProGuard config workaround for Function This is a more targeted workaround, which still allows for the containing package name to be obfuscated. #minor-release PiperOrigin-RevId: 355381201 03 February 2021, 15:49:10 UTC
b419d0a Improve EventLogger static metadata formatting #minor-release PiperOrigin-RevId: 355203044 03 February 2021, 15:49:04 UTC
7925a90 Release notes tweaks for 2.13.0 * Move cherrypicked changes from dev-v2 to 2.13.0 * Use a bulleted list instead of comma-separated. * Standardise everything into present, imperative sentences. * Remove a couple of mixed-font words (I left cases with a separating apostrophe, as these seemed visually clearer). * Merge multiple issue links into a single set of parentheses. #minor-release PiperOrigin-RevId: 355180143 03 February 2021, 15:48:59 UTC
b4a9c75 Document that `DrmSessionManagerProvider` doesn't call `DSM#prepare()` #minor-release PiperOrigin-RevId: 355159635 03 February 2021, 15:48:53 UTC
71f585f Fix ProGuard configuration for 2.13 Note: We only support pro-guard on a best effort basis, and developers should use R8 whenever possible. #minor-release PiperOrigin-RevId: 355129695 02 February 2021, 13:07:39 UTC
back to top