forked from androidx/media
-
Notifications
You must be signed in to change notification settings - Fork 0
Merge from androidx/media #11
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
Merged
ybai001
merged 6,087 commits into
DolbyLaboratories:dlb/ac4-level4-dash/dev
from
androidx:main
Sep 25, 2024
Merged
Merge from androidx/media #11
ybai001
merged 6,087 commits into
DolbyLaboratories:dlb/ac4-level4-dash/dev
from
androidx:main
Sep 25, 2024
Conversation
This file contains hidden or 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
This is a no-op change. PiperOrigin-RevId: 660370824
PiperOrigin-RevId: 660376007
PiperOrigin-RevId: 660417092
This is caused when the requested "output start time" is equal to or larger than the last event time in a `Subtitle` object. This resolves the error in Issue: #1516, but subtitles are still not renderered (probably because the timestamps aren't what we expect somewhere, but I need to investigate this part further). #cherrypick PiperOrigin-RevId: 660462720
PiperOrigin-RevId: 660491742
App users can choose arbitrary data that might not be anticipated by developers. Transformer shouldn't `checkState` based on media data or file type -- report an error for unsupported data instead. Public API change `ImageAssetLoader` needs to parse MIME type and now accepts `Context` as parameter. PiperOrigin-RevId: 660762459
Some RTSP servers may provide media descriptions for custom streams that are not supported. ExoPlayer should skip the invalid media description and continues parsing the following media descriptions. To start, ExoPlayer will still error on malformed SDP lines for media descriptions, but will now skip media descriptions with "non-parsable" formats as described by [RFC 8866 Section 5.14](https://datatracker.ietf.org/doc/html/rfc8866#section-5.14). Issue: #1472 PiperOrigin-RevId: 660826116
If the length of the `ExtractorInput` is not known then the `subtitleData` field is re-sized by 1kB each time (`SubtitleExtractor.DEFAULT_BUFFER_SIZE`), so the end of the array is often not populated. This change ensures that `length` is propagated to `SubtitleParser`, so that implementations don't try and parse the garbage/zero bytes at the end of the array. Discovered while investigating Issue: #1516 #cherrypick PiperOrigin-RevId: 661195634
This has the largest impact during operations with no encoder, such as frame extraction. Add a matching performance test. PiperOrigin-RevId: 661220044
The exiting code ensured that the timestamp is same only when it is set by the app. PiperOrigin-RevId: 661283124
This is an additional signal that legacy subtitle support needs to be explicitly enabled, and is going away at some point. PiperOrigin-RevId: 661305694
PiperOrigin-RevId: 661323230
PiperOrigin-RevId: 661516063
After this change, a WakeLock of PowerManager#PARTIAL_WAKE_LOCK level would be acquired when the media is paused due to playback attempt without suitable output. This WakeLock will be release either when the suitable media output has been connected or the set timeout to do so has expired. PiperOrigin-RevId: 661570346
PiperOrigin-RevId: 661992546
PiperOrigin-RevId: 662063725
Video playback will be disabled if *any* `EditedMediaItem` removes video. This is consistent with Transformer. PiperOrigin-RevId: 662093484
This is to reuse same logic in depth/edit file format `interleave` mode. PiperOrigin-RevId: 662117528
This is groundwork to moving `Atom` to the `container` library, which we want to do before making it public (so it can be used by `muxer` in future). PiperOrigin-RevId: 662453520
This is in preparation for making this class public. PiperOrigin-RevId: 662466043
Add an option to enable or disable video effects in preview or export. PiperOrigin-RevId: 662488658
Issue: #1581 #cherrypick PiperOrigin-RevId: 662515428
Check if the output device supports spatialization for the requested output format. If so, return a stream decoded for 6 channels in a 5.1 layout. Otherwise, return a stream decoded for 2 channels in a binaural layout. PiperOrigin-RevId: 662546818
Moving this field to `IamfDecoder` instead of `iamf_jni` allows multiple instances of the IAMF decoder with possibly different configurations at the same time. PiperOrigin-RevId: 662548068
When there is an exception thrown from the `LoadTask`, the `Loader` will call `Loader.Callback.onLoadError`. Some implementations of `onLoadError` method may call `MediaPeriod.onContinueLoadingRequested`, and in the `PreloadMediaSource`, its `PreloadMediaPeriodCallback` will be triggered and then it can further call `continueLoading` if it finds needed. However the above process is currently done synchronously, which will cause problem. By calling `continueLoading`, the `Loader` is set with a `currentTask`, and when that long sync logic in `Loader.Callback.onLoadError` ends, the `Loader` will immediately retry, and then a non-null `currentTask` will cause the `IllegalStateException`. Issue: #1568 #cherrypick PiperOrigin-RevId: 662550622
The TrackToken is primarily for public API. Using Track object internally will remove unnecessary type casting at various places. PiperOrigin-RevId: 662564224
PiperOrigin-RevId: 662793513
This method was added in API 31 (S) but it's non-functional (incorrectly, silently, returns `false`) on the Widevine plugin version (`16.0`) from R (API 30), which some devices up to at least API 34 are still using. This results in ExoPlayer incorrectly selecting an insecure decoder for L1 secure content, and subsequently calling `MediaCodec.queueInputBuffer` instead of `queueSecureInputBuffer`, which is not supported and generates the following error: > Operation not supported in this configuration: ERROR_DRM_CANNOT_HANDLE Issue: #1603 #cherrypick PiperOrigin-RevId: 662852176
Constant bit rate (CBR) seeking can be enabled even when the length of the file is not known. Additionally, dump files for these files have been updated to accurately log the `position` when `timeUs` is set to `0`. PiperOrigin-RevId: 662868607
Previous to this change, `FrameworkMediaDrm.requiresSecureDecoder` ignores its `sessionId` parameter on API 31+, and uses only the `mimeType` parameter. This means the result [assumes the session is opened at the 'default security level'](https://developer.android.com/reference/android/media/MediaDrm#requiresSecureDecoder(java.lang.String)): > The default security level is defined as the highest security level > supported on the device. This change is a no-op in all (?) cases, because the `ExoMediaDrm` interface only exposes the zero-arg `openSession()` method, which in the framework case **also** assumes the highest security level is preferred: > By default, sessions are opened at the native security level of the > device. However, it seems more obviously correct to only make this "highest/native security level" assumption in one place (`openSession()`), and check the session's **actual** security level everywhere else. Issue: #1603 PiperOrigin-RevId: 662872860
PiperOrigin-RevId: 675942348
This method is documented that it may only be called in `STATE_OPENED` or `STATE_OPENED_WITH_KEYS`. It's possible for it to be called in other states (like `STATE_ERROR`) without this guard. Previously this didn't cause issues, but since 9d62845 we assume that the `sessionId` is non-null in this method, which results in an `IllegalStateException` when the documented state restriction is ignored. PiperOrigin-RevId: 675969256
PiperOrigin-RevId: 675996979
- Added logic to parse media duration from the `mdhd` box for accurate frame rate calculation. - Fallbacks to track duration from `tkhd` when `mdhd` contains invalid or missing data. - Avoids incorrect frame rate calculations in MP4 files with an edit list (`elst`) box. - Adds frame rate calculations for partially fragmented MP4 files. - Verified accuracy with tools like `mediainfo` and `ffprobe`. Issue: #1531 **Note**: The slight difference in frame rate values in dump files that aren’t MP4s with an edit list or fragmented MP4s isn’t due to differences in `tkhd` and `mdhd` duration values (which should be identical for non-edited or non-fragmented files). Rather, it’s because they are calculated using different timescales. The `mvhd` box defines a global movie timescale, which is used for the track's `tkhd` duration. Meanwhile, each track’s `mdhd` box defines its own timescale specific to its content type, which we now use for more accurate frame rate calculation. PiperOrigin-RevId: 676046744
If this doesn't work, we could make this test resilient to frame drops by only comparing the frames that weren't dropped. PiperOrigin-RevId: 676294944
PiperOrigin-RevId: 676422122
Last buffer was not flipped, so was writing the garbage data between limit and capacity, rather than the actual data between position and limit. As a result, all PCM audio dump files need updating. PiperOrigin-RevId: 676452990
When sending a custom command with `browser.sendCustomCommand` when connected to a legacy browser service, the custom command was delivered to `MediaSessionCompat.Callback.onCustomAction` instead of the service method `onCustomAction`. The difference is that the service version can return an async response with a bundle, while the session callback version doesn't have a return value. Hence, the service method was never called and it wasn't possible to send a reponse or signal an error back to the browser. The resulting `ListanableFuture` simply always immediately resolved to a success. This change overrides `ListenableFuture<SessionResult> sendCustomCommand(SessionCommand command, Bundle args)` in `MediaBrowserImplLegacy` to use the `MediaBrowserCompat` method to send instead of the `MediaControlleCompat` method that was used by the subclass `MediaControllerImplLegacy`. This involves the service callback instead of the session callback and enables `MediaBrowser` to get the actual return value from the legacy service. Issue: #1474 #cherrypick PiperOrigin-RevId: 676519314
PiperOrigin-RevId: 676581325
This was accidentally added in the wrong place in 6bda0da PiperOrigin-RevId: 676841659
AudioTrack doesn't automatically ramp up the volume after a flush (only when resuming with play after a pause), which causes audible pop sounds in most cases. The issue can be avoided by manually applying a short 20ms volume ramp, the same duration used by the platform for the automatic volume ramping where available. Together with the already submitted 6147050, this fixes the unwanted pop sounds for most cases in the desired way. It only leaves two cases that are not handled perfectly: - If the media file itself contains a volume ramp at the beginning, we wouldn't need this additional ramping. Given the extremely short duration, this seems ignorable and we can treat it as a future feature request to mark the beginning of media in a special way that can then disable the volume ramping. - For seamless period transitions where we keep using the same AudioTrack, we may still get a pop sound at the transition. To solve this, we'd need a dedicated audio processor to either ramp the end of media down and the beginning of the next item up, or apply a very short cross-fade. Either way, we need new signalling to identify cases where the media originates from the same source and this effect should not be applied (e.g. when re-concatenating clipped audio snippets from the same file). PiperOrigin-RevId: 676860234
Some tests check all the output frames and fail if there are frames missing. PiperOrigin-RevId: 677676143
When working on SurfaceTexture crop fix, we accidentally switched to GL_NEAREST resampling. PiperOrigin-RevId: 677751819
This CL adds `SonicTest` and `RandomParameterizedSonicTest` as initial basic unit testing for `Sonic.java`. The tested scenarios do not necessarily verify a correct implementation of Sonic, but rather hope to catch any behaviour change from the current implementation. The change includes a small fix for a lossy simplification and also checks whether the output sample count matches the expected drift from the truncation accumulation error present in Sonic's resampler. This is important as pre-work for fixing issues with unexpected durations within `SonicAudioProcessor` and `SpeedChangingAudioProcessor` that cause AV sync issues for speed changing effects. This is a partial roll forward of e88d6fe, which was rolled back in 873d485. PiperOrigin-RevId: 677756854
Allow apps to preload the first period of the next window in the playlist of `ExoPlayer`. By default playlist preloading is disabled. To enable preloading, `ExoPlayer.setPreloadConfiguration(PreloadConfiguration)` can be called. `LoadControl` determines when to preload with its implemenation of `shouldContinuePreloading(timeline, mediaPeriodId, bufferedDurationUs)`. The implementation in `DefaultLoadControl` allows preloading only when the player isn't currently loading for playback. Apps can override this behaviour. Issue: #468 PiperOrigin-RevId: 677786017
Removed the unnecessary wrapping of items in an ImmutableList. PiperOrigin-RevId: 677796662
This boolean only exists to be changed in source, but it is now used as part of a 3-way fallback logic (since adding `HttpEngine` integration), so it's not really more convenient or clearer to change this constant than just hack the code of `getHttpDataSourceFactory` directly. PiperOrigin-RevId: 677834348
Some devices seem to throw an `IllegalArgumentException` when attempting to set a valid media button broadcast receiver for playback resumption. This change handles this exception as a no-op to avoid crashing the app. As a result, playback resumption with media keys isn't going to work on these devices. This change needs to be reverted once the root cause on these devices has been fixed (see internal bug ref in source). Issue: #1730 PiperOrigin-RevId: 677904243
…ts through a lambda function. This allows clients that implement this interface to submit customized event dispatching logic to the EventDispatcher's listeners
PiperOrigin-RevId: 677994281
The tests using createTimestampOverlay() were passing even if the effect was removed, because the overlay was too small. PiperOrigin-RevId: 678169395
PiperOrigin-RevId: 678207818
Access is package-private and it will allow the media controller logic to interact with the underlying platform session directly if needed. Interop: When a MediaController connects to an older session (before this change), it won't get the platform token from the session directly. Many controllers will be set up with a platform or compat token though and we can simply keep the already known token and use it. The only cases where we still don't have a platform token in the MediaController are the cases where the controller is created with a SessionToken based on a ComponentName. PiperOrigin-RevId: 678230977
PiperOrigin-RevId: 678235289
Improved string representation for legacy token and import for unambigious class name. PiperOrigin-RevId: 678256188
PiperOrigin-RevId: 678278666
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.
No description provided.