13213 Commits

Author SHA1 Message Date
olly
a9edb207a3 Fix 1 ErrorProneStyle finding:
* @CryptoType is a TYPE_USE annotation, so should appear after modifiers and directly before the type.

PiperOrigin-RevId: 418814902
2022-01-04 17:17:13 +00:00
olly
a57245e782 Fix 1 ErrorProneStyle finding:
* @Override is not a TYPE_USE annotation, so should appear before any modifiers and after Javadocs. @CryptoType is a TYPE_USE annotation, so should appear after modifiers and directly before the type.

PiperOrigin-RevId: 418811744
2022-01-04 14:00:44 +00:00
bachinger
aa467f52e4 Make sure CastPlayer calls onIsPlaying if required
Before this change we checked whether the playback state and playWhenReady have changed when the state from the cast device arrived. If we detected such a change we called the listener callback `onIsPlayingChanged`. However, in the case when `setPlayWhenReady(boolean)` is called on 'CastPlayer', we mask the change in `playWhenReady`, then send the play/pause request to the cast device and when the state from the cast device arrives we never detect a change because we have already masked `playWhenReady`.

This change now moves the check for `isPlaying` to the same place where the state and playWhenReady is updated, so we call the `onIsPlayingChanged` callback in either case, when masking or when a changed state from the server arrives.

Issue: google/ExoPlayer#9792
PiperOrigin-RevId: 418483509
2022-01-04 14:00:44 +00:00
aquilescanta
e54e02fdcf Pre-allocate availableAllocations to prevent a re-size in release
PiperOrigin-RevId: 418022431
2022-01-04 14:00:44 +00:00
hschlueter
8b11902752 Throw when inferred sample MIME type is not supported by the muxer.
This is better than silently dropping tracks as done previously. Later,
we will implement fallback to transcoding to a supported MIME type.

PiperOrigin-RevId: 418006258
2022-01-04 14:00:44 +00:00
olly
de191770d5 Fix 1 ErrorProneStyle finding:
* These grouping parentheses are unnecessary; it is unlikely the code will be misinterpreted without them

PiperOrigin-RevId: 417988060
2022-01-04 14:00:23 +00:00
huangdarwin
624338ccbd Transformer GL: Document lack of support for non-square pixels.
This may one day change, but at least for now, we don't intend
to support non-square pixels.

PiperOrigin-RevId: 417983516
2022-01-04 13:06:39 +00:00
ibaker
fa419f21a9 Fix deprecated reference to Player.EventListener in the dev guide
#minor-release

PiperOrigin-RevId: 417961565
2022-01-04 13:01:33 +00:00
ibaker
086688ed3c Fix reference to deprecated ExoPlayer.retry() method in dev guide.
#minor-release

PiperOrigin-RevId: 417959956
2022-01-04 12:56:37 +00:00
ibaker
5e8d1eb7f3 Add MediaSource.Factory and deprecate MediaSourceFactory
This more closely matches the pattern we have for all implementations
except DefaultMediaSourceFactory (e.g. ProgressiveMediaSource.Factory)
and other factory interfaces like (Http)DataSource.Factory.

PiperOrigin-RevId: 417826803
2022-01-04 12:51:47 +00:00
ibaker
88fe829633 Mark FakeMediaSourceFactory final
There's no need to extend this class. Factories for subclasses of
FakeMediaSource will need to re-implement createMediaSource, at which
point they basically need to re-implement the whole factory interface.

PiperOrigin-RevId: 417817499
2022-01-04 12:47:06 +00:00
tonihei
4c343ba0fc Add workaround for missing <type>aar</type> tags in POM
There is an open Gradle bug that dependencies with AARs are not marked
as such in the created POM files (https://github.com/gradle/gradle/issues/3170).

This causes issues building ExoPlayer with Maven POMs only.
(Issue: google/ExoPlayer#8353).

This change adds the workaround suggested on the Gradle bug until
the bug is fixed. As we have a mixture of JAR and AAR dependencies,
we need to maintain a lookup table to know which dependencies have AARs.
The current code throws when a new dependency is added and it's not
classified.

#minor-release

PiperOrigin-RevId: 417797407
2022-01-04 12:37:22 +00:00
andrewlewis
ad7c9e25a4 Switch naming convention for shaders
Switch to using sentence-case naming convention but with one character prefixes for different types.

This is a no-op change.

PiperOrigin-RevId: 417791624
2022-01-04 12:32:33 +00:00
hschlueter
4240da5966 Add TransformationRequest.
PiperOrigin-RevId: 417786661
2022-01-04 12:27:53 +00:00
tonihei
5c8b5e5bd0 Merge pull request #9777 from TiVo:p-optimize-timestampadjuster-wait
PiperOrigin-RevId: 417769018
2022-01-04 12:23:05 +00:00
Paul Woitaschek
b28f5ca413
Refactor unintuitive lateinit usage 2021-12-28 22:54:19 +01:00
ibaker
bb1357b678 Delete deprecated methods from MediaSourceFactory
Some have been deprecated since 2.13.0
([commit](5b9fa7d7d9)):
* `setDrmSessionManager(DrmSessionManager)`
* `setDrmHttpDataSourceFactory(HttpDataSource.Factory)`
* `setDrmUserAgent(String)`

And the rest have been deprecated since 2.12.0
([commit](d1bbd3507a)):
* `setStreamKeys(List<String>)`
* `createMediaSource(Uri)`

PiperOrigin-RevId: 417622794
2021-12-21 17:26:06 +00:00
claincly
bc891273b2 Rename MediaCodecAdapterWrapper to Codec.
Move static factories into a separate class and make it implement an interface
that will let tests customize encoder/decoder creation.

PiperOrigin-RevId: 417610825
2021-12-21 17:22:17 +00:00
ibaker
7d83c979a6 Include role and selection flags when logging a track's Format
Inspired by my investigation of Issue: google/ExoPlayer#9797

#minor-release

PiperOrigin-RevId: 417609076
2021-12-21 17:18:28 +00:00
tonihei
65c444538b Rename HLS master playlist to multivariant playlist
The spec renamed this type of playlist in the latest revision
to use a more inclusive technical term (see
https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-10)

PiperOrigin-RevId: 417560274
2021-12-21 17:14:42 +00:00
ibaker
e3548f267c Migrate usages of deprecated MediaSourceFactory methods
PiperOrigin-RevId: 417428182
2021-12-21 17:10:54 +00:00
ibaker
46ab94bd41 Rename PlayerView to LegacyPlayerView in media3
The old name is kept in exoplayer2.

PiperOrigin-RevId: 417378759
2021-12-20 13:53:35 +00:00
ibaker
86ca5b8ec1 Add AdOverlayInfo.Builder and tweak @Purpose IntDef definition
PiperOrigin-RevId: 417378468
2021-12-20 13:53:35 +00:00
andrewlewis
7cd1a1d5de Include images in dackka output
PiperOrigin-RevId: 416848472
2021-12-20 13:53:35 +00:00
bachinger
e5ec6b31b2 Store adPlaybackStates and shared periods by period UID
To support multi-period content we need to store AdPlaybackStates and
SharedMediaPeriod by the periodUid as a key. While after this no-op CL,
we still only support single-period content, storing these resources by
periodUid is the ground work for multi-period support being added in an
follow-up CL.

PiperOrigin-RevId: 416836445
2021-12-20 13:52:46 +00:00
ibaker
6cce3dfb50 Remove references to MediaSourceFactory#setStreamKeys from dev guide
This method has been deprecated since 2.12.0:
d1bbd3507a

PiperOrigin-RevId: 416827149
2021-12-20 12:58:24 +00:00
ibaker
c1f878deb1 Move DefaultMediaSourceFactory.AdsLoaderProvider to AdsLoader.Provider
Keep the old interface deprecated so any app code implementing it by
name (rather than with a lambda) will continue to work.

PiperOrigin-RevId: 416816566
2021-12-20 12:54:56 +00:00
ibaker
3f5304b891 Fix StyledPlayerControlView reference in demo app's PlayerActivity
PiperOrigin-RevId: 416809105
2021-12-20 12:51:22 +00:00
andrewlewis
1f69ab2d8c Update DEVSITE_TENANT d.android.com location
PiperOrigin-RevId: 416795667
2021-12-20 12:47:45 +00:00
ibaker
3aae0cbff3 Fix some comment references in StyledPlayer(Control)View
These comments inadvertantly refer to types and drawables associated
with Player(Control)View.

PiperOrigin-RevId: 416794967
2021-12-20 12:44:02 +00:00
hschlueter
f2d337c33d Convert PlaybackExceptions to TransformationExceptions.
Transformer uses ExoPlayer for reading input. Apps using Transformer
do not need to know this. So, PlaybackExceptions are converted to
TransformationExceptions with the same message, cause and error code.

The corresponding IO error codes are copied from PlaybackException.

PiperOrigin-RevId: 416793741
2021-12-20 12:40:22 +00:00
tonihei
9d463725fb Exclude last chunk when applying fraction for live quality increase
We check the fraction of the available duration we have already
buffered for live streams to see if we can increase the quality.
This fraction compares against the overall available media duration
at the time of the track selection, which by definition can't include
one of the availabe chunks (as this is the one we want to load next).

That means, for example, that for a reasonable live offset of 3 segments
we can at most reach a fraction of 0.66, which is less than our default
threshold of 0.75, meaning we can never switch up.

By subtracting one chunk duration from the available duration, we make
this comparison fair again and allow all live streams (regardless of
live offset) to reach up to 100% buffered data (which is above our
default value of 75%), so that they can increase the quality.

Issue: google/ExoPlayer#9784
PiperOrigin-RevId: 416791033
2021-12-20 12:36:43 +00:00
hschlueter
8bb53b409a Remove ExoPlaybackException dependency from sample pipelines.
Use TransformationException for codec and audio processor
initialization problems instead.

PiperOrigin-RevId: 416765510
2021-12-20 12:33:13 +00:00
hschlueter
66adeabb1b Use C.LENGTH_UNSET for resolution parameter instead of Format.NO_VALUE.
Format.NO_VALUE should only be used for Format fields.

PiperOrigin-RevId: 416646415
2021-12-16 10:20:46 +00:00
ibaker
4bf7ffd9a7 Move ImaAdsLoader Player.Listener implementation to internal class
PiperOrigin-RevId: 416613846
2021-12-16 10:17:18 +00:00
bachinger
9316b4f49b Add helper method to split the AdPlaybackState
PiperOrigin-RevId: 416543473
2021-12-16 10:13:45 +00:00
andrewlewis
66f7657ac5 Upgrade dackka to latest build
PiperOrigin-RevId: 416521346
2021-12-15 12:29:18 +00:00
christosts
b5206b8e05 Add getMetrics() in MediaCodecAdapter
Before the introduction of the MediaCodecAdapter, users could get
access directly to the MediaCodec instance from
MediaCodecRenderer.getCodec() and then retrieve the codec metrics.

This change exposes MediaCodec.getMetrics() on the MediaCodecAdapter.

Issue: google/ExoPlayer#9766

#minor-release

PiperOrigin-RevId: 416343023
2021-12-15 12:22:35 +00:00
ibaker
586dd355d1 Move Player(Control)View resource IDs into separate _legacy.xml files
This is a no-op because all the <resource> elements from these XML
files are effectively concatenated together during building.

PiperOrigin-RevId: 416326534
2021-12-15 12:19:19 +00:00
tonihei
a6c26d04fa Remove condition that is always false.
The same condition is checked further up on L497 already.

PiperOrigin-RevId: 416324687
2021-12-14 17:54:47 +00:00
bachinger
f038258522 Add AdPlaybackStateUpdater
PiperOrigin-RevId: 416314200
2021-12-14 17:51:03 +00:00
hschlueter
5bd22c3ab7 Use TransformationException for error listener parameter.
PiperOrigin-RevId: 416307600
2021-12-14 17:47:23 +00:00
Ian Baker
3dee8e4993 Merge pull request #9767 from TiVo:p-nearest-sync-track-index-bug
PiperOrigin-RevId: 416289790
2021-12-14 16:15:36 +00:00
tonihei
27b52bca41 Rollback of bf1224186c
*** Original commit ***

Rollback of 0aa23b08b1

*** Original commit ***

Add capability flags for hardware and decoder support

Issue: google/ExoPlayer#9565

***

***

PiperOrigin-RevId: 416285603
2021-12-14 16:10:42 +00:00
tonihei
c5d94c8667 Rollback of 3a7f7e81d7
*** Original commit ***

Rollback of 27f905f571

*** Original commit ***

Don't sort decoders by format support in supportsFormat

This is a no-op change that updates supportsFormat to use the
decoder list before it's reordered by format support. Instead,
supportsFormat iterates through the decoders listed in their
original priority order as specified by the MediaCodecSelector.
The end result is identical.

This is n...

***

PiperOrigin-RevId: 416269130
2021-12-14 16:06:46 +00:00
olly
3a7f7e81d7 Rollback of 27f905f571
*** Original commit ***

Don't sort decoders by format support in supportsFormat

This is a no-op change that updates supportsFormat to use the
decoder list before it's reordered by format support. Instead,
supportsFormat iterates through the decoders listed in their
original priority order as specified by the MediaCodecSelector.
The end result is identical.

This is necessary groundwork for a subsequent change that will
indicate in Capabilities whether the decoder that suppports the
format is the primary one as specifi

***

PiperOrigin-RevId: 416170612
2021-12-14 16:02:56 +00:00
olly
bf1224186c Rollback of 0aa23b08b1
*** Original commit ***

Add capability flags for hardware and decoder support

Issue: google/ExoPlayer#9565

***

PiperOrigin-RevId: 416170329
2021-12-14 15:58:17 +00:00
hschlueter
9cdcc58770 Add TransformationException with initial subset of error codes.
TransformationException will be used for all errors that occur
during a transformation.

PiperOrigin-RevId: 416032504
2021-12-14 10:30:35 +00:00
christosts
40bd99a3cd Load the Spatializer API with reflection
This change adds a delegate class that loads and forwards calls
to a Spatializer with reflection, so that we can use the Spatializer
API before we update the compile SDK target to 32.

PiperOrigin-RevId: 416027289
2021-12-14 10:30:35 +00:00
ibaker
95a750cefd Change DefaultHttpDataSourceTest to an instrumentation test
The Robolectric implementation of HttpURLConnection forwards to the JRE
implementation [1], which behaves differently to the Android one
available on devices and emulators. For these tests to be a realistic
test of the HTTP stack used in real playbacks we can't use Robolectric.

Similar to df0e89c167

[1] https://github.com/robolectric/robolectric/issues/6769#issuecomment-943556156

PiperOrigin-RevId: 416013662
2021-12-14 10:30:35 +00:00