Commit graph

15145 commits

Author SHA1 Message Date
tonihei
3b2b8d528d Ensure TrackSelectionParameters overrides match existing groups
The overrides specified by a MediaController may not use the exact
same TrackGroup instances as known to the Player because the groups
have been bundled to and from the controller. This bundling may
alter the instance slightly depending on the version used on each
side of the communication and the fields set (e.g. Format.metadata
is not supported for bundling).

This issue can be solved by creating unique track group ids for
each group on the session side before bundling. On the way back,
the groups in the track selection parameters can be mapped backed
to their original instances based on this id.

Issue: androidx/media#296
PiperOrigin-RevId: 523986626
(cherry picked from commit 1c557e2fd1)
2023-04-18 15:17:40 +01:00
rohks
ba6ccee802 Update colr box values to be overridden by bitstream boxes
#minor-release

PiperOrigin-RevId: 523983688
(cherry picked from commit 596a7c7033)
2023-04-18 15:16:49 +01:00
rohks
ade8831166 Bump version numbers to Media3 1.0.1 and ExoPlayer 2.18.6
#minor-release

PiperOrigin-RevId: 523959161
(cherry picked from commit e033dbac03)
2023-04-18 15:16:49 +01:00
rohks
1076756d1c Enable multidex for demo-gl app
#minor-release

PiperOrigin-RevId: 523708424
(cherry picked from commit 81fd9d2867)
2023-04-18 15:16:49 +01:00
bachinger
eb322b7c2e Precedence for app provided media button receiver
This change selects the best suited media button receiver
component and pending intent when creating the legacy
session. This is important to ensure that a service can
be started with a media button event from BT headsets
after the app has been terminated.

The `MediaSessionLegacyStub` selects the best suited
receiver to be passed to the `MediaSessionCompat`
constructor.

1. When the app has declared a broadcast receiver for
 `ACTION_MEDIA_BUTTON` in the manifest, this broadcast
 receiver is used.
2. When the session is housed in a service, the service
 component is used as a fallback.
3. As a last resort a receiver is created at runtime.

When the `MediaSessionLegacyStub` is released, the media
button receiver is removed unless the app has provided a
media button receiver in the manifest. In this case we
assume the app supports resuming when the BT play intent
arrives at `MediaSessionService.onStartCommand`.

Issue: androidx/media#167
Issue: androidx/media#27
Issue: androidx/media#314
PiperOrigin-RevId: 523638051
(cherry picked from commit e54a934398)
2023-04-18 15:16:46 +01:00
tonihei
93605303ad Update available commands when setting a new player in MediaSession
PiperOrigin-RevId: 523633865
(cherry picked from commit ae875648a7)
2023-04-18 15:00:09 +01:00
christosts
abc9d8ceda Change format logged when AudioSink throws InitializationException
Change what format is logged from MediaCodecAudioRenderer when
AudioSink throws InitializationException. We printed the
AudioSink's format, which most of the times is audio/raw (PCM)
and not the renderer's format. With this change both formats are
logged.

#minor-release

Issue: google/ExoPlayer#11066
PiperOrigin-RevId: 523456840
(cherry picked from commit baf1aa1cdb)
2023-04-18 14:59:20 +01:00
tonihei
0690c9ba67 Replace deprecated onBackPressed call
PiperOrigin-RevId: 523361561
(cherry picked from commit be85684dc9)
2023-04-18 14:59:19 +01:00
tonihei
8aec88b2b4 Add missing initial update to the subtitle button in the session demo
The button gets only updated after an onTracksChanged callback but
isn't set to the initial state similar to other changes triggered
by callbacks (e.g. updateRepeatSwitchUI)

PiperOrigin-RevId: 522274800
(cherry picked from commit 14ba173dfe)
2023-04-18 14:59:19 +01:00
tonihei
5d11aa95ef Implement missing broadcastCustomCommand to legacy controller
And also mention a few restrictions regarding legacy components
in Javadoc.

Issue: androidx/media#293
PiperOrigin-RevId: 522005562
(cherry picked from commit 502969a42b)
2023-04-18 14:58:24 +01:00
tonihei
86cc91687c Allow duplicated MediaItems in a legacy session
MediaItems are not meant to be unique in a playlist. If a legacy
session publishes multiple items that get converted to equal MediaItems,
the current code fails because we look up queue ids in a Map (that
doesn't allow duplicate entries).

Fix this by storing a simple list of items with additional data.

Issue: androidx/media#290
PiperOrigin-RevId: 521993802
(cherry picked from commit 219967c5a3)
2023-04-18 14:57:31 +01:00
rohks
10e2dfd2fa Remove Javadoc TODO from README of decoder extensions
As most classes are used via interface only and people depending on it locally can always find the Javadoc in Android Studio directly, we don't plan to add Javadocs for these extensions module in developer.android.com.

PiperOrigin-RevId: 521993756
(cherry picked from commit e4cb583af2)
2023-04-18 14:56:46 +01:00
tonihei
654a6786a6 Improve check for invalid connection request
The check currently relies on the default value of 0 returned if the
Bundle doesn't define a pid. But in some cases, like Robolectric unit tests,
0 is a possible pid. The check can be improved by directly asserting that
the value is defined.

PiperOrigin-RevId: 521414649
(cherry picked from commit 694d690bc0)
2023-04-18 14:56:46 +01:00
ibaker
3480a27994 Add warning logs if DefaultDrmSessionManager is used on wrong thread
Issue: google/ExoPlayer#11008
PiperOrigin-RevId: 520864579
(cherry picked from commit 7ca9668421)
2023-04-18 14:56:46 +01:00
Googler
3daaad7acd ...Suppress MissingSuperCall warnings on onBackPressed()...
PiperOrigin-RevId: 520709134
(cherry picked from commit 5af28a980d)
2023-04-18 14:56:45 +01:00
ibaker
10342507f7 Temporarily use exoplayer2-hosted SVGs in media3 javadoc
The media3-hosted versions of these SVGs were removed due to a change in
the way the reference docs are generated. While work on getting them
hosted on developer.android.com, this change simply links to the
(identical) exoplayer2 versions in order to fix the media3 docs.

#minor-release

PiperOrigin-RevId: 520647905
(cherry picked from commit 2e4f49fef7)
2023-04-18 14:56:45 +01:00
tonihei
d07fcc3457 Remove remaining references to exoplayer.dev
PiperOrigin-RevId: 520314781
(cherry picked from commit 6952771e2f)
2023-04-18 14:56:45 +01:00
ibaker
66b1282517 Post OfflineLicenseHelper interactions to its internal handler thread
`DefaultDrmSession(Manager)` expect most of their methods to be called
on the 'playback thread'. There isn't a playback thread in the case of
`OfflineLicenseHelper`, but in that case it's the thread backing
`DefaultDrmSessionManager.playbackLooper`, which is `OfflineLicenseHelper.handlerThread`.

PiperOrigin-RevId: 520053006
(cherry picked from commit 376bddef47)
2023-04-18 14:56:45 +01:00
tonihei
56dd0f761d Handle output format changes for empty sample streams correctly
When MediaCodecRenderer is given an empty sample stream, it puts
its output format change tracking in a bad state where we never
process future stream changes because we are waiting for a sample
that doesn't exist.

We can fix this by:
 - Looping the pending output stream changes to see if we processed
   more than one change at once (this fixes the tracking for empty
   sample streams that are not the first in the queue).
 - Checking if none of the previous streams queued any samples in
   onStreamChanged to handle this in the same way as the case
   where we already output all samples (this fixes the problem when
   the empty sample stream comes first in the queue).
 - Also calling onProcessedStreamChange for the case above, which
   was missing previously.

#minor-release

PiperOrigin-RevId: 519226637
(cherry picked from commit b9790e69d7)
2023-04-18 14:56:45 +01:00
Tianyi Feng
690ac23a20 Merge pull request #11051 from TiVo:p-fix-for-issue-11050
PiperOrigin-RevId: 518953648
(cherry picked from commit dc3481fca7)
2023-04-18 14:56:41 +01:00
michaelkatz
eea37031d1 Retry RTSP Setup with TCP if response with UDP is UnsupportedTransport
If RTSP Setup Request with UDP receives HTTP Error Status 461 UnsupportedTransport, then client will retry with TCP.

Issue: google/ExoPlayer#11069
PiperOrigin-RevId: 518807829
(cherry picked from commit ecf4d8b891)
2023-04-18 14:55:46 +01:00
Rohit Singh
b70b320c49 Merge pull request #11064 from haixia-meta:release-v2
PiperOrigin-RevId: 517128752
(cherry picked from commit 0e3f407e0e)
2023-04-18 14:54:34 +01:00
rohks
65d4202f6e Add support to fetch ColorInfo from hvcc box in AtomParsers
#minor-release

PiperOrigin-RevId: 517086016
(cherry picked from commit 8a5fcf82d3)
2023-04-18 14:54:34 +01:00
Rohit Singh
60e0546bea Merge pull request #11061 from cedricxperi:dts-udts-support
PiperOrigin-RevId: 517067549
(cherry picked from commit 49d85d625c)
2023-04-18 14:54:34 +01:00
tonihei
a94fb21dcb Make DefaultDashChunkSource more robust against empty segment timelines
Segment timelines are technically allowed to be empty, but not all places
add the necessary checks.

Issue: google/ExoPlayer#11014
PiperOrigin-RevId: 514722205
(cherry picked from commit 788132b9dc)
2023-04-18 14:54:30 +01:00
ibaker
4666d57b12 Ensure ForwardingPlayer users do listener registration correctly
The `@CallSuper` annotation should help catch cases where subclasses are
calling `delegate.addListener` instead of `super.addListener` but it
will also (unintentionally) prevent subclasses from either completely
no-opping the listener registration, or implementing it themselves in a
very custom way. I think that's probably OK, since these cases are
probably unusual, and they should be able to suppress the warning/error.

Issue: androidx/media#258

#minor-release

PiperOrigin-RevId: 513848402
(cherry picked from commit 5d23a92923)
2023-04-18 14:49:09 +01:00
rohks
2ca9050134 Add media3 guide entries in README files
PiperOrigin-RevId: 520650881
(cherry picked from commit 766e7d7d35)
2023-03-31 13:36:24 +01:00
rohks
d1d16659a6 Fix javadoc links in media README files
Also fixed the javadoc link in devsite and removed javadoc links from decoder extensions as it is not published yet on developer.android.com.

#minor-release

PiperOrigin-RevId: 520636868
(cherry picked from commit 6a928805d4)
2023-03-31 13:35:43 +01:00
tonihei
7aff4764e4 Add ExoPlayer versions to GH bug template
PiperOrigin-RevId: 518523484
2023-03-22 13:22:41 +00:00
tonihei
95f9e8f8ff
Merge pull request #270 from androidx/release-1.0.0
1.0.0
2023-03-22 09:49:31 +00:00
tonihei
dd2008b9ed Bump version numbers to Media3 1.0.0 and ExoPlayer 2.18.5
#minor-release

PiperOrigin-RevId: 516514583
(cherry picked from commit 137b40b76f)
2023-03-14 16:20:09 +00:00
tonihei
7f435f0c7d Update release notes for Media3 1.0.0 / ExoPlayer 2.18.5
PiperOrigin-RevId: 516478351
(cherry picked from commit 2fe2161d1b)
2023-03-14 16:20:05 +00:00
tonihei
bfdd09b366 Update docs and READMEs for media3 stable release
- The ExoPlayer docs will link to the media3 ones (for now, we can
   permanently redirect once no further stand-alone ExoPlayer release
   is published).
 - Contibuting issues and PRs should only happen on the media3 repo.
 - The media3 README is updated to remove any pre-release status
   information.

PiperOrigin-RevId: 516234594
(cherry picked from commit bc873536f3)
2023-03-14 16:19:24 +00:00
tonihei
687362e6fe Document that custom commands can only be sent if they are defined
Custom commands from controller to session are blocked if they are
not listed in the available session command list. This isn't well
documented in the Javadoc currently.

#minor-release

PiperOrigin-RevId: 514733568
(cherry picked from commit 20669fca27)
2023-03-14 16:19:24 +00:00
ibaker
e7f49a8cc8 Update templates to more clearly signpost between exoplayer2 and media3
Issue: google/ExoPlayer#11031

#minor-release

PiperOrigin-RevId: 514366016
(cherry picked from commit 9c82923094)
2023-03-14 16:19:24 +00:00
ibaker
14b0dcb957 Add missing @param tags
Dackka generates a warning if a method has at least one `@param` tag,
but not all of them are documented.

PiperOrigin-RevId: 513873453
(cherry picked from commit cb7d565fd4)
2023-03-14 16:19:20 +00:00
Andrew Lewis
810cb6de64 Shorten labels to fix transformer demo UI 2023-03-14 10:43:18 +00:00
Andrew Lewis
e78332f9f4
Shorten labels to fix transformer demo UI 2023-03-14 10:17:10 +00:00
tonihei
1ef427f640
Merge pull request #261 from androidx/release-1.0.0-rc02
1.0.0-rc02
2023-03-03 10:02:19 +00:00
tonihei
af30f00ee6 Add missing RELEASENOTES line
PiperOrigin-RevId: 513556883
(cherry picked from commit e2cb32f34c)
2023-03-02 17:58:04 +00:00
tonihei
7958737655 Fix lint-baseline.xml for latest UI translations
#minor-release

PiperOrigin-RevId: 513533248
(cherry picked from commit 8498e4b444)
2023-03-02 17:58:04 +00:00
tonihei
2e6484d53b Remove unreleased changed 2023-03-02 17:15:21 +00:00
bachinger
d47675f017 Fix some JavaDoc in the Media3 session module
#minor-release

PiperOrigin-RevId: 513501046
(cherry picked from commit 6042bec18a)
2023-03-02 13:52:12 +00:00
tonihei
67fd41a49d Bump version numbers to Media3 1.0.0-rc02 and ExoPlayer 2.18.4
#minor-release

PiperOrigin-RevId: 513488487
(cherry picked from commit cd753bd7b8)
2023-03-02 13:52:12 +00:00
tonihei
64c6d8f351 Update release notes for 1.0.0-rc02
PiperOrigin-RevId: 513483809
(cherry picked from commit df11545ba1)
2023-03-02 13:52:09 +00:00
tonihei
dbf737de08 Merge pull request #255 from mayurk2:use_edts_offset_if_it_is_for_entire_file
PiperOrigin-RevId: 513213229
(cherry picked from commit 17499cefcc)
2023-03-02 09:44:16 +00:00
ibaker
ddd5e9bc19 Remove @see tags with <a> tags
These are not supported by Dackka

#minor-release

PiperOrigin-RevId: 513176533
(cherry picked from commit c07cf3dc41)
2023-03-02 09:44:16 +00:00
christosts
7d6a359a85 Minor change in ForwardingPlayer javadoc
#minor-release

PiperOrigin-RevId: 512897269
(cherry picked from commit 42fae152d0)
2023-03-02 09:44:16 +00:00
tonihei
ee4ac61640 Update translations
#minor-release

PiperOrigin-RevId: 512890813
(cherry picked from commit a7faa5bfd8)
2023-03-02 09:44:16 +00:00
tonihei
b44fb574b5 Ensure getPlaybackHeadPosition isn't called if not needed
Once the value returned from AudioTimestampPoller advances, we
only need getPlaybackHeadPosition to sample sync params and
verify the returned timestamp. Both of these happen less often
and we can avoid calling getPlaybackHeadPosition if we don't
actually need it.

PiperOrigin-RevId: 512882170
(cherry picked from commit 408b4449ff)
2023-03-02 09:44:16 +00:00