-
Notifications
You must be signed in to change notification settings - Fork 0
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
Feat/doris 2023 migrate media 1.2 #19
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
These were accidentally added in androidx/media@885ddb1 PiperOrigin-RevId: 565035337
As discussed offline, this is important for users of the class, and not all users may choose to read method javadoc, so best to make sure it's visible by leaving it at the class-level. PiperOrigin-RevId: 565057677
This change introduces two new types of method to `SubtitleParser`: 1. `parse()` methods that take a `Consumer<CuesWithTiming>` and return `void` 2. `parseToLegacySubtitle` method that returns `Subtitle` (1) ensures that in the new 'parse before SampleQueue' world we can write cues to the `SampleQueue` as soon as they're ready - this is especially important when parsing monolithic text files, e.g. for a whole movie. (2) ensures that during the transition, the legacy 'parse after SampleQueue' behaviour doesn't see any regressions in 'time to first cue being shown'. Previously we had a single implementation to convert from `List<CuesWithTiming>` to `Subtitle`, but this relies on the complete list of cues being available, which can take a long time for large files in some formats (with ExoPlayer's current parsing logic). By allowing implementations to customise the way they create a `Subtitle`, we can directly re-use the existing logic, so that the 'time to first cue being shown' should stay the same. This change migrates all **usages** to the new methods, but doesn't migrate any **implementations**. I will migrate the implementations in follow-up CLs before deleting the old list-returning `parse()` methods. PiperOrigin-RevId: 565057945
These methods were updated to use the new overflow-resistant `scaleLargeValue` method in androidx/media@885ddb1. PiperOrigin-RevId: 565059609
PiperOrigin-RevId: 565066243
PiperOrigin-RevId: 565069442
This test composites the first frame from two video inputs. PiperOrigin-RevId: 565090338
The logic that handles components' boundaries are grouped together in private methods, like handling VideoCompositor's output textures. PiperOrigin-RevId: 565131579
These tests were under androidTest because we needed a functional BitmapFactory. Robolectric now supports decoding bitmaps so moving them under tests. PiperOrigin-RevId: 565181239
PiperOrigin-RevId: 565388982
PiperOrigin-RevId: 565395263
Android's version of Guava was upgraded in http://r.android.com/2731599 PiperOrigin-RevId: 565396612
When we switch from MUXER_MODE_MUX_PARTIAL_VIDEO to MUXER_MODE_APPEND_VIDEO `muxedPartialVideo` will already be `true` so `endTrack` method will pass through this `if(muxedPartialVideo)` check which is incorrect. PiperOrigin-RevId: 565398117
This previously was in the VideoCompositor class, but wasn't referenced at all from that interface. PiperOrigin-RevId: 565409646
PiperOrigin-RevId: 565410924
Organize logic a bit by splitting logic about how we draw using OpenGL onto a texture, out from the larger class, which has lots of logic discussing how we select frames and streams. No functional change intended, but a few method calls are shuffled around to simplify things. PiperOrigin-RevId: 565426225
When running on emulators, ExternalTextureManager needs a longer timeout for forcing EOS, but we didn't catch a device name running on blaze: `generic_x86` PiperOrigin-RevId: 565513152
If getProgress is blocking whilst the internal thread calls endInternal (for error or success), the condition is never opened. Related to this, onCompleted and onError are therefore never surfaced to the app. progressState is accessed from application and internal threads, so should be marked volatile to prevent a thread caching the value. PiperOrigin-RevId: 565720184
PiperOrigin-RevId: 566257915
PiperOrigin-RevId: 566258299
PiperOrigin-RevId: 566272132
PiperOrigin-RevId: 566327798
PiperOrigin-RevId: 566571653
This is because `onOutputSizeChanged()` should in theory be called on the listener executor. PiperOrigin-RevId: 566591784
This requires adapting the 'to `CuesWithTiming` list' logic to work with the new partial-output API, and that needs a private method so it's no longer a good fit for a default method on `Subtitle` - hence moving it to a new utility class. Also update the implementation to never return `UNSET` duration (this is an equivalent change to the `SsaParser` change in androidx/media@9631923). PiperOrigin-RevId: 566598094
PiperOrigin-RevId: 566598735
PiperOrigin-RevId: 566607528
PiperOrigin-RevId: 566636545
PiperOrigin-RevId: 566645434
PiperOrigin-RevId: 566651267
PiperOrigin-RevId: 590234505 (cherry picked from commit f465efe)
#minor-release PiperOrigin-RevId: 590586491 (cherry picked from commit 9a76616)
PiperOrigin-RevId: 590862514 (cherry picked from commit ab296ef)
When broadcasting a notifyChildrenChanged event, the task for legacy controllers was sent to the broadcasting callback. This would technically work, but because the subscription list is maintained with specific controllers, the broadcast controller isn't subscribed and hence the call wasn't executed. This change calls the overloaded method for a specific controller for each connected controller. Making sure (only) subscribed controllers are notified. Issue: androidx/media#644 PiperOrigin-RevId: 590904037 (cherry picked from commit 4974f96)
The timestamp adjuster also estimates the number of wraparounds of the 90Khz TS timestamp. It does that by assuming that a new timestamp is always close to the previous one (in either direction). This logic doesn't always work for duration estimates because the timestamp at the end of the media is not close to the one at the beginning and it may also never be less than the one at the beginning. This can be fixed by introducing a new estimation model that assumes the new timestamp is strictly greater than the previous one without making the assumption that it has to be close to it. Issue: androidx/media#855 #minor-release PiperOrigin-RevId: 590936953 (cherry picked from commit 0157878)
When track is changed during playback, `playbackPositionUs` may be in middle of a chunk and `loadPositionUs` should be the start of that chunk. In this situation `loadPositionUs` can be less than the current `playbackPositionUs`, resulting into negative `bufferedDurationUs`. It translates to having no buffer and hence we should send `0` for `bufferedDurationUs` when creating new instances of `CmcdData.Factory`. Issue: androidx/media#888 #minor-release PiperOrigin-RevId: 591099785 (cherry picked from commit 7f6596b)
PiperOrigin-RevId: 592182371 (cherry picked from commit 0b8a9a2)
While investigating Issue: androidx/media#887 I naively assumed the CEA-608 captions were in a TS file, but they're actually in an MP4 (which is possibly obvious given DASH only supports MP4). This change includes container info in the `EventLogger` `tracks` output. PiperOrigin-RevId: 592192752 (cherry picked from commit 6853ffc)
PiperOrigin-RevId: 592871532 (cherry picked from commit 966b517)
PiperOrigin-RevId: 592916187 (cherry picked from commit 1845a4a)
When the 'when' timer of the notification is disabled `DefaultMediaNotificationProvider` may set `C.TIME_UNSET` as the time. Users reported problems on some devices with this and the docs ask for an event time that probably shouldn't be a negative number. This change sets `0L` instead of `C.TIME_UNSET` when the timer is disabled. Issue: androidx/media#903 #minor-release PiperOrigin-RevId: 594451074 (cherry picked from commit 426bc94)
PiperOrigin-RevId: 595650068 (cherry picked from commit 8eda9f2)
When the media notification controller is requested for a session with `getConnectedControllerForSession` and the `Future` is not null but not yet completed, the `Future` was returned either way. This was reported as creating a race condition between the notification being requested for update the very first time, and the media notification controller having completed connecting to the session. Returning null from `getConnectedControllerForSession` when the `Future` is available but not yet done fixes the problem. This is safe because for the case when a notification update is dropped, the media notification controller will trigger the update as soon as the connection completes. Issue: androidx/media#917 #minor-release PiperOrigin-RevId: 595699929 (cherry picked from commit 5c50b27)
These methods sound similar, but have different behaviour. This change tries to make the distinction clearer, and sign-post from one to the other. #minor-release Issue: androidx/media#910 PiperOrigin-RevId: 595701540 (cherry picked from commit 95e7429)
PiperOrigin-RevId: 596916027 (cherry picked from commit 324e1be)
PiperOrigin-RevId: 597496311
Fix merge error with ffmpeg_jni.cc where cherry-pick process included code from nonselected commit.
…S-2023-migrate-media-1.2
…tible version of Kotlin. The binary version of its metadata is 1.9.0, but our target is 1.7
szaboa
previously approved these changes
Feb 6, 2024
szaboa
approved these changes
Feb 19, 2024
guoen21
pushed a commit
that referenced
this pull request
Nov 22, 2024
These were missed when upgrading to both SDK 19 and 21, but they now cause failures like: ``` Caused by: java.lang.RuntimeException: Failed to parse package buildout/intermediates/apk_for_local_test/debugUnitTest/packageDebugUnitTestForUnitTest/apk-for-local-test.ap_: buildout/intermediates/apk_for_local_test/debugUnitTest/packageDebugUnitTestForUnitTest/apk-for-local-test.ap_ (at Binary XML file line #20): Requires newer sdk version #21 (current version is #19) at org.robolectric.shadows.ShadowPackageParser.callParsePackage(ShadowPackageParser.java:61) ... 20 more ``` #cherrypick PiperOrigin-RevId: 670241471
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Tickets:
https://dicetech.atlassian.net/browse/DORIS-2023
https://dicetech.atlassian.net/browse/DORIS-2103
https://dicetech.atlassian.net/browse/DORIS-2112
Bump the forked media3 from 1.0.2 to 1.2.1.