Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

r2.18.0 #10349

Merged
merged 1,540 commits into from Jun 17, 2022
Merged

r2.18.0 #10349

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1540 commits
Select commit Hold shift + click to select a range
f1cda5f
FrameProcessor: Avoid early rounding in Presentation output dimensions.
dway123 Apr 25, 2022
b816a3f
Keep AudioTrack on flush as default
Samrobbo Apr 25, 2022
f0b34b8
Rollback of https://github.com/androidx/media/commit/8a4168271db64029…
Samrobbo Apr 25, 2022
d194ba9
Revert of a29206d891193fc7efa312edd551e8e4ee5729b0
Samrobbo Apr 25, 2022
c87d03e
Add 30 second high motion clips to AndroidTestUtil.
Samrobbo Apr 26, 2022
d88bd14
Add 30 second high motion clips to AndroidTestUtil.
Samrobbo Apr 26, 2022
3cf7f58
Transformer GL: save actual bitmap before checking pixel diffs.
dway123 Apr 26, 2022
877ba22
Transformer GL: save actual bitmap before checking pixel diffs.
dway123 Apr 26, 2022
22c9b81
Transformer: remove unused bitmap test option.
dway123 Apr 26, 2022
b29d496
Transformer: remove unused bitmap test option.
dway123 Apr 26, 2022
6708b43
Fix incorrect format variable
marcbaechinger Apr 26, 2022
4b46ace
Media Solutions: Fix misspelling for "roboletric"
dway123 Apr 7, 2022
005882e
Filter media notification actions
christosts Apr 7, 2022
7fc699e
Change SSIM transcode MIME type to H264.
claincly Apr 7, 2022
187b45b
FrameProcessor: Add setCrop to Presentation.
dway123 Apr 8, 2022
1fbaa5c
Add WorkerThread annotation to FrameProcessorChain helpers.
hmsch Apr 8, 2022
e4b0c20
Expect PresentationTime Discontinuity During Stream Transitions
ojw28 Apr 8, 2022
fbcb49e
Media: Remove unused test images.
dway123 Apr 12, 2022
36c5b94
Remove transformer from inputValues json.
Samrobbo Apr 12, 2022
af84358
Make TransformerEndToEndTest constants private.
hmsch Apr 12, 2022
83daa05
Rename TracksInfo and TrackGroupInfo
ojw28 Apr 12, 2022
34f014c
FrameProcessor: Add aspect ratio changes to Presentation.
dway123 Apr 12, 2022
85c0975
Merge pull request #59 from h6ah4i:fix/cleanup-callbacks-on-media-con…
icbaker Apr 26, 2022
9230381
Removing using the test asset that has Mp3 audio track.
claincly Apr 11, 2022
d152fc2
Upgrade compileSdkVersion to 32 (Android 12L)
christosts Apr 13, 2022
f25c912
Rename GlFrameProcessor updateProgramAndDraw to drawFrame.
hmsch Apr 13, 2022
22e016e
Clarify TransformationRequest setResolution javadoc.
hmsch Apr 13, 2022
29e3254
FrameProcessor: Move test bitmaps to a separate directory.
dway123 Apr 13, 2022
7b78548
Fix incorrect test id.
Samrobbo Apr 11, 2022
d9f0c2c
Tracks.Group/TrackGroup variable naming disambiguation
ojw28 Apr 14, 2022
d629e45
Transformer Demo: Add short test video
dway123 Apr 14, 2022
3f4d03e
FrameProcessor: Add checks to ensure width and height are positive.
dway123 Apr 14, 2022
e4d7e5e
Allow suppression of AssertionError in TransformerAndroidTestRunner.
Samrobbo Apr 11, 2022
5186798
Rename `Player.COMMAND_GET_TRACK_INFOS` to `COMMAND_GET_TRACKS`
icbaker Apr 14, 2022
7a67609
Add checks for device capability in tests.
claincly Apr 19, 2022
eea6fc0
Fix FrameProcessorChain method ordering.
hmsch Apr 12, 2022
afa551a
Block until FrameProcessorChain is released.
hmsch Apr 19, 2022
5248bbb
Add context param to GlFrameProcessor initialize().
hmsch Apr 19, 2022
7f7e84b
FrameProcessor: Improve PresentationFrameProcessor javadocs.
dway123 Apr 19, 2022
d1f8e96
Add 4 different video resolutions for bitrate analysis.
Samrobbo Apr 19, 2022
5174bf3
Media: Remove unused test images.
dway123 Apr 12, 2022
63052e1
DownloadHelper: propagate errors to callback
christosts Apr 20, 2022
f903e4a
Apply resolution fix.
claincly Apr 20, 2022
3b21c7e
Remove transformer from inputValues json.
Samrobbo Apr 12, 2022
6939464
Don't use API 26 SurfaceTexture constructor in frame processor tests.
hmsch Apr 20, 2022
a29206d
Align MediaCodec and Decoder AudioRenderer onDisabled logic.
Samrobbo Apr 20, 2022
3f47c1e
Make TransformerEndToEndTest constants private.
hmsch Apr 12, 2022
27c1876
Expand Samsung/1+ workaround to API 31 + 32
andrewlewis Apr 21, 2022
16b0cee
Fix Basic authentication header
claincly Apr 21, 2022
3cfdfb4
FrameProcessor: Create EncoderCompatibilityFrameProcessor.
dway123 Apr 21, 2022
f9bce2a
Remove a completed TODO item
claincly Apr 22, 2022
0ad508b
Rename TracksInfo and TrackGroupInfo
ojw28 Apr 12, 2022
0a378a4
Fix encoder configuration before API 25
andrewlewis Apr 22, 2022
c8744ee
Add an SSIM test with 360p input
andrewlewis Apr 22, 2022
59ced53
Catch unchecked exception in RtspSessionTiming parsing.
claincly Apr 22, 2022
304d579
FrameProcessor: Add aspect ratio changes to Presentation.
dway123 Apr 12, 2022
36d190b
Transformer GL: Avoid no-op ScaleToFit / Presentation FrameProcessors
dway123 Apr 22, 2022
0274345
Use last frame processor to draw on debug surface view.
hmsch Apr 25, 2022
b7a4151
Fix warning about potential integer overflow in DefaultAudioSink
icbaker Apr 25, 2022
bf16273
Remove unused field lastPlayerInfo
marcbaechinger Apr 25, 2022
f4e0339
Upgrade compileSdkVersion to 32 (Android 12L)
christosts Apr 13, 2022
fe7e330
Rename GlFrameProcessor updateProgramAndDraw to drawFrame.
hmsch Apr 13, 2022
2ad44a7
Clarify TransformationRequest setResolution javadoc.
hmsch Apr 13, 2022
e077c76
FrameProcessor: Move test bitmaps to a separate directory.
dway123 Apr 13, 2022
fbd8273
Tracks.Group/TrackGroup variable naming disambiguation
ojw28 Apr 14, 2022
ef96932
Transformer Demo: Add short test video
dway123 Apr 14, 2022
96b5014
FrameProcessor: Add checks to ensure width and height are positive.
dway123 Apr 14, 2022
6c80a82
Rename `Player.COMMAND_GET_TRACK_INFOS` to `COMMAND_GET_TRACKS`
icbaker Apr 14, 2022
570769a
Add checks for device capability in tests.
claincly Apr 19, 2022
ba5d570
Block until FrameProcessorChain is released.
hmsch Apr 19, 2022
7e76f77
Add context param to GlFrameProcessor initialize().
hmsch Apr 19, 2022
6138a0b
FrameProcessor: Improve PresentationFrameProcessor javadocs.
dway123 Apr 19, 2022
eb72e0a
Add 4 different video resolutions for bitrate analysis.
Samrobbo Apr 19, 2022
c199368
DownloadHelper: propagate errors to callback
christosts Apr 20, 2022
3459197
Apply resolution fix.
claincly Apr 20, 2022
e996d48
Don't use API 26 SurfaceTexture constructor in frame processor tests.
hmsch Apr 20, 2022
8c07f1e
Align MediaCodec and Decoder AudioRenderer onDisabled logic.
Samrobbo Apr 20, 2022
3867f8e
Expand Samsung/1+ workaround to API 31 + 32
andrewlewis Apr 21, 2022
084dfc0
Fix Basic authentication header
claincly Apr 21, 2022
20dac7c
FrameProcessor: Create EncoderCompatibilityFrameProcessor.
dway123 Apr 21, 2022
f08dea2
Update the playback speed details in the live streaming dev guide
icbaker Apr 22, 2022
3abc547
Remove a completed TODO item
claincly Apr 22, 2022
5a3ed34
Fix encoder configuration before API 25
andrewlewis Apr 22, 2022
6443d5b
Add an SSIM test with 360p input
andrewlewis Apr 22, 2022
85bd080
Catch unchecked exception in RtspSessionTiming parsing.
claincly Apr 22, 2022
4f272cc
Transformer GL: Avoid no-op ScaleToFit / Presentation FrameProcessors
dway123 Apr 22, 2022
928a69d
Use last frame processor to draw on debug surface view.
hmsch Apr 25, 2022
40c27c4
Fix warning about potential integer overflow in DefaultAudioSink
icbaker Apr 25, 2022
0760520
FrameProcessor: Avoid early rounding in Presentation output dimensions.
dway123 Apr 25, 2022
8da6c35
Keep AudioTrack on flush as default
Samrobbo Apr 25, 2022
d536fe3
Rollback of https://github.com/google/ExoPlayer/commit/8da6c35bbbae84…
Samrobbo Apr 25, 2022
059c359
Revert of 8c07f1e1a07e4e94731144e5a918f6b84aded592
Samrobbo Apr 25, 2022
1eadde5
Transformer GL: Add support for pixelWidthHeightRatio.
dway123 Apr 26, 2022
c25a3af
Merge pull request #10214 from cedricxperi:dev-v2
ojw28 Apr 26, 2022
c517d9a
Rollback of https://github.com/google/ExoPlayer/commit/8da8c5e781a7e5…
christosts May 3, 2022
02d847f
Misc fix on parameter comment
christosts May 3, 2022
0bba5c6
Separate matrix effect specification and implementation.
hmsch May 3, 2022
8bb11f3
Migrate usages of the deprecated TrackSelectionParameters.CREATOR
icbaker May 4, 2022
dec1d37
Upgrade Robolectric dependency to 4.8.1
ojw28 May 4, 2022
ee3a183
Add frame processor based on MediaPipe to demo
andrewlewis May 4, 2022
e62338e
Add TrackSelector.release()
christosts May 4, 2022
3730c1e
GL: Update exoplayer to use bindTexture.
dway123 May 4, 2022
3701e80
Use MatrixTransformation instead of wrapping its GlFrameProcssor.
hmsch May 4, 2022
0f502b2
Workaround for OkHttp Interrupt issues.
yschimke May 5, 2022
ff1305c
Remove redundant attribute from matrix transformation vertex shader.
hmsch May 5, 2022
a0ac261
Remove ExoPlayer's RawCcExtractor
icbaker May 6, 2022
7cf5964
Transformer GL: Remove obsolete TODOs.
dway123 May 6, 2022
521e067
Disable transcoding when reading content URIs
AquilesCanta May 6, 2022
5df6a58
Match the suggested bitrate to the actual Kush Gauge formula.
Samrobbo May 6, 2022
a1cff9a
Fix review comment in RTPVp9Reader
rakeshnitb May 9, 2022
432ae9d
Merge branch 'main' into rtp-vp9
rakeshnitb May 9, 2022
a8c0a1b
Merge pull request #10150 from egor-n:dev-v2-8435-outlinecolour
icbaker May 9, 2022
a5adc8d
Transformer Demo: Add video with pixelWidthHeightRatio != 1.
dway123 Apr 27, 2022
925a907
Merge pull request #9967 from jruesga:cea708-handle-multiple-service-…
icbaker May 9, 2022
754eb15
Clean up `Util.inferContentType` methods
icbaker Apr 27, 2022
5d1af64
Ignore mandatory SDP fields as ExoPlayer doesn't use them
claincly Apr 27, 2022
91b0d55
Fix calculations that may lose precision compared to their target type
icbaker Apr 27, 2022
4c2ea75
Fix incorrect JavaDoc
marcbaechinger Apr 27, 2022
3874245
Fix PeriodicVignetteFrameProcessor javadoc.
hmsch Apr 27, 2022
825976c
Reading AV1 initialization data.
ojw28 Apr 27, 2022
ebcd3b0
Add format when building a URI for an IMA SSAI media item
marcbaechinger Apr 28, 2022
a161482
Add device capability based test skipping.
claincly Apr 28, 2022
404192e
Transformer: Restrict frame buffer size for all omx decoders API >= 29.
dway123 Apr 28, 2022
be634bf
Change video asset used in TranscodeQualityTest
claincly Apr 28, 2022
d711405
Remove unneeded warning suppression from FrameworkMediaDrm
icbaker Apr 28, 2022
c67d691
Transformer: Misc nits
dway123 Apr 28, 2022
8da8c5e
Upgrade Robolectric dependency to 4.8
ojw28 Apr 28, 2022
bec9431
Fix Util.inferContentTypeForExtension to handle .ism (smooth streaming)
icbaker Apr 28, 2022
c5ad28a
Remove empty <p> tag from WebvttDecoder
icbaker Apr 28, 2022
07d08ba
Rename CONTENT_TYPE_ @AudioContentType values to AUDIO_CONTENT_TYPE_*
icbaker Apr 29, 2022
a433163
Prefix @ContentType values with CONTENT_
icbaker Apr 29, 2022
a840f97
Add copies of PlayerControlView's public listeners to PlayerView
icbaker Apr 29, 2022
75c72f3
Return recommended output size for FrameProcessorChain.
hmsch Apr 29, 2022
b0df946
Use cronet for DRM requests in the main demo app
icbaker Apr 29, 2022
b9a8da4
Allow stable API users to use DebugTextViewHelper
icbaker Apr 29, 2022
ad25c2a
Add MIDI mime types to decoder_midi and api.txt
ojw28 Apr 29, 2022
2283b94
Add AV1 support to the getCodecMaxInputSize function.
ojw28 May 2, 2022
76627d7
Introduce GlEffect interface for effect specification.
hmsch May 3, 2022
1809a0b
Migrate usages from C.TYPE_* to C.CONTENT_TYPE_*
icbaker May 3, 2022
33b049c
Allow stable API users to bundle/unbundle TrackSelectionParameters
icbaker May 3, 2022
eb1dc50
Opt some more bits of the main demo app into the unstable API
icbaker May 3, 2022
3830d02
Use Android 12L APIs directly
christosts May 3, 2022
06d73e9
Don't implement Player.Listener from SubtitleView
icbaker May 9, 2022
6ac1306
Expose the codec name to the analysis files.
Samrobbo May 10, 2022
e89189e
Fix GlUtil vector size constant name.
hmsch May 9, 2022
f08fdf6
Add listener for FrameProcessingExceptions.
hmsch May 9, 2022
e39a324
Add `DefaultMediaSourceFactory.setDataSourceFactory`
icbaker May 23, 2022
ffb75d7
Skip performance tests if device is not capable.
claincly May 23, 2022
96f35bb
Add a dev guide section about ForwardingPlayer
icbaker May 23, 2022
3c9b0b9
Do not setOffloadEndOfStream if AudioTrack is not playing
marcbaechinger May 23, 2022
ecea2b9
Rollback of https://github.com/google/ExoPlayer/commit/e705999cf3b049…
icbaker May 23, 2022
ccd61b1
Don't reallocate EGLSurface for same debug surface.
hmsch May 23, 2022
271cdbe
Force encoding for the on-device regression tests.
Samrobbo May 10, 2022
d254967
Expose decoder name to analysis files.
Samrobbo May 11, 2022
dce0db3
Refactor MIDI and Flac extractor loaders for deduplication
Hamzah-z May 11, 2022
0948fd1
Adds key functionality for basic MIDI synthesization
Hamzah-z May 12, 2022
dd365cb
Transformer GL: Update test name reference.
dway123 May 12, 2022
010a00e
Add support for static RTP payload types.
claincly May 12, 2022
3eb6f0e
Remove network type test restrictions for API 29/30
tonihei May 12, 2022
800e533
Increase test timeout for 4k60 regression test.
Samrobbo May 12, 2022
938728c
Add DefaultMediaSourceFactory.{set,clear}LocalAdInsertionConfig
icbaker May 12, 2022
b9f1cb4
Fix warning about ambiguous `@EnsuresNonNull` annotation
icbaker May 12, 2022
df1b733
Combine multiple matrix transformations in one shader.
hmsch May 13, 2022
daa4c1c
Add language normalization for "arb" (Standard Arabic)
tonihei May 16, 2022
f28f802
Merge pull request #64 from ittiam-systems:rtp-vp9
icbaker May 24, 2022
4636030
Add replacement for deprecated network type override constant
tonihei May 16, 2022
578afa8
Fix demo app crash when media pipe isn't loaded
andrewlewis May 17, 2022
b2f46fa
Update stale bug reference.
andrewlewis May 17, 2022
a27b539
Create new class to store cues and timestamp.
rohitjoins May 17, 2022
d6dc3c5
Fix initialization of media pipe processors with assets
andrewlewis May 17, 2022
bea17b4
Attempt to load OpenCV when loading MediaPipe
andrewlewis May 17, 2022
b3dc32d
Tidy releasing `FrameProcessorChain`
andrewlewis May 17, 2022
e9d5381
Add missing equals to MergingMediaPeriod.ForwardingTrackSelection
tonihei May 18, 2022
aef2f15
Remove all null-tolerant methods from BundleableUtil.
icbaker May 18, 2022
cfaf39c
Clarify the priority of live config values in the dev guide
icbaker May 18, 2022
97331a6
Rename expected to reference in SsimHelper.
Samrobbo May 18, 2022
75dc0e2
Migrate leaf listeners of `Player` to new `onCues` override
rohitjoins May 18, 2022
7ef65b6
Track validity of debug `SurfaceView`
andrewlewis May 20, 2022
685761b
Fix comment in MediaCodecRenderer
icbaker May 20, 2022
bbb6d8f
Use `@C.DataType` intdef in `HlsDataSourceFactory.createDataSource`
icbaker May 20, 2022
5baeffb
Simplify some DefaultMediaSourceFactory instantiation in the dev guide
icbaker May 23, 2022
48a0301
Remove 5G-NSA detection on API 29/30.
tonihei May 23, 2022
57182ac
Remove `@Nullable` from `MediaSource.Factory` setters
icbaker May 23, 2022
dc6cc45
Remove `@Nullable` from some `Dash/Hls/SsMediaSource.Factory` methods
icbaker May 23, 2022
4277ac3
Reorder demo samples
andrewlewis May 23, 2022
274f3a1
Rollback of 57182ac7bd32db54d11fd41e21338a2bbfaf043c
icbaker May 23, 2022
9c5bc56
Wrap TelephonyCallback in nested class to avoid class loading issues.
tonihei May 24, 2022
066327d
Skip transform4K60 test if 4K decoding is not supported.
hmsch May 24, 2022
7465383
Make `Rating.RATING_UNSET` package-private
icbaker May 25, 2022
52ad75c
Replace 640x360 H264 test video with 320x240 H264 video.
hmsch May 25, 2022
2b4642f
Skip SSIM calculation on Nexus 5 API 21.
hmsch May 25, 2022
b8769b2
Fix some inconsistencies in the `MediaItem` API
icbaker May 25, 2022
53b4452
Fix typos flagged by lint
icbaker May 26, 2022
d37cf34
Rename GlFrameProcessor to SingleFrameGlTextureProcessor.
hmsch May 26, 2022
bc1ec9d
Replace frame processor with texture processor in TODO comment.
hmsch May 26, 2022
32fd374
Simplify `DefaultMediaSourceFactory` instantiation in a test
icbaker May 26, 2022
541460a
Fix handling clipping in transformer renderers.
hmsch May 27, 2022
14fc317
Transformer: Skip SSIM in tests when fallback is applied.
dway123 May 27, 2022
89e239e
Expand SSIM skipping to all Nexus API 21 devices.
hmsch May 27, 2022
6b521b2
Use video passthrough if clipping starts at key frame.
hmsch May 27, 2022
74c68b3
Unconditionally sleep for offload
marcbaechinger May 27, 2022
a96dd2d
Use updated test name in BUILD and docs.
Samrobbo May 27, 2022
1becb45
Clarify variables and improve documentation of SSIM.
Samrobbo May 27, 2022
983e074
Transformer: Add 8k24fps transform test.
dway123 May 27, 2022
38720a6
Treat pixels as unsigned and correct pixel count division.
Samrobbo May 27, 2022
6dd065a
Wrap framework AudioAttributes in new AudioAttributesV21 class
icbaker May 30, 2022
84efc5e
Retain stream time offsets through codecs
andrewlewis May 30, 2022
38248af
Add RequestMetadata to MediaItem
tonihei May 30, 2022
8e015c4
Remove MediaMetadata.mediaUrl
tonihei May 30, 2022
d411461
Skip BitrateAnalysisTest if device is incapable.
claincly May 30, 2022
d1c3b05
Use fluent assertions
AquilesCanta May 30, 2022
b332d66
Remove FfmpegVideoRenderer from 2.1.18 release
marcbaechinger May 30, 2022
10a7e75
Update the Gradle Wrapper and Android Gradle Plugin
icbaker May 30, 2022
401c220
Add explicit cast to ByteBuffer for Java 8 compatibility
marcbaechinger May 31, 2022
30bed6c
Add `@deprecated` javadoc to all `@Deprecated` `@Override` methods
icbaker May 31, 2022
b0a9b90
Add some imports required for javadoc
icbaker May 31, 2022
49c5e32
Remove deprecated calls
marcbaechinger May 31, 2022
27e0c80
Permit duplicate Opus headers
icbaker May 31, 2022
6e735ac
Create `withMediaPipe` variant only if AAR is present
andrewlewis May 31, 2022
2b8dbb5
Ignore decoding test cases when library not available
marcbaechinger May 31, 2022
c107b94
Fix `HiddenTypedefConstant` Metalava error on `PlaybackException`
icbaker May 31, 2022
aadd0c8
Filter bogus AndroidX Media jar file when creating javadoc
marcbaechinger Jun 1, 2022
dd27a9a
Rename `DefaultTrackSelector.ParametersBuilder` to `Parameters.Builder`
icbaker Jun 6, 2022
5030145
Use a shared `keyForField` implementation in track selection parameters
icbaker Jun 7, 2022
68054de
Merge pull request #53 from ittiam-systems:rtp_opus
marcbaechinger Jun 9, 2022
2e2bbdd
Clarify that `ShuffleOrder` must be consistent in both directions
icbaker Jun 8, 2022
4e3617c
Audio passthrough: handle unset audio format channel count
christosts Jun 8, 2022
c1aff0d
Add COMMAND_SET_MEDIA_ITEM to Player.Commands
tonihei Jun 9, 2022
56079ba
Merge pull request #69 from ittiam-systems:rtp_amr_test
marcbaechinger Jun 9, 2022
b7cf772
Fix bug: playback is frozen with HLS chunkless preparation
christosts Jun 9, 2022
64d33ad
Minor fix: remove final from methods of final class
christosts Jun 7, 2022
9a793da
DefaultTrackSelector: Constrain audio channel count
christosts Jun 9, 2022
31e6ba9
Ensure `DRAIN_ACTION_FLUSH_AND_UPDATE_DRM_SESSION` is always executed
icbaker Jun 10, 2022
c1f1eb7
Use correct placeholder PlayerID value in test
tonihei Jun 13, 2022
941c5d8
Merge pull request #10322 from DolbyLaboratories:dev-v2-multichannel
marcbaechinger Jun 14, 2022
fd1fb96
Spatializer: Assume linear channel count for E-AC3 JOC streams
christosts Jun 14, 2022
ff582ec
Suppress lint errors `RestrictedApis` in lib-media2
marcbaechinger Jun 14, 2022
d1e50de
Make HttpDataSourceTestEnv require API 19
marcbaechinger Jun 14, 2022
341f158
Add `many` quantity for fr an fr-CA
marcbaechinger Jun 14, 2022
4739e4d
Add lint base to make gradle lint run without errors
marcbaechinger Jun 14, 2022
a785fbe
Merge pull request #9915 from dburckh:avi
marcbaechinger Jun 15, 2022
cdd2157
Updating translations
marcbaechinger Jun 15, 2022
fb6e3ea
Update initial bitrate estimates
tonihei Jun 15, 2022
0a4684d
Merge pull request #63 from ittiam-systems:rtp-h263
marcbaechinger Jun 16, 2022
3dcc24e
Version bump to exoplayer:2.18.0 and media3:1.0.0-beta01
marcbaechinger Jun 16, 2022
da12792
Add lint base xml file for string.xml files
marcbaechinger Jun 16, 2022
3da5ab7
Update JavaDoc
marcbaechinger Jun 16, 2022
8781449
Merge branch 'release-v2' into dev-v2-r2.18.0
marcbaechinger Jun 16, 2022
460d221
Fix release notes
marcbaechinger Jun 16, 2022
85d8682
Add lint baseline for spurious API-level warnings
icbaker Jun 17, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Expand Up @@ -18,6 +18,7 @@ body:
label: ExoPlayer Version
description: What version of ExoPlayer are you using?
options:
- 2.18.0
- 2.17.1
- 2.17.0
- 2.16.1
Expand Down
189 changes: 189 additions & 0 deletions RELEASENOTES.md
@@ -1,5 +1,194 @@
# Release notes

### 2.18.0 (2022-06-16)

This release corresponds to the
[AndroidX media3 1.0.0-beta01 release](https://github.com/androidx/media/releases/tag/1.0.0-beta01).

* Core library:
* Enable support for Android platform diagnostics via
`MediaMetricsManager`. ExoPlayer will forward playback events and
performance data to the platform, which helps to provide system
performance and debugging information on the device. This data may also
be collected by Google
[if sharing usage and diagnostics data is enabled](https://support.google.com/accounts/answer/6078260)
by the user of the device. Apps can opt-out of contributing to platform
diagnostics for ExoPlayer with
`ExoPlayer.Builder.setUsePlatformDiagnostics(false)`.
* Fix bug that tracks are reset too often when using `MergingMediaSource`,
for example when side-loading subtitles and changing the selected
subtitle mid-playback
([#10248](https://github.com/google/ExoPlayer/issues/10248)).
* Stop detecting 5G-NSA network type on API 29 and 30. These playbacks
will assume a 4G network.
* Disallow passing `null` to
`MediaSource.Factory.setDrmSessionManagerProvider` and
`MediaSource.Factory.setLoadErrorHandlingPolicy`. Instances of
`DefaultDrmSessionManagerProvider` and `DefaultLoadErrorHandlingPolicy`
can be passed explicitly if required.
* Add `MediaItem.RequestMetadata` to represent metadata needed to play
media when the exact `LocalConfiguration` is not known. Also remove
`MediaMetadata.mediaUrl` as this is now included in `RequestMetadata`.
* Add `Player.Command.COMMAND_SET_MEDIA_ITEM` to enable players to allow
setting a single item.
* Track selection:
* Flatten `TrackSelectionOverrides` class into `TrackSelectionParameters`,
and promote `TrackSelectionOverride` to a top level class.
* Rename `TracksInfo` to `Tracks` and `TracksInfo.TrackGroupInfo` to
`Tracks.Group`. `Player.getCurrentTracksInfo` and
`Player.Listener.onTracksInfoChanged` have also been renamed to
`Player.getCurrentTracks` and `Player.Listener.onTracksChanged`.
* Change `DefaultTrackSelector.buildUponParameters` and
`DefaultTrackSelector.Parameters.buildUpon` to return
`DefaultTrackSelector.Parameters.Builder` instead of the deprecated
`DefaultTrackSelector.ParametersBuilder`.
* Add
`DefaultTrackSelector.Parameters.constrainAudioChannelCountToDeviceCapabilities`
which is enabled by default. When enabled, the `DefaultTrackSelector`
will prefer audio tracks whose channel count does not exceed the device
output capabilities. On handheld devices, the `DefaultTrackSelector`
will prefer stereo/mono over multichannel audio formats, unless the
multichannel format can be
[Spatialized](https://developer.android.com/reference/android/media/Spatializer)
(Android 12L+) or is a Dolby surround sound format. In addition, on
devices that support audio spatialization, the `DefaultTrackSelector`
will monitor for changes in the
[Spatializer properties](https://developer.android.com/reference/android/media/Spatializer.OnSpatializerStateChangedListener)
and trigger a new track selection upon these. Devices with a
`television`
[UI mode](https://developer.android.com/guide/topics/resources/providing-resources#UiModeQualifier)
are excluded from these constraints and the format with the highest
channel count will be preferred. To enable this feature, the
`DefaultTrackSelector` instance must be constructed with a `Context`.
* Video:
* Rename `DummySurface` to `PlaceholderSurface`.
* Add AV1 support to the `MediaCodecVideoRenderer.getCodecMaxInputSize`.
* Audio:
* Use LG AC3 audio decoder advertising non-standard MIME type.
* Change the return type of `AudioAttributes.getAudioAttributesV21()` from
`android.media.AudioAttributes` to a new `AudioAttributesV21` wrapper
class, to prevent slow ART verification on API < 21.
* Query the platform (API 29+) or assume the audio encoding channel count
for audio passthrough when the format audio channel count is unset,
which occurs with HLS chunkless preparation
([10204](https://github.com/google/ExoPlayer/issues/10204)).
* Configure `AudioTrack` with channel mask
`AudioFormat.CHANNEL_OUT_7POINT1POINT4` if the decoder outputs 12
channel PCM audio
([#10322](#https://github.com/google/ExoPlayer/pull/10322).
* DRM
* Ensure the DRM session is always correctly updated when seeking
immediately after a format change
([10274](https://github.com/google/ExoPlayer/issues/10274)).
* Text:
* Change `Player.getCurrentCues()` to return `CueGroup` instead of
`List<Cue>`.
* SSA: Support `OutlineColour` style setting when `BorderStyle == 3` (i.e.
`OutlineColour` sets the background of the cue)
([#8435](https://github.com/google/ExoPlayer/issues/8435)).
* CEA-708: Parse data into multiple service blocks and ignore blocks not
associated with the currently selected service number.
* Remove `RawCcExtractor`, which was only used to handle a Google-internal
subtitle format.
* Extractors:
* Matroska: Parse `DiscardPadding` for Opus tracks.
* MP4: Parse bitrates from `esds` boxes.
* Ogg: Allow duplicate Opus ID and comment headers
([#10038](https://github.com/google/ExoPlayer/issues/10038)).
* UI:
* Fix delivery of events to `OnClickListener`s set on `StyledPlayerView`
and `PlayerView`, in the case that `useController=false`
([#9605](https://github.com/google/ExoPlayer/issues/9605)). Also fix
delivery of events to `OnLongClickListener` for all view configurations.
* Fix incorrectly treating a sequence of touch events that exit the bounds
of `StyledPlayerView` and `PlayerView` before `ACTION_UP` as a click
([#9861](https://github.com/google/ExoPlayer/issues/9861)).
* Fix `PlayerView` accessibility issue where tapping might toggle playback
rather than hiding the controls
([#8627](https://github.com/google/ExoPlayer/issues/8627)).
* Rewrite `TrackSelectionView` and `TrackSelectionDialogBuilder` to work
with the `Player` interface rather than `ExoPlayer`. This allows the
views to be used with other `Player` implementations, and removes the
dependency from the UI module to the ExoPlayer module. This is a
breaking change.
* Don't show forced text tracks in the `PlayerView` track selector, and
keep a suitable forced text track selected if "None" is selected
([#9432](https://github.com/google/ExoPlayer/issues/9432)).
* DASH:
* Parse channel count from DTS `AudioChannelConfiguration` elements. This
re-enables audio passthrough for DTS streams
([#10159](https://github.com/google/ExoPlayer/issues/10159)).
* Disallow passing `null` to
`DashMediaSource.Factory.setCompositeSequenceableLoaderFactory`.
Instances of `DefaultCompositeSequenceableLoaderFactory` can be passed
explicitly if required.
* HLS:
* Fallback to chunkful preparation if the playlist CODECS attribute does
not contain the audio codec
([#10065](https://github.com/google/ExoPlayer/issues/10065)).
* Disallow passing `null` to
`HlsMediaSource.Factory.setCompositeSequenceableLoaderFactory`,
`HlsMediaSource.Factory.setPlaylistParserFactory`, and
`HlsMediaSource.Factory.setPlaylistTrackerFactory`. Instances of
`DefaultCompositeSequenceableLoaderFactory`,
`DefaultHlsPlaylistParserFactory`, or a reference to
`DefaultHlsPlaylistTracker.FACTORY` can be passed explicitly if
required.
* Smooth Streaming:
* Disallow passing `null` to
`SsMediaSource.Factory.setCompositeSequenceableLoaderFactory`. Instances
of `DefaultCompositeSequenceableLoaderFactory` can be passed explicitly
if required.
* RTSP:
* Add RTP reader for MPEG4
([#35](https://github.com/androidx/media/pull/35)).
* Add RTP reader for HEVC
([#36](https://github.com/androidx/media/pull/36)).
* Add RTP reader for AMR. Currently only mono-channel, non-interleaved AMR
streams are supported. Compound AMR RTP payload is not supported.
([#46](https://github.com/androidx/media/pull/46))
* Add RTP reader for VP8
([#47](https://github.com/androidx/media/pull/47)).
* Add RTP reader for WAV
([#56](https://github.com/androidx/media/pull/56)).
* Fix RTSP basic authorization header.
([#9544](https://github.com/google/ExoPlayer/issues/9544)).
* Stop checking mandatory SDP fields as ExoPlayer doesn't need them
([#10049](https://github.com/google/ExoPlayer/issues/10049)).
* Throw checked exception when parsing RTSP timing
([#10165](https://github.com/google/ExoPlayer/issues/10165)).
* Add RTP reader for VP9
([#47](https://github.com/androidx/media/pull/64)).
* Add RTP reader for OPUS
([#53](https://github.com/androidx/media/pull/53)).
* Data sources:
* Rename `DummyDataSource` to `PlaceholderDataSource`.
* Workaround OkHttp interrupt handling.
* Ad playback / IMA:
* Decrease ad polling rate from every 100ms to every 200ms, to line up
with Media Rating Council (MRC) recommendations.
* FFmpeg extension:
* Update CMake version to `3.21.0+` to avoid a CMake bug causing
AndroidStudio's gradle sync to fail
([#9933](https://github.com/google/ExoPlayer/issues/9933)).
* Remove deprecated symbols:
* Remove `Player.Listener.onTracksChanged`. Use
`Player.Listener.onTracksInfoChanged` instead.
* Remove `Player.getCurrentTrackGroups` and
`Player.getCurrentTrackSelections`. Use `Player.getCurrentTracksInfo`
instead. You can also continue to use `ExoPlayer.getCurrentTrackGroups`
and `ExoPlayer.getCurrentTrackSelections`, although these methods remain
deprecated.
* Remove `DownloadHelper`
`DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_VIEWPORT` and
`DEFAULT_TRACK_SELECTOR_PARAMETERS` constants. Use
`getDefaultTrackSelectorParameters(Context)` instead when possible, and
`DEFAULT_TRACK_SELECTOR_PARAMETERS_WITHOUT_CONTEXT` otherwise.
* Remove constructor `DefaultTrackSelector(ExoTrackSelection.Factory)`.
Use `DefaultTrackSelector(Context, ExoTrackSelection.Factory)` instead.
* Remove `Transformer.Builder.setContext`. The `Context` should be passed
to the `Transformer.Builder` constructor instead.

### 2.17.1 (2022-03-10)

This release corresponds to the
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Expand Up @@ -17,7 +17,7 @@ buildscript {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.3'
classpath 'com.android.tools.build:gradle:7.2.1'
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.2'
}
}
Expand Down
7 changes: 6 additions & 1 deletion common_library_config.gradle
Expand Up @@ -29,5 +29,10 @@ android {
targetCompatibility JavaVersion.VERSION_1_8
}

testOptions.unitTests.includeAndroidResources = true
testOptions {
unitTests.all {
jvmArgs "-Xmx2g"
}
unitTests.includeAndroidResources true
}
}
8 changes: 4 additions & 4 deletions constants.gradle
Expand Up @@ -13,21 +13,21 @@
// limitations under the License.
project.ext {
// ExoPlayer version and version code.
releaseVersion = '2.17.1'
releaseVersionCode = 2_017_001
releaseVersion = '2.18.0'
releaseVersionCode = 2_018_000
minSdkVersion = 16
appTargetSdkVersion = 29
// Upgrading this requires [Internal ref: b/193254928] to be fixed, or some
// additional robolectric config.
targetSdkVersion = 30
compileSdkVersion = 31
compileSdkVersion = 32
dexmakerVersion = '2.28.1'
junitVersion = '4.13.2'
// Use the same Guava version as the Android repo:
// https://cs.android.com/android/platform/superproject/+/master:external/guava/METADATA
guavaVersion = '31.0.1-android'
mockitoVersion = '3.12.4'
robolectricVersion = '4.6.1'
robolectricVersion = '4.8.1'
// Keep this in sync with Google's internal Checker Framework version.
checkerframeworkVersion = '3.13.0'
checkerframeworkCompatVersion = '2.5.5'
Expand Down
Expand Up @@ -230,8 +230,8 @@ public RecyclerViewCallback() {
@Override
public boolean onMove(
RecyclerView list, RecyclerView.ViewHolder origin, RecyclerView.ViewHolder target) {
int fromPosition = origin.getAdapterPosition();
int toPosition = target.getAdapterPosition();
int fromPosition = origin.getBindingAdapterPosition();
int toPosition = target.getBindingAdapterPosition();
if (draggingFromPosition == C.INDEX_UNSET) {
// A drag has started, but changes to the media queue will be reflected in clearView().
draggingFromPosition = fromPosition;
Expand All @@ -243,7 +243,7 @@ public boolean onMove(

@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
int position = viewHolder.getBindingAdapterPosition();
QueueItemViewHolder queueItemHolder = (QueueItemViewHolder) viewHolder;
if (playerManager.removeItem(queueItemHolder.item)) {
mediaQueueListAdapter.notifyItemRemoved(position);
Expand Down Expand Up @@ -282,7 +282,7 @@ public QueueItemViewHolder(TextView textView) {

@Override
public void onClick(View v) {
playerManager.selectQueueItem(getAdapterPosition());
playerManager.selectQueueItem(getBindingAdapterPosition());
}
}

Expand Down
Expand Up @@ -25,7 +25,7 @@
import com.google.android.exoplayer2.Player.DiscontinuityReason;
import com.google.android.exoplayer2.Player.TimelineChangeReason;
import com.google.android.exoplayer2.Timeline;
import com.google.android.exoplayer2.TracksInfo;
import com.google.android.exoplayer2.Tracks;
import com.google.android.exoplayer2.ext.cast.CastPlayer;
import com.google.android.exoplayer2.ext.cast.SessionAvailabilityListener;
import com.google.android.exoplayer2.ui.StyledPlayerControlView;
Expand Down Expand Up @@ -57,7 +57,7 @@ interface Listener {
private final ArrayList<MediaItem> mediaQueue;
private final Listener listener;

private TracksInfo lastSeenTrackGroupInfo;
private Tracks lastSeenTracks;
private int currentItemIndex;
private Player currentPlayer;

Expand Down Expand Up @@ -219,19 +219,19 @@ public void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reaso
}

@Override
public void onTracksInfoChanged(TracksInfo tracksInfo) {
if (currentPlayer != localPlayer || tracksInfo == lastSeenTrackGroupInfo) {
public void onTracksChanged(Tracks tracks) {
if (currentPlayer != localPlayer || tracks == lastSeenTracks) {
return;
}
if (!tracksInfo.isTypeSupportedOrEmpty(
C.TRACK_TYPE_VIDEO, /* allowExceedsCapabilities= */ true)) {
if (tracks.containsType(C.TRACK_TYPE_VIDEO)
&& !tracks.isTypeSupported(C.TRACK_TYPE_VIDEO, /* allowExceedsCapabilities= */ true)) {
listener.onUnsupportedTrack(C.TRACK_TYPE_VIDEO);
}
if (!tracksInfo.isTypeSupportedOrEmpty(
C.TRACK_TYPE_AUDIO, /* allowExceedsCapabilities= */ true)) {
if (tracks.containsType(C.TRACK_TYPE_AUDIO)
&& !tracks.isTypeSupported(C.TRACK_TYPE_AUDIO, /* allowExceedsCapabilities= */ true)) {
listener.onUnsupportedTrack(C.TRACK_TYPE_AUDIO);
}
lastSeenTrackGroupInfo = tracksInfo;
lastSeenTracks = tracks;
}

// CastPlayer.SessionAvailabilityListener implementation.
Expand Down
Expand Up @@ -27,6 +27,7 @@
import android.opengl.GLES20;
import android.opengl.GLUtils;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.util.GlProgram;
import com.google.android.exoplayer2.util.GlUtil;
import java.io.IOException;
import java.util.Locale;
Expand All @@ -50,7 +51,7 @@
private final Bitmap logoBitmap;
private final Canvas overlayCanvas;

private GlUtil.@MonotonicNonNull Program program;
private @MonotonicNonNull GlProgram program;

private float bitmapScaleX;
private float bitmapScaleY;
Expand Down Expand Up @@ -78,17 +79,21 @@ public BitmapOverlayVideoProcessor(Context context) {
public void initialize() {
try {
program =
new GlUtil.Program(
new GlProgram(
context,
/* vertexShaderFilePath= */ "bitmap_overlay_video_processor_vertex.glsl",
/* fragmentShaderFilePath= */ "bitmap_overlay_video_processor_fragment.glsl");
} catch (IOException e) {
throw new IllegalStateException(e);
}
program.setBufferAttribute(
"aFramePosition", GlUtil.getNormalizedCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT);
"aFramePosition",
GlUtil.getNormalizedCoordinateBounds(),
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
program.setBufferAttribute(
"aTexCoords", GlUtil.getTextureCoordinateBounds(), GlUtil.RECTANGLE_VERTICES_COUNT);
"aTexCoords",
GlUtil.getTextureCoordinateBounds(),
GlUtil.HOMOGENEOUS_COORDINATE_VECTOR_SIZE);
GLES20.glGenTextures(1, textures, 0);
GLES20.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
GLES20.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
Expand Down Expand Up @@ -117,9 +122,9 @@ public void draw(int frameTexture, long frameTimestampUs, float[] transformMatri
GlUtil.checkGlError();

// Run the shader program.
GlUtil.Program program = checkNotNull(this.program);
program.setSamplerTexIdUniform("uTexSampler0", frameTexture, /* unit= */ 0);
program.setSamplerTexIdUniform("uTexSampler1", textures[0], /* unit= */ 1);
GlProgram program = checkNotNull(this.program);
program.setSamplerTexIdUniform("uTexSampler0", frameTexture, /* texUnitIndex= */ 0);
program.setSamplerTexIdUniform("uTexSampler1", textures[0], /* texUnitIndex= */ 1);
program.setFloatUniform("uScaleX", bitmapScaleX);
program.setFloatUniform("uScaleY", bitmapScaleY);
program.setFloatsUniform("uTexTransform", transformMatrix);
Expand Down