13008 Commits

Author SHA1 Message Date
tonihei
40d9838315 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
2022-01-05 10:41:06 +00:00
ibaker
691f9c50cf Migrate usages of deprecated MediaSourceFactory methods
PiperOrigin-RevId: 417428182
2022-01-05 10:40:02 +00:00
ibaker
9dae5fd2c0 Rename PlayerView to LegacyPlayerView in media3
The old name is kept in exoplayer2.

PiperOrigin-RevId: 417378759
2022-01-05 10:38:50 +00:00
ibaker
d0041d4666 Add AdOverlayInfo.Builder and tweak @Purpose IntDef definition
PiperOrigin-RevId: 417378468
2022-01-05 10:37:50 +00:00
ibaker
1c3cf6938e Add explicit protected keywords to fields in MediaControllerImplBase
The whole class is package-private, so this is a no-op, but it makes the
intent of the visibililty more clear.

PiperOrigin-RevId: 417377659
2022-01-05 10:36:39 +00:00
andrewlewis
d159634b5e Fix location of common module doc-files
For the media3 codebase the timeline images need to be under the common module.

Verified results in an empty commit for ExoPlayer GitHub.

PiperOrigin-RevId: 416850853
2022-01-05 10:35:40 +00:00
andrewlewis
7aac5e2500 Include images in dackka output
PiperOrigin-RevId: 416848472
2022-01-05 10:34:41 +00:00
bachinger
f352836bde 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
2022-01-05 10:33:39 +00:00
ibaker
2fad15a815 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
2022-01-05 10:32:22 +00:00
ibaker
a24ffbd21b Fix StyledPlayerControlView reference in demo app's PlayerActivity
PiperOrigin-RevId: 416809105
2022-01-05 10:31:28 +00:00
andrewlewis
4c71e06079 Update DEVSITE_TENANT d.android.com location
PiperOrigin-RevId: 416795667
2022-01-05 10:30:28 +00:00
ibaker
de0f129f21 Fix some comment references in StyledPlayer(Control)View
These comments inadvertantly refer to types and drawables associated
with Player(Control)View.

PiperOrigin-RevId: 416794967
2022-01-05 10:29:23 +00:00
hschlueter
991a22ec75 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
2022-01-05 10:28:27 +00:00
tonihei
e76925c6fc 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
2022-01-05 10:27:32 +00:00
hschlueter
a8dbc744db Remove ExoPlaybackException dependency from sample pipelines.
Use TransformationException for codec and audio processor
initialization problems instead.

PiperOrigin-RevId: 416765510
2022-01-05 10:26:36 +00:00
ibaker
1633ad12a3 Bump annotation-experimental to 1.2.0
PiperOrigin-RevId: 416753081
2022-01-05 10:25:34 +00:00
hschlueter
e094ceb079 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
2022-01-05 10:24:36 +00:00
ibaker
7b5dcb3786 Move ImaAdsLoader Player.Listener implementation to internal class
PiperOrigin-RevId: 416613846
2022-01-05 10:23:23 +00:00
bachinger
47652c485b Add helper method to split the AdPlaybackState
PiperOrigin-RevId: 416543473
2022-01-05 10:22:26 +00:00
andrewlewis
2f1e06da60 Upgrade dackka to latest build
PiperOrigin-RevId: 416521346
2022-01-05 10:21:23 +00:00
jaewan
df2e37acbe Utilize CommandButton for customizing Notification
PiperOrigin-RevId: 416421456
2022-01-05 10:19:09 +00:00
christosts
531ff0e19d 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
2022-01-05 10:17:49 +00:00
ibaker
69d83a28bb 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
2022-01-05 10:16:51 +00:00
tonihei
89b47413af Remove condition that is always false.
The same condition is checked further up on L497 already.

PiperOrigin-RevId: 416324687
2022-01-05 10:15:24 +00:00
ibaker
35bd0f46a4 Update the session demo app to refer to exo_styled drawables
This app uses the StyledPlayerView, so it should use the styled_
drawables.

PiperOrigin-RevId: 416315889
2022-01-05 10:14:25 +00:00
bachinger
51237e8aef Add AdPlaybackStateUpdater
PiperOrigin-RevId: 416314200
2022-01-05 10:12:24 +00:00
hschlueter
cdc0e2e618 Use TransformationException for error listener parameter.
PiperOrigin-RevId: 416307600
2022-01-05 10:11:14 +00:00
tonihei
039b9154e9 Merge pull request #9767 from TiVo:p-nearest-sync-track-index-bug
PiperOrigin-RevId: 416289790
2022-01-05 10:10:14 +00:00
tonihei
be01fc7651 Rollback of f713ca6d13
*** Original commit ***

Rollback of 3c4c1f4774

*** Original commit ***

Add capability flags for hardware and decoder support

Issue: google/ExoPlayer#9565

***

***

PiperOrigin-RevId: 416285603
2022-01-05 10:08:14 +00:00
tonihei
38a0f60b8e Rollback of de83033ffc
*** Original commit ***

Rollback of d7867800dc

*** 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
2022-01-05 10:07:15 +00:00
olly
de83033ffc Rollback of d7867800dc
*** 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
2022-01-05 10:05:38 +00:00
olly
f713ca6d13 Rollback of 3c4c1f4774
*** Original commit ***

Add capability flags for hardware and decoder support

Issue: google/ExoPlayer#9565

***

PiperOrigin-RevId: 416170329
2022-01-05 10:04:26 +00:00
hschlueter
b8ccd6197b Add TransformationException with initial subset of error codes.
TransformationException will be used for all errors that occur
during a transformation.

PiperOrigin-RevId: 416032504
2022-01-05 10:03:13 +00:00
christosts
d90f5f37ef 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
2022-01-05 10:01:59 +00:00
ibaker
a4f67ccf6a 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 d1e12dcddf

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

PiperOrigin-RevId: 416013662
2022-01-05 10:00:46 +00:00
ibaker
075ee7fb3d Bump Guava version to 31.0.1
The version in the android tree was updated in
8337762fe0

PiperOrigin-RevId: 416011494
2022-01-05 09:59:41 +00:00
ibaker
a7a0ef934e Bump Guava version to 31.0.1
The version in the android tree was updated in
8337762fe0

PiperOrigin-RevId: 415999600
2022-01-05 09:58:31 +00:00
ibaker
204383d013 Bump Guava version to 31.0.1
The version in the android tree was updated in
8337762fe0

PiperOrigin-RevId: 415988097
2022-01-05 09:57:02 +00:00
ibaker
1fa69a9080 Make DecoderCountersUtil error message clearer
By including the full counters in the failure message we have a clearer
insight into the cause of the failure.

PiperOrigin-RevId: 415982732
2022-01-05 09:55:44 +00:00
jaewan
8c837c6e2d Clean up resources
PiperOrigin-RevId: 415937814
2022-01-05 09:54:40 +00:00
huangdarwin
20fb153cbf Use static asserts more often.
PiperOrigin-RevId: 415529751
2022-01-05 09:53:29 +00:00
John BoWeRs
1852c79ba4 Add support for uppercase hex template number formatting as well as lowercase 2022-01-04 12:43:14 -07:00
olly
1380655747 Parse CryptoInfo from simpleTag and set it into DrmInitData.
PiperOrigin-RevId: 418960700
2022-01-04 17:17:29 +00:00
ibaker
5370332fcc DASH: Stop interpreting main track role as SELECTION_FLAG_DEFAULT
The `main` role distinguishes a track from an `alternate`, but unlike
`SELECTION_FLAG_DEFAULT` it doesn't imply the track should be selected
unless user preferences state otherwise. e.g. in the case of a text
track, the player shouldn't enable subtitle rendering just because a
`main` text track is present in the manifest.

The `main`/`alternate` distinction is still available through
`Format.roleFlags` and the `ROLE_FLAG_MAIN` and `ROLE_FLAG_ALTERNATE`
values.

This behaviour was originally [added in 2.2.0](7f967f3057),
however at the time the `C.RoleFlags` IntDef did not exist. The IntDef
was [added in 2.10.0](a86a9137be).

PiperOrigin-RevId: 418937747
2022-01-04 17:17:29 +00:00
hschlueter
47f4d90515 Use TransformationException for GL errors.
PiperOrigin-RevId: 418820557
2022-01-04 17:17:29 +00:00
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