Commit graph

978 commits

Author SHA1 Message Date
andrewlewis
e0c9165270 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
2020-10-20 22:16:12 +01:00
krocard
0de938c4aa 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
2020-10-20 22:16:12 +01:00
bachinger
2b6a9a346a Use Math.round(double) to avoid result being limited to Integer.MAX_INT
Issue: #8067
PiperOrigin-RevId: 337122011
2020-10-20 22:16:12 +01:00
ibaker
a635bdd4ba 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
2020-10-20 22:16:12 +01:00
Oliver Woodman
6611ac48c5 Add a way to override ad media MIME types
Issue: #7961
PiperOrigin-RevId: 337069152
2020-10-20 22:16:12 +01:00
andrewlewis
53c4a393f3 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
2020-10-20 22:16:12 +01:00
kim-vde
8f04968fb1 Merge pull request #7378 from shenwill:dev-v2
PiperOrigin-RevId: 336875300
2020-10-20 22:16:12 +01:00
olly
3149dd0ffc 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
2020-10-20 22:16:10 +01:00
insun
1e315e47d6 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
2020-10-20 22:11:34 +01:00
aquilescanta
5b0b4479ae 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
2020-10-17 12:18:32 +01:00
kimvde
bddaaf022c Ignore negative payload size in TS PesReader
Issue: #8005
PiperOrigin-RevId: 335625992
2020-10-17 12:18:05 +01:00
kimvde
1cca9ffd01 Add search bytes parameter to TsExtractor
Context: Issue: #7988
PiperOrigin-RevId: 335608610
2020-10-17 12:17:42 +01:00
andrewlewis
88abe26ec3 Allow apps to add a VideoAdPlayerCallback
Issue: #7944
PiperOrigin-RevId: 335012643
2020-10-17 12:16:39 +01:00
ibaker
13d8860221 Tweak null-checking in TextRenderer#getNextEventTime()
`subtitle` is only guaranteed to be non-null if
`nextSubtitleEventIndex != C.INDEX_UNSET`. The null check added in
0efec5f6c1
was too early.

Issue: #8017
PiperOrigin-RevId: 334777742
2020-10-17 12:09:20 +01:00
ibaker
b8c8ce0ee0 Use Mp4WebvttDecoder for WebVTT content in DASH MP4 containers
This was broken by 74a9d8f680
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
2020-10-17 12:09:13 +01:00
ibaker
bd312ec906 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[]):
ce2e6e2fd6

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 ce2e6e2fd6
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
2020-10-17 11:53:40 +01:00
andrewlewis
824b2a7305 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
2020-10-17 11:53:06 +01:00
samrobinson
89cd796bf6 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
2020-10-17 11:52:45 +01:00
andrewlewis
1bdccd4bfb 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
2020-10-17 11:52:12 +01:00
Oliver Woodman
9819664bd1 Merge pull request #7798 from yoobi:trackSelectionView
PiperOrigin-RevId: 333751261
2020-10-17 11:51:53 +01:00
kimvde
57f11d1556 Parse TLEN duration in Mp3Extractor
Issue: #7949
PiperOrigin-RevId: 333733615
2020-10-17 11:51:36 +01:00
samrobinson
973d23543e Add support for mp2 boxes.
Issue: #7967
PiperOrigin-RevId: 333709003
2020-10-17 11:49:06 +01:00
tonihei
93948471c8 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.

652c2f9c18 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
2020-10-17 11:47:27 +01:00
Oliver Woodman
1850a918f1 Merge pull request #7938 from bennettpeter:pullreq-ssa-subtitles
PiperOrigin-RevId: 332814223
2020-10-17 11:43:54 +01:00
ibaker
3e36ebe28e 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
2020-10-17 11:41:41 +01:00
kimvde
97a0df77f6 Support android.resource URI scheme
Issue: #7866
PiperOrigin-RevId: 330736774
2020-10-17 11:40:56 +01:00
olly
d386d03b11 Add blog posts to release notes
PiperOrigin-RevId: 332940209
2020-09-21 23:03:30 +01:00
bachinger
9acf1e8d10 Mention moving skipSilence in release note
Issue: #7939
PiperOrigin-RevId: 332838586
2020-09-21 23:03:23 +01:00
olly
3fd47b92e6 Add missing release note
Issue: #7902
PiperOrigin-RevId: 331771187
2020-09-16 13:37:36 +01:00
christosts
9a01e6cf1e Add release note entry for DRM-protected downloads
PiperOrigin-RevId: 331539036
2020-09-16 13:37:12 +01:00
olly
d2fa7b0217 Fix release notes
PiperOrigin-RevId: 331354102
2020-09-13 00:03:34 +01:00
bachinger
4f982763cf Add getMediaItemCount() and getMediaItemAt(int)
PiperOrigin-RevId: 331211708
2020-09-11 23:21:08 +01:00
andrewlewis
b6842cf0f0 Fix handling of empty ad groups at non-integer cue points
Issue: #7889
PiperOrigin-RevId: 331149688
2020-09-11 17:39:12 +01:00
Oliver Woodman
29463cfc4f Set release date 2020-09-09 15:19:07 +01:00
Oliver Woodman
7e7a33a851 Merge commit '99dbb76455a21f19e0db4399101039b33a6057a0' into dev-v2-r2.12.0 2020-09-07 20:46:16 +01:00
andrewlewis
56e622a2e5 Fix release notes link
PiperOrigin-RevId: 329665766
2020-09-07 20:40:51 +01:00
andrewlewis
47561f200f Fix handling of incompatible VPAID ads
Issue: #7832
PiperOrigin-RevId: 329497598
2020-09-07 20:40:13 +01:00
olly
17b370d00c Allow upstream discards from the SampleQueue by time.
Add a SampleQueue method to discard from the write side of the queue by timestamp

PiperOrigin-RevId: 329303714
2020-09-07 20:39:46 +01:00
Oliver Woodman
9778898b47 Merge branch 'dev-v2' into dev-v2-r2.12.0 2020-08-27 22:38:30 +01:00
olly
e1c3da2a74 Set 2.12 release date & merge in some recent changes
PiperOrigin-RevId: 328747057
2020-08-27 22:30:28 +01:00
Oliver Woodman
db63334f94 Clean up release notes 2020-08-27 12:51:11 +01:00
Oliver Woodman
79e64bc613 Clean up release notes 2020-08-27 12:18:53 +01:00
olly
94cff6ba50 Clean up release notes for 2.12: Core part 2
PiperOrigin-RevId: 328549736
2020-08-27 12:06:11 +01:00
olly
eba93b0d5e Clean up release notes for 2.12: Core part 1
PiperOrigin-RevId: 328549086
2020-08-27 12:06:01 +01:00
kim-vde
bcad98b9ff Merge pull request #7667 from willtrking:dev-v2-mkv-dovi
PiperOrigin-RevId: 328536503
2020-08-26 16:40:35 +01:00
andrewlewis
4b0e39e4b9 Add an event for the audio position advancing
Currently the audio renderer can become ready before the AudioTrack
actually has enough data to play something, which means that the
player may transition to the ready state before audio starts
playing. This makes the player's current state transition not very
useful for detecting when audio actually starts playing.

This change adds a new event to notify apps when the audio position
is increasing after a pause or seek/flush/reset event, and includes
an estimate of the system time at which audio playout started.

Issue: #7577
PiperOrigin-RevId: 327810040
2020-08-26 16:39:18 +01:00
olly
4c894c80ba Clean up release notes for 2.12: Analytics
PiperOrigin-RevId: 327791211
2020-08-21 12:55:37 +01:00
olly
505511a761 Clean up release notes for 2.12: Audio
PiperOrigin-RevId: 327790491
2020-08-21 12:55:37 +01:00
olly
185be99d61 Split trivial changes from 2.12 into a 2.11.8 release
PiperOrigin-RevId: 327599049
2020-08-21 12:51:05 +01:00
olly
d0d5e8ec8f Clean up release notes for 2.12: Start fixing core notes
PiperOrigin-RevId: 327203178
2020-08-21 12:48:48 +01:00