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

Fix PGS subtitles rendered with border and no fill color #1006

Open
wants to merge 389 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
389 commits
Select commit Hold shift + click to select a range
f1b9421
Fix calling extra registerInputStream and not handling EOS
claincly Jun 8, 2023
78f23c0
Add seekPrev and seekNext buttons on the default compact notification
tianyif Jun 8, 2023
39b98fe
Add 'Keep every nth frame' frame dropping strategy.
tof-tof Jun 8, 2023
f18ec2e
Make StreamKey Bundleable and remove deprecated trackIndex
oceanjules Jun 8, 2023
ec3446f
Enable re-preparing the `ImaSSAIMediaSource`
marcbaechinger Jun 8, 2023
f1529d6
Implement logging support for Common Media Client Data (CMCD)
rohitjoins Jun 9, 2023
1c8c563
Do not reset period uid when DashMediaSource is released
marcbaechinger Jun 9, 2023
50f4caa
Add a timer to end a video stream prematurely in ExtTexMgr
claincly Jun 9, 2023
56c62d1
Make current period a placeholder when a live stream is reset
marcbaechinger Jun 9, 2023
4dae1a1
Add missing empty lines
claincly Jun 9, 2023
21fb8c9
Fix splitting ad playback state for partial ad group when joining
marcbaechinger Jun 9, 2023
23e9280
Throw exception when `TimestampAdjuster` initialization hits timeout
tianyif Jun 9, 2023
2ee0900
Rollback of https://github.com/androidx/media/commit/a66f08ba978c2bd1…
a-googler Jun 9, 2023
c3a96b2
Clean up HLS sample for cast demo
marcbaechinger Jun 12, 2023
66b59ec
Update RELEASENOTES.md for media3-1.1.0-rc01 release
tof-tof Jun 12, 2023
3631e1c
Version bump to media3:1.1.0-rc01
tof-tof Jun 12, 2023
6615399
Release `ExoPlayer` instances in `ExoPlayerTest`
icbaker Jun 12, 2023
9dec0d3
Notify listeners of error changes when masking in `MediaControllerImp…
oceanjules Jun 13, 2023
a9b7831
Add missing @Override
tonihei Jun 14, 2023
983d9d5
Stop suppressing exceptions in `MediaCodec.Callback` during flush
icbaker Jun 14, 2023
3cfdd4f
Implement equals/hashCode for CommandButton
marcbaechinger Jun 14, 2023
648e994
Add missing checkNotNull to bitmapLoader.
Jun 14, 2023
3c9831f
Remove `=` from parameter args in call to `Constructor.newInstance`
icbaker Jun 14, 2023
2367e7a
Default RepeatMode for conversion is NONE/OFF
oceanjules Jun 15, 2023
0aede89
Add CMCD logging when requesting initialization chunk for DASH and HLS
rohitjoins Jun 15, 2023
f01ca9d
Refactor method `CmcdLog.createInstance` to accept `bufferedDurationUs`
rohitjoins Jun 15, 2023
7e0296f
Merge pull request #436 from jaeho-lee104:feature/improve_condition
marcbaechinger Jun 19, 2023
e53796f
Fix bug where PlayerView distorts video when video size is unknown
marcbaechinger Jun 19, 2023
3561258
Fix spurious sessions created for events after the playlist is cleared
tonihei Jun 20, 2023
4710b8f
Fixed spelling across various PlayerInfo *ChangeReason fields
oceanjules Jun 20, 2023
f6a30f6
Fix ArrayIndexOutOfBoundIndex when re-preparing after exception
marcbaechinger Jun 20, 2023
4f5d59b
Switch to SVG assets hosted on developer.android.com for reference docs
icbaker Jun 20, 2023
b4c7e6c
Order MediaControllerImplBase listener callbacks as in ExoPlayerImpl
oceanjules Jun 22, 2023
e008e21
Fix missing equals sign in inline-comment parameter names
oceanjules Jun 22, 2023
b220dfe
Cleaner unified `PlayerInfo` update method in `MediaControllerImplBase`
oceanjules Jun 22, 2023
1ae8ddd
Document how to use a custom receiver app with the cast demo
marcbaechinger Jun 13, 2023
bcdadbf
Fix two more unresolved SVGs in `Timeline.Window` and `Timeline.Period`
icbaker Jun 20, 2023
b1522b4
Add a section to `CONTRIBUTING.md` about push access to PR forks
icbaker Jun 21, 2023
69c6038
Merge release notes for media3 1.1.0 stable release
tof-tof Jun 22, 2023
ece76c4
Version bump to media3-1.1.0 and exoplayer 2.19.0
tof-tof Jun 23, 2023
bf4561c
Removing @CallSuper from [add,remove]Listener of ForwardingListener.
a-googler Jun 26, 2023
5fdeabb
Version bump for exoplayer 2.19.0 continued
tof-tof Jun 26, 2023
1d73c68
Fix version bump for media3:1.1.0
tof-tof Jun 26, 2023
ec13c42
Do not trim audio samples by changing their timestamp
tonihei Jun 26, 2023
7683ee2
Use different package names in DiagnosticInfo for media3 and exoplayer
tianyif Jun 26, 2023
f768fed
Clarify MediaPeriod.readDiscontinuity Javadoc
tonihei Jun 28, 2023
52706b2
Ensure that ShuffleOrder has the same length as the current playlist
tianyif Jun 28, 2023
00005cb
Replace [email protected] with [email protected]
icbaker Jun 30, 2023
aa34db4
CEA-608: Only truncate to 32 visible characters
icbaker Jun 30, 2023
26ee4c3
Replace [email protected] with [email protected]
tonihei Jul 3, 2023
cb7b386
Add nanoTime method to Clock to support overriding System.nanoTime()
microkatz Jul 3, 2023
bcde7e0
Include timing info in some SCTE-35 `toString` implementations
icbaker Jul 4, 2023
3a66617
Merge pull request #487 from vishnuchilakala:allow_unsigned_int_for_a…
microkatz Jul 5, 2023
aefba8a
Remove dead code in ProgressiveMediaSource.Builder
tonihei Jun 30, 2023
5328d64
Merge pull request #498 from androidx/release-1.1.0
tof-tof Jul 5, 2023
0c6cfea
Replace `BitArray.skipBytes()` with `BitArray.skipBits()`
rohitjoins Jul 5, 2023
9de5684
Change multidex dependency type to androidTestImplementation
tonihei Jul 6, 2023
405e5a6
Fix incorrect class name for MediaPipe demo
andrewlewis Jul 6, 2023
bae3876
Clarify that new `ConditionVariable` instances are closed
icbaker Jul 10, 2023
c1261aa
Remove javadoc `@link` from non-javadoc comments
icbaker Jul 10, 2023
996755c
Expand `@UnstableApi` javadoc with how to request stable API additions
icbaker Jul 11, 2023
7d35f18
Add custom layout to the state of the MediaController
marcbaechinger Jul 11, 2023
272c844
Add fields streaming format(sf), stream type(st) and version(v)
rohitjoins Jul 12, 2023
77fb652
Replace `Dummy` with `Placeholder`
rohitjoins Jul 13, 2023
88e3401
Fix dependencies for UI module
rohitjoins Jul 14, 2023
57d0c19
Add tests for `DefaultSsChunkSource`
rohitjoins Jul 14, 2023
0983500
Prepend Ogg ID and Comment Header Pages to offloaded Opus stream
microkatz Jul 14, 2023
d4c66e5
Remove duplicated release note entry
tonihei Jul 14, 2023
3931c28
Fix race condition in clipped sample streams
tonihei Jul 17, 2023
6443614
Add fields top bitrate(tb) and object duration(d)
rohitjoins Jul 18, 2023
7352a1b
Add field measured throughput (mtp)
rohitjoins Jul 19, 2023
eaf4a2b
Tighten the demo app's handling of `DrmInitData` for downloads
icbaker Jul 20, 2023
db336d5
Add comment about out-of-order timestamps in `AtomParsers.parseStbl`
icbaker Jul 24, 2023
ac175a9
Fix ms to us conversion bug in DecoderVideoRenderer
tonihei Jul 26, 2023
ab2505d
Only use result.sendError where supported by legacy media library
marcbaechinger Jul 26, 2023
50db520
Fix parsing of H.265 sequence parameter sets
andrewlewis Jul 28, 2023
e8a4894
Fix wrong documentation and add missing annotations
rohitjoins Aug 1, 2023
46c757b
Simplify and accurately compute chunk duration
rohitjoins Aug 1, 2023
c0c67dd
Update translations
tianyif Aug 7, 2023
4b3a4b3
Check command availability before getting tracks in PlayerView
kim-vde Aug 7, 2023
7e58fde
Use ceiling divide logic in `AudioTrackPositionTracker.hasPendingData`
icbaker Aug 7, 2023
57c73d5
Add field object type (ot)
rohitjoins Aug 8, 2023
bab04eb
Verify source is not released before updating ad playback state
tonihei Aug 9, 2023
4af6fcb
Bump IMA SDK version to 3.30.3
rohitjoins Aug 9, 2023
2fb3a45
Fix Gradle Lint with @RequiresApi and SDK version
oceanjules Aug 9, 2023
294fa26
Merge pull request #528 from zgzong:patch-2
tianyif Aug 10, 2023
136f087
Fix `PlayerWrapper`'s creation of `VolumeProviderCompat`
oceanjules Aug 8, 2023
8ff61a1
Stop setting `-no-module-directories` in ExoPlayer javadoc generation
icbaker May 31, 2023
0cf3ab3
Factor out video decoding and fix two minor issues
claincly Jun 12, 2023
a842e62
Update release notes for Media3 1.1.1
tianyif Aug 11, 2023
9c7cf22
Bump version numbers to Media3 1.1.1 and ExoPlayer 2.19.1
tianyif Aug 11, 2023
3f36610
Fix Media3 1.1.1 release notes
tianyif Aug 14, 2023
12332a4
Remove FfmpegVideoRenderer from Media3 1.2.0 release
oceanjules Oct 2, 2023
4acce9b
Update playlist UI when playlist is updated
marcbaechinger Sep 29, 2023
1c7b426
Mark test_session_current support app as MultiDexApplication
icbaker Oct 2, 2023
ecfddb9
MediaCodeVideoRenderer: flush video sink before codec
christosts Oct 2, 2023
948491f
Merge pull request #574 from hugohlln:main
copybara-github Oct 2, 2023
ffe65b3
Fix `Util.scaleLargeValue/Timestamp` to handle negative numbers
icbaker Oct 3, 2023
27d6a9b
Deprecate experimental keepAudioTrackOnSeek methods.
Samrobbo Oct 3, 2023
bc3dded
Explicitly mark DecoderOutputBuffer as shouldBeSkipped if needed
tonihei Oct 3, 2023
484339e
Add Dumper support for outputting multiline strings
oceanjules Oct 3, 2023
e4637d8
Add DashPlayback test with sideloaded TTML subtitles
oceanjules Oct 3, 2023
2564c11
Disable offload scheduling at set up for track transition
microkatz Oct 3, 2023
0480b70
Move decode-only handling out of MetadataDecoder interface logic
tonihei Oct 3, 2023
7957554
Add nullness annotations to `MediaCodecRenderer`
rohitjoins Oct 3, 2023
5563365
Add nullness annotations to `DecoderVideoRenderer`
rohitjoins Oct 3, 2023
6d2bf51
Add onAudioTrackInitialized/Released events
tonihei Oct 4, 2023
c99c71b
Update getName of BitmapFactoryImageDecoder
tof-tof Oct 4, 2023
889739d
Replace ENCODING_DTS_UHD_P2 value by reference to platform constant
tonihei Oct 4, 2023
7bfddf9
Remove wrong Javadoc
tonihei Oct 4, 2023
df85a99
Add Decoder.setOutputStartTimeUs and use it in extension decoders
tonihei Oct 4, 2023
1a0000d
Add `CuesWithTiming.endTimeUs`
icbaker Oct 5, 2023
21c714d
Use RTSP Setup response timeout value in KeepAliveMonitor intervalMs
microkatz Oct 5, 2023
fbb64e2
Remove experimental keepAudioTrackOnSeek.
Samrobbo Oct 5, 2023
3c414fc
Update documentation wrongly referencing the decode-only flag
tonihei Oct 5, 2023
a4582be
Change equalTo check in ImagePlaybackTest to atLeast
tof-tof Oct 5, 2023
dad362b
Add tests for `CuesWithTiming.endTimeUs`
icbaker Oct 5, 2023
03008b9
Remove release notes lines added by merge conflict
tonihei Oct 5, 2023
7e9ca0b
Deprecate decode-only flag.
tonihei Oct 6, 2023
da5a743
Add MEDIA_PLAY_FROM_SEARCH to manifest of session demo app
marcbaechinger Oct 6, 2023
5d0d30a
Allow pause if in offload mode after writing all buffers
microkatz Oct 6, 2023
f43d0f1
Update cached playbackHeadPosition when pausing after AudioTrack.stop()
microkatz Oct 6, 2023
efb8c70
Add multidex Gradle dependency to test-session-current
oceanjules Oct 6, 2023
f776021
Deflake RTSP keep-alive monitor test
microkatz Oct 6, 2023
ef013c0
Bump Media3 version numbers for 1.2.0-beta01 release
oceanjules Oct 9, 2023
c16accb
Update RELEASENOTES.md for 1.2.0-beta01 release
oceanjules Oct 9, 2023
2ae6b1e
Rollback of https://github.com/androidx/media/commit/64bd3bcad3fa4b0e…
tonihei Oct 19, 2023
a8b0bd7
Do not hide System UI when app rejects connection
marcbaechinger Oct 19, 2023
cb67b16
Merge pull request #728 from lawadr:audio-capabilities-fix
copybara-github Oct 19, 2023
e1ad106
Add missing command checks to playback resumption flow
tonihei Oct 19, 2023
9ac6f89
Remove CompositionPlayer activity from the transformer demo app
droid-girl Oct 19, 2023
47a451a
Update translations in the ui module
rohitjoins Oct 20, 2023
f2cf43c
Use MediaSessionImpl.onMediaButtonEvent() to dispatch key events
marcbaechinger Oct 20, 2023
6ad54d7
Update `TextRenderer` to handle `CuesWithTiming` instances directly
icbaker Oct 5, 2023
1818d46
Return true from `CuesResolver.addCues` if the output changed
icbaker Oct 6, 2023
3ba8459
Report dropped frames from the VideoSink
christosts Oct 9, 2023
99ea703
Fix the asset and dump file names for the standalone TTML DASH test
icbaker Oct 9, 2023
fdaf9b4
Use more targeted listening in session PlayerActivity
tonihei Oct 9, 2023
f799259
...Update metalava library and Reformat api.txt...
a-googler Oct 9, 2023
c913237
Fix the resumption of playback when suitable device is connected.
a-googler Oct 10, 2023
7d063e9
Add missing Future cancellation checks
tonihei Oct 10, 2023
77bccf0
Make BundleListRetriever local Binder aware
tonihei Oct 10, 2023
bd24e78
Use package-level `@OptIn` for demo apps
icbaker Oct 10, 2023
69749c5
Align audio adaptive support checks with video
tonihei Oct 10, 2023
d078baf
Remove unneccessary method parameter
tonihei Oct 10, 2023
292701b
Add `SubtitleParser.Factory.getCueReplacementBehavior()`
icbaker Oct 10, 2023
2ec24ac
Update `@UnstableApi` docs to include a `package-info.java` example
icbaker Oct 10, 2023
7254f5a
Do not interrupt controller thread without a good reason
tonihei Oct 10, 2023
03a3f77
Add experimental opt-in to parse DASH subtitles during extraction
icbaker Oct 10, 2023
4b85207
Add MediaSession.Builder().setPeriodicPositionUpdateEnabled()
marcbaechinger Oct 11, 2023
de3eb67
Request notification permission when starting session demo app
icbaker Oct 11, 2023
ec21b9e
Update release notes to mention AudioOffloadPreference class changes
microkatz Oct 11, 2023
0255f3b
Check whether a session is still managed before removing
marcbaechinger Oct 11, 2023
7d61461
Split available command filtering and bundling
tonihei Oct 11, 2023
d7044c7
Avoid bundling PlayerInfo for in-process calls
tonihei Oct 12, 2023
24c39b6
Migrate `SubtitleParser` tests to incremental `parse()` methods
icbaker Oct 12, 2023
c7186c9
Merge pull request #650 from cedricxperi:dts-lbr-buffer-underflow-fix
copybara-github Oct 12, 2023
b77a253
Change `LegacySubtitleUtil` handling of `SubtitleParser.OutputOptions`
icbaker Oct 13, 2023
74277b1
Remove the 'super speed' SmoothStreaming PlayReady stream from demo
icbaker Oct 13, 2023
f77f3df
Migrate `SubtitleParser` implementations to incremental `parse()`
icbaker Oct 13, 2023
3244318
Test more URI forms in `RawResourceDataSourceContractTest`
icbaker Oct 13, 2023
b65136e
Remove deprecated `DownloadNotificationHelper.buildProgressNotification`
a-googler Oct 13, 2023
2a7d85e
Calculate HLS live playlist refresh interval accurately
tianyif Oct 13, 2023
e46ee01
Expand MediaItems in session demo instead of just replacing them
tonihei Oct 16, 2023
386d223
Only set the queue when COMMAND_GET_TIMELINE is available
marcbaechinger Oct 16, 2023
85167f1
Send `ConnectionState` as in-process bundle if possible
marcbaechinger Oct 16, 2023
8e48433
Send media button events from service directly using `MediaSessionImpl`
marcbaechinger Oct 16, 2023
f290d0e
Move DASH subtitle parsing release note to correct section
icbaker Oct 17, 2023
29846d0
Merge pull request #491 from v-novaltd:dsparano-exo128
copybara-github Oct 17, 2023
ee83baf
Publish MIDI decoder module on Maven repository
christosts Oct 17, 2023
fcb3315
Rollback of https://github.com/androidx/media/commit/64bd3bcad3fa4b0e…
a-googler Oct 17, 2023
9ace485
Rollback of https://github.com/androidx/media/commit/4ebe630a80296cbb…
a-googler Oct 18, 2023
5a4adc9
Fix MIDI decoder build.gradle
christosts Oct 18, 2023
fe60d0d
Use DataSourceBitmapLoader by default
tonihei Oct 18, 2023
111ac63
Send decode-only Opus samples in bypass mode for seekPreRoll skip
microkatz Oct 18, 2023
5d6fefe
Add formatting to `scheme` list in `DefaultDataSource` javadoc
icbaker Oct 18, 2023
21cb3a6
Rollback of https://github.com/androidx/media/commit/4ebe630a80296cbb…
tonihei Oct 18, 2023
4c778ed
Rollback of https://github.com/androidx/media/commit/eafe2e35f0f343d9…
a-googler Oct 19, 2023
c997c71
Update RELEASENOTES for 1.2.0-rc01 release
rohitjoins Oct 23, 2023
7a2d80d
Bump Media3 version numbers for 1.2.0-rc01
rohitjoins Oct 23, 2023
1c54c39
Reorder RELEASENOTES to move unreleased changes to correct section
rohitjoins Oct 23, 2023
3d6ac7f
Add `com.github.philburk:jsyn` to JAR list
rohitjoins Oct 24, 2023
7991838
Rollback of https://github.com/androidx/media/commit/a19f577976fc670c…
icbaker Oct 27, 2023
a2679fb
Bump media3 versions to 1.2.0 (stable)
oceanjules Nov 9, 2023
f90726a
Merge release notes for media3 1.2.0 stable release
oceanjules Nov 9, 2023
1b83c59
Add `@OptIn` to fields in demo `PlayerActivity` now this is supported
icbaker Nov 14, 2023
2cc8afe
Remove recommendation to pin `annotation-experimental` to version 1.2.0
icbaker Nov 14, 2023
4f5038b
Merge branch 'release' into release-1.2.0
icbaker Nov 17, 2023
f6fe90f
Clean-up multi-line strings in YAML issue templates
icbaker Dec 12, 2023
79ce4f1
Fallback to legacy sizerate check for H264 if CDD PerfPoint check fails
microkatz Oct 23, 2023
a017080
Bump okhttp dependency to 4.12
icbaker Oct 27, 2023
fe8bbca
Remove stray parentheses from release notes
icbaker Oct 30, 2023
2237f49
Put the custom keys in MediaMetadataCompat to MediaMetadata.extras
tianyif Nov 1, 2023
07258aa
Add warning log if DASH manifest contains incomplete ClearKey info
icbaker Nov 1, 2023
2f4d475
Split media1/media3 conversion methods out of `MediaUtils`
icbaker Nov 1, 2023
4009427
Fix access to stale ByteBuffer in FfmpegAudioDecoder
tonihei Nov 2, 2023
d8d552a
Fix proguard rule to also keep referenced class name
tonihei Nov 3, 2023
f189af5
Remove old pre-releases from the github bug template
oceanjules Nov 8, 2023
2db9da5
Don't crash when receiving a bad playback state
a-googler Nov 9, 2023
21461ab
Parse "f800" as channel count of 5 for Dolby in DASH manifest
tianyif Nov 13, 2023
7901d1c
Expand frame drop workaround to Realme C11
andrewlewis Nov 13, 2023
b972276
Update recommended way to suppress `@UnstableApi` errors in `lint.xml`
icbaker Nov 15, 2023
69884e7
Workaround layout problems with Material Design
tonihei Nov 15, 2023
aab1c9a
Populate `MediaMetadata.extras` to `MediaMetadataCompat`
rohitjoins Nov 17, 2023
0038355
Use `.test` top level domain for test URI
rohitjoins Nov 20, 2023
5752a09
Return empty timeline when media info is null
marcbaechinger Nov 20, 2023
ea642a4
Add test case to test position conversion when POSITION_UNKNOWN
marcbaechinger Nov 21, 2023
c9f6ad0
Avoid clipping live offset override to min/max offsets
tonihei Nov 21, 2023
124eb31
MidiExtractor: mark only the first sample as key-frame
christosts Nov 21, 2023
5e86c4c
Add session extras to the state of the controller
marcbaechinger Nov 21, 2023
33484b0
Merge pull request #707 from equeim:ffmpeg-6.0
copybara-github Nov 23, 2023
4234bc7
Remove redundant ) in Javadoc
tonihei Nov 23, 2023
36f634d
Fix typo in `DashManifestParser`
icbaker Nov 24, 2023
97c9e23
Avoid value close to overflow for `KEY_OPERATING_RATE`
andrewlewis Nov 24, 2023
710c1b9
Work around codec frame rate issues in Redmi Note 9 Pro
andrewlewis Nov 27, 2023
19ee787
Restrict operating rate workaround to SM8550
andrewlewis Nov 27, 2023
db64831
Merge pull request #837 from superjohan:fix/android-14-clearkey
copybara-github Nov 27, 2023
d68c36e
Update emulator device names
tof-tof Nov 27, 2023
3f3287a
Exit early progressive loads if the load task is canceled
christosts Nov 29, 2023
fa268cf
Don't include null text or bitmaps in `Cue.toBundle()`
icbaker Nov 30, 2023
483426a
MCR: Ensure `mediaCrypto` and `codec` are atomically non-null
icbaker Dec 4, 2023
57187aa
Map VORBIS channel layout to Android layout
tonihei Dec 5, 2023
03eae4f
Limit processing Opus decode-only frames by seek-preroll in offload
microkatz Dec 5, 2023
c314123
Fix nullability issue in MediaControllerImplLegacy
a-googler Dec 5, 2023
ea72856
Add Robolectric e2e test support for HEVC content
icbaker Dec 5, 2023
482d5d6
Add extractor and playback tests for Pixel JPEG motion photo
icbaker Dec 5, 2023
7df03f3
TransformerEndToEndTest: replace /*testId=*/ with variable
tof-tof Dec 11, 2023
e509db2
Fix handling of multiple HEVC tracks in JPEG motion photos
icbaker Dec 11, 2023
89baa96
Fix handling of repeated EOS in `SilenceSkippingAudioProcessor`.
Samrobbo Dec 11, 2023
504bcd8
Merge pull request #867 from equeim:ndk-r26
copybara-github Dec 12, 2023
5001f70
Fix `VorbisComment.populateMediaMetadata` key comparison to ignore case
icbaker Dec 12, 2023
7d564f8
Merge pull request #864 from v-novaltd:dsparano-exo129_2
copybara-github Dec 12, 2023
33a5190
Combine 'matching' versions in media3 bug template
icbaker Dec 13, 2023
c8a403e
Merge pull request #753 from stevemayhew:p-fix-issue-9347
copybara-github Dec 14, 2023
09d30a1
Fix broadcasting notifyChildrenChanged for legacy controllers
marcbaechinger Dec 14, 2023
4231a1d
Use different wraparound assumptions for duration readers
tonihei Dec 14, 2023
6236fd3
Fix sending negative `bufferedDurationUs` to `CmcdData.Factory`
rohitjoins Dec 15, 2023
5d7c914
Add Widevine license renewal example to demo app
icbaker Dec 19, 2023
1da24b2
Add container to `Format.toLogString`
icbaker Dec 19, 2023
b68173a
Merge pull request #914 from cemrich:366-forward-time-wrong
copybara-github Dec 21, 2023
b9d205b
Expand operating rate workaround to T612 chipset
andrewlewis Dec 21, 2023
d1b882a
Don't set negative values to setWhen()
marcbaechinger Dec 29, 2023
77d220c
Merge pull request #369 from Tolriq:fix_invalid_frames
copybara-github Jan 4, 2024
141f9b7
Return null if media notification controller Future is not done
marcbaechinger Jan 4, 2024
d55b334
Clarify docs on `Player.setMediaItem(s)` and `replaceMediaItem(s)`
icbaker Jan 4, 2024
f0d24cb
Fix BitmapOverlay to have public constructor
microkatz Jan 9, 2024
1f79a0a
Bump media3 version to 1.2.1 and update RELEASENOTES
microkatz Jan 9, 2024
0ae7a6b
Fix typo of missing closing parentheses in RELEASENOTES
microkatz Jan 11, 2024
b930b40
Fix merge error with ffmpeg_jni.cc
microkatz Jan 17, 2024
1a65c69
Update PgsParser.java
SimonHung Jan 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
40 changes: 13 additions & 27 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,27 @@ body:
- type: markdown
attributes:
value: |
We can only process bug reports that are actionable. Unclear bug reports or reports with
insufficient information may not get attention.
We can only process bug reports that are actionable. Unclear bug reports or reports with insufficient information may not get attention.

Before filing a bug:
-------------------------

- Search existing issues, including issues that are closed:
https://github.com/androidx/media/issues?q=is%3Aissue
- For ExoPlayer-related bugs, please also check for existing issues on the ExoPlayer
tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
- Search existing issues, including issues that are closed: https://github.com/androidx/media/issues?q=is%3Aissue
- For ExoPlayer-related bugs, please also check for existing issues on the ExoPlayer tracker: https://github.com/google/ExoPlayer/issues?q=is%3Aissue
- type: dropdown
attributes:
label: Version
description: What version of Media3 (or ExoPlayer) are you using?
options:
- Media3 1.1.1
- Media3 1.1.0
- Media3 1.0.2
- Media3 1.0.1
- Media3 1.0.0
- Media3 1.0.0-rc02
- Media3 1.0.0-rc01
- Media3 1.0.0-beta03
- Media3 1.0.0-beta02
- Media3 1.0.0-beta01
- Media3 1.0.0-alpha03
- Media3 1.0.0-alpha02
- Media3 1.0.0-alpha01
- Media3 `main` branch
- Media3 1.2.1
- Media3 1.2.0
- Media3 main branch
- Media3 pre-release (alpha, beta or RC not in this list)
- ExoPlayer 2.19.1
- ExoPlayer 2.19.0
- ExoPlayer 2.18.7
- ExoPlayer 2.18.6
- ExoPlayer 2.18.5
- Media3 1.1.1 / ExoPlayer 2.19.1
- Media3 1.1.0 / ExoPlayer 2.19.0
- Media3 1.0.2 / ExoPlayer 2.18.7
- Media3 1.0.1 / ExoPlayer 2.18.6
- Media3 1.0.0 / ExoPlayer 2.18.5
- ExoPlayer 2.18.4
- ExoPlayer 2.18.3
- ExoPlayer 2.18.2
Expand All @@ -54,14 +40,14 @@ body:
- ExoPlayer 2.14.2
- ExoPlayer 2.14.1
- ExoPlayer 2.14.0
- ExoPlayer `dev-v2` branch
- ExoPlayer dev-v2 branch
- Older (unsupported)
validations:
required: true
- type: textarea
attributes:
label: More version details
description: |
description: >
Required if you selected `main` or `dev-v2` (please provide an exact commit SHA),
or 'pre-release' or 'older' (please provide the version).
- type: textarea
Expand Down
365 changes: 242 additions & 123 deletions RELEASENOTES.md

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -226,8 +226,8 @@ package androidx.media3.common {

public final class MediaItem {
method public androidx.media3.common.MediaItem.Builder buildUpon();
method public static androidx.media3.common.MediaItem fromUri(String);
method public static androidx.media3.common.MediaItem fromUri(android.net.Uri);
method public static androidx.media3.common.MediaItem fromUri(String);
field public static final String DEFAULT_MEDIA_ID = "";
field public static final androidx.media3.common.MediaItem EMPTY;
field public final androidx.media3.common.MediaItem.ClippingConfiguration clippingConfiguration;
Expand Down Expand Up @@ -264,8 +264,8 @@ package androidx.media3.common {
method public androidx.media3.common.MediaItem.Builder setRequestMetadata(androidx.media3.common.MediaItem.RequestMetadata);
method public androidx.media3.common.MediaItem.Builder setSubtitleConfigurations(java.util.List<androidx.media3.common.MediaItem.SubtitleConfiguration>);
method public androidx.media3.common.MediaItem.Builder setTag(@Nullable Object);
method public androidx.media3.common.MediaItem.Builder setUri(@Nullable String);
method public androidx.media3.common.MediaItem.Builder setUri(@Nullable android.net.Uri);
method public androidx.media3.common.MediaItem.Builder setUri(@Nullable String);
}

public static class MediaItem.ClippingConfiguration {
Expand Down Expand Up @@ -617,8 +617,8 @@ package androidx.media3.common {

public class PlaybackException extends java.lang.Exception {
method @CallSuper public boolean errorInfoEquals(@Nullable androidx.media3.common.PlaybackException);
method public static String getErrorCodeName(@androidx.media3.common.PlaybackException.ErrorCode int);
method public final String getErrorCodeName();
method public static String getErrorCodeName(@androidx.media3.common.PlaybackException.ErrorCode int);
field public static final int CUSTOM_ERROR_CODE_BASE = 1000000; // 0xf4240
field public static final int ERROR_CODE_AUDIO_TRACK_INIT_FAILED = 5001; // 0x1389
field public static final int ERROR_CODE_AUDIO_TRACK_WRITE_FAILED = 5002; // 0x138a
Expand Down Expand Up @@ -674,8 +674,8 @@ package androidx.media3.common {
method public void addListener(androidx.media3.common.Player.Listener);
method public void addMediaItem(androidx.media3.common.MediaItem);
method public void addMediaItem(int, androidx.media3.common.MediaItem);
method public void addMediaItems(java.util.List<androidx.media3.common.MediaItem>);
method public void addMediaItems(int, java.util.List<androidx.media3.common.MediaItem>);
method public void addMediaItems(java.util.List<androidx.media3.common.MediaItem>);
method public boolean canAdvertiseSession();
method public void clearMediaItems();
method public void clearVideoSurface();
Expand Down Expand Up @@ -751,8 +751,8 @@ package androidx.media3.common {
method public void replaceMediaItems(int, int, java.util.List<androidx.media3.common.MediaItem>);
method public void seekBack();
method public void seekForward();
method public void seekTo(long);
method public void seekTo(int, long);
method public void seekTo(long);
method public void seekToDefaultPosition();
method public void seekToDefaultPosition(int);
method public void seekToNext();
Expand All @@ -765,8 +765,8 @@ package androidx.media3.common {
method @Deprecated public void setDeviceVolume(@IntRange(from=0) int);
method public void setDeviceVolume(@IntRange(from=0) int, int);
method public void setMediaItem(androidx.media3.common.MediaItem);
method public void setMediaItem(androidx.media3.common.MediaItem, long);
method public void setMediaItem(androidx.media3.common.MediaItem, boolean);
method public void setMediaItem(androidx.media3.common.MediaItem, long);
method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>);
method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, boolean);
method public void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, int, long);
Expand Down Expand Up @@ -1522,8 +1522,8 @@ package androidx.media3.session {
method public final void addListener(androidx.media3.common.Player.Listener);
method public final void addMediaItem(androidx.media3.common.MediaItem);
method public final void addMediaItem(int, androidx.media3.common.MediaItem);
method public final void addMediaItems(java.util.List<androidx.media3.common.MediaItem>);
method public final void addMediaItems(int, java.util.List<androidx.media3.common.MediaItem>);
method public final void addMediaItems(java.util.List<androidx.media3.common.MediaItem>);
method public final boolean canAdvertiseSession();
method public final void clearMediaItems();
method public final void clearVideoSurface();
Expand Down Expand Up @@ -1590,8 +1590,8 @@ package androidx.media3.session {
method public final boolean isLoading();
method public final boolean isPlaying();
method public final boolean isPlayingAd();
method public final boolean isSessionCommandAvailable(@androidx.media3.session.SessionCommand.CommandCode int);
method public final boolean isSessionCommandAvailable(androidx.media3.session.SessionCommand);
method public final boolean isSessionCommandAvailable(@androidx.media3.session.SessionCommand.CommandCode int);
method public final void moveMediaItem(int, int);
method public final void moveMediaItems(int, int, int);
method public final void pause();
Expand All @@ -1606,8 +1606,8 @@ package androidx.media3.session {
method public final void replaceMediaItems(int, int, java.util.List<androidx.media3.common.MediaItem>);
method public final void seekBack();
method public final void seekForward();
method public final void seekTo(long);
method public final void seekTo(int, long);
method public final void seekTo(long);
method public final void seekToDefaultPosition();
method public final void seekToDefaultPosition(int);
method public final void seekToNext();
Expand All @@ -1621,17 +1621,17 @@ package androidx.media3.session {
method @Deprecated public final void setDeviceVolume(@IntRange(from=0) int);
method public final void setDeviceVolume(@IntRange(from=0) int, @androidx.media3.common.C.VolumeFlags int);
method public final void setMediaItem(androidx.media3.common.MediaItem);
method public final void setMediaItem(androidx.media3.common.MediaItem, long);
method public final void setMediaItem(androidx.media3.common.MediaItem, boolean);
method public final void setMediaItem(androidx.media3.common.MediaItem, long);
method public final void setMediaItems(java.util.List<androidx.media3.common.MediaItem>);
method public final void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, boolean);
method public final void setMediaItems(java.util.List<androidx.media3.common.MediaItem>, int, long);
method public final void setPlayWhenReady(boolean);
method public final void setPlaybackParameters(androidx.media3.common.PlaybackParameters);
method public final void setPlaybackSpeed(float);
method public final void setPlaylistMetadata(androidx.media3.common.MediaMetadata);
method public final com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> setRating(String, androidx.media3.common.Rating);
method public final com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> setRating(androidx.media3.common.Rating);
method public final com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> setRating(String, androidx.media3.common.Rating);
method public final void setRepeatMode(@androidx.media3.common.Player.RepeatMode int);
method public final void setShuffleModeEnabled(boolean);
method public final void setTrackSelectionParameters(androidx.media3.common.TrackSelectionParameters);
Expand Down Expand Up @@ -1743,8 +1743,8 @@ package androidx.media3.session {
method public default void onDisconnected(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo);
method @Deprecated @androidx.media3.session.SessionResult.Code public default int onPlayerCommandRequest(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, @androidx.media3.common.Player.Command int);
method public default void onPostConnect(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo);
method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onSetRating(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, String, androidx.media3.common.Rating);
method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onSetRating(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, androidx.media3.common.Rating);
method public default com.google.common.util.concurrent.ListenableFuture<androidx.media3.session.SessionResult> onSetRating(androidx.media3.session.MediaSession, androidx.media3.session.MediaSession.ControllerInfo, String, androidx.media3.common.Rating);
}

public static final class MediaSession.ConnectionResult {
Expand Down
6 changes: 3 additions & 3 deletions constants.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
project.ext {
releaseVersion = '1.2.0-alpha02'
releaseVersionCode = 1_002_000_0_02
releaseVersion = '1.2.1'
releaseVersionCode = 1_002_001_3_00
minSdkVersion = 16
// See https://developer.android.com/training/cars/media/automotive-os#automotive-module
automotiveMinSdkVersion = 28
Expand Down Expand Up @@ -57,7 +57,7 @@ project.ext {
androidxTestServicesStorageVersion = '1.4.2'
androidxTestTruthVersion = '1.5.0'
truthVersion = '1.1.3'
okhttpVersion = '4.11.0'
okhttpVersion = '4.12.0'
modulePrefix = ':'
if (gradle.ext.has('androidxMediaModulePrefix')) {
modulePrefix += gradle.ext.androidxMediaModulePrefix
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
* limitations under the License.
*/
@NonNullApi
@OptIn(markerClass = UnstableApi.class)
package androidx.media3.demo.cast;

import androidx.annotation.OptIn;
import androidx.media3.common.util.NonNullApi;
import androidx.media3.common.util.UnstableApi;
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
* limitations under the License.
*/
@NonNullApi
@OptIn(markerClass = UnstableApi.class)
package androidx.media3.demo.gl;

import androidx.annotation.OptIn;
import androidx.media3.common.util.NonNullApi;
import androidx.media3.common.util.UnstableApi;
11 changes: 0 additions & 11 deletions demos/main/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,17 +72,6 @@ android {
dependencies {
compileOnly 'org.checkerframework:checker-qual:' + checkerframeworkVersion
implementation 'androidx.annotation:annotation:' + androidxAnnotationVersion
// Demonstrate downgrading the annotation-experimental version to avoid
// transitively depending on the Kotlin standard library (which was
// introduced as a dependency in annotation-experimental:1.3.0). This demo
// app still depends on Kotlin via the IMA extension and UI modules, but
// this shows how an app can avoid the Kotlin dependency if they don't use
// these modules.
implementation('androidx.annotation:annotation-experimental') {
version {
strictly '1.2.0'
}
}
implementation 'androidx.appcompat:appcompat:' + androidxAppCompatVersion
implementation 'androidx.multidex:multidex:' + androidxMultidexVersion
implementation 'com.google.android.material:material:' + androidxMaterialVersion
Expand Down
6 changes: 6 additions & 0 deletions demos/main/src/main/assets/media.exolist.json
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,12 @@
"drm_scheme": "widevine",
"drm_license_uri": "https://proxy.uat.widevine.com/proxy?video_id=GTS_HW_SECURE_ALL&provider=widevine_test"
},
{
"name": "20s license with renewal",
"uri": "https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd",
"drm_scheme": "widevine",
"drm_license_uri": "https://proxy.uat.widevine.com/proxy?video_id=GTS_CAN_RENEW&provider=widevine_test"
},
{
"name": "30s license (fails at ~30s)",
"uri": "https://storage.googleapis.com/wvmedia/cenc/h264/tears/tears.mpd",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,11 +93,11 @@ public class PlayerActivity extends AppCompatActivity

@Nullable private AdsLoader clientSideAdsLoader;

// TODO: Annotate this and serverSideAdsLoaderState below with @OptIn when it can be applied to
// fields (needs http://r.android.com/2004032 to be released into a version of
// androidx.annotation:annotation-experimental).
@Nullable private ImaServerSideAdInsertionMediaSource.AdsLoader serverSideAdsLoader;
@OptIn(markerClass = UnstableApi.class)
@Nullable
private ImaServerSideAdInsertionMediaSource.AdsLoader serverSideAdsLoader;

@OptIn(markerClass = UnstableApi.class)
private ImaServerSideAdInsertionMediaSource.AdsLoader.@MonotonicNonNull State
serverSideAdsLoaderState;

Expand Down
1 change: 1 addition & 0 deletions demos/session/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
<intent-filter>
<action android:name="androidx.media3.session.MediaSessionService"/>
<action android:name="android.media.browse.MediaBrowserService"/>
<action android:name="android.media.action.MEDIA_PLAY_FROM_SEARCH"/>
</intent-filter>
</service>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,11 @@
*/
package androidx.media3.demo.session

import android.Manifest
import android.content.ComponentName
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
import android.view.MenuItem
Expand All @@ -25,6 +28,7 @@ import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.ListView
import android.widget.TextView
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
Expand Down Expand Up @@ -81,6 +85,14 @@ class MainActivity : AppCompatActivity() {
}
}
)

if (
Build.VERSION.SDK_INT >= 33 &&
checkSelfPermission(Manifest.permission.POST_NOTIFICATIONS) !=
PackageManager.PERMISSION_GRANTED
) {
requestPermissions(arrayOf(Manifest.permission.POST_NOTIFICATIONS), /* requestCode= */ 0)
}
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
Expand All @@ -101,6 +113,23 @@ class MainActivity : AppCompatActivity() {
super.onStop()
}

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (grantResults.isEmpty()) {
// Empty results are triggered if a permission is requested while another request was already
// pending and can be safely ignored in this case.
return
}
if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(applicationContext, R.string.notification_permission_denied, Toast.LENGTH_LONG)
.show()
}
}

private fun initializeBrowser() {
browserFuture =
MediaBrowser.Builder(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ import com.google.common.util.concurrent.ListenableFuture
class PlayableFolderActivity : AppCompatActivity() {
private lateinit var browserFuture: ListenableFuture<MediaBrowser>
private val browser: MediaBrowser?
get() = if (browserFuture.isDone) browserFuture.get() else null
get() = if (browserFuture.isDone && !browserFuture.isCancelled) browserFuture.get() else null

private lateinit var mediaList: ListView
private lateinit var mediaListAdapter: PlayableMediaItemArrayAdapter
Expand Down Expand Up @@ -88,7 +88,7 @@ class PlayableFolderActivity : AppCompatActivity() {
browser.shuffleModeEnabled = true
browser.prepare()
browser.play()
browser?.sessionActivity?.send()
browser.sessionActivity?.send()
}

findViewById<Button>(R.id.play_button).setOnClickListener {
Expand Down
Loading