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.2 #10806
r2.18.2 #10806
Commits on Aug 1, 2022
-
Implement RGBA color matrices processor
* Transform frame colors using a defined RGBA Matrix to apply filters. PiperOrigin-RevId: 464523581 (cherry picked from commit 23f34f8)
Commits on Aug 2, 2022
-
PiperOrigin-RevId: 464767396 (cherry picked from commit 26dcdcf)
-
Update Leanback library from androidx-platform-dev with build#8803384
TGP: https://fusion2.corp.google.com/presubmit/tap/459592967/OCL:459592967:BASE:464692555:1659412331108:1ed6eb4e/targets If you need additional help investigating this issue, please consider using g/androidx-discuss to reach the wider Jetpack library owner and client community. For general questions about prebuilt drops, refer to go/androidx/g3_faq PiperOrigin-RevId: 464852576 (cherry picked from commit a3de13c)
Commits on Aug 3, 2022
-
Move effects functionality out of transformer to effects module.
PiperOrigin-RevId: 465038852 (cherry picked from commit 707b061)
-
Clean up FrameProcessor TODOs.
PiperOrigin-RevId: 465044342 (cherry picked from commit 245326a)
-
Clean up NOP constructor lines in RTP readers
PiperOrigin-RevId: 465067191 (cherry picked from commit 13e9ec9)
-
Fix saving previous debugSurfaceView in FinalMatrixTPWrapper.
PiperOrigin-RevId: 465067306 (cherry picked from commit bbb7b1c)
-
Avoid encoder default color info when tone-mapping
The encoder color info [defaults](https://cs.android.com/android/platform/superproject/+/master:frameworks/av/media/libstagefright/foundation/ColorUtils.cpp;l=377;drc=891c19ccfa4953b5e5f7b87118e007b994d8074c) to a value that depends on the input resolution, but when tone-mapping is enabled we should always get BT.709 color space. Hard-code this constant for now to avoid behavior depending on the resolution. A future change should use the decoder output media format to populate the color info. PiperOrigin-RevId: 465070378 (cherry picked from commit 40a28d5)
-
Remove clamp function in contrast fragment shader.
* OpenGL automatically clamps the output colors to the [0, 1] interval. PiperOrigin-RevId: 465071999 (cherry picked from commit 30fab8c)
Commits on Aug 4, 2022
-
Avoids disabling Offload on a write error, and instead relies on this being disabled on the AudioTrack init. It will no longer recover by disabling offload. PiperOrigin-RevId: 465248917 (cherry picked from commit 2fbe1bb)
-
Expose AudioOffload track state.
Adds a new event to AudioOffloadListener to get the offload state of the track, which indicates when software decoding is taking place. PiperOrigin-RevId: 465264362 (cherry picked from commit fe2b846)
-
Factor out RTP timestamp to sample time method
PiperOrigin-RevId: 465337074 (cherry picked from commit a1be6d6)
-
HDR: Add comment to clarify lack of support HDR10 for AVC
PiperOrigin-RevId: 465360186 (cherry picked from commit e63d594)
Commits on Aug 5, 2022
-
Add RgbAdjustment class to build RgbaMatrices
* Add RgbaMatrix interface implementation. * Add Builder class for easy adjustments. * Adjust existing RgbaMatrixPixelTests to use new RgbAdjustment class. PiperOrigin-RevId: 465545429 (cherry picked from commit 6502fce)
-
Use multiple output frames in transformer MediaPipe demo pre API 23.
PiperOrigin-RevId: 465545764 (cherry picked from commit 6da0a35)
-
PiperOrigin-RevId: 465562260 (cherry picked from commit aafa31e)
-
Make AudioTrackBufferSizeProvider public.
Was getting "java.lang.IllegalAccessError: Illegal class access" in debug app. PiperOrigin-RevId: 465562541 (cherry picked from commit c09b34a)
-
Fix ConcurrentHashMap usage in demo MediaPipeProcessor.
PiperOrigin-RevId: 465563540 (cherry picked from commit 6e4fc47)
-
Clarify SSIM request method name
`requestCalculateSsim` more clearly represents the intention of the caller. Also rephrase the javadoc to simplify it and make it more precise. PiperOrigin-RevId: 465575578 (cherry picked from commit d90d7d3)
-
Throw if tone-mapping is requested but not enabled
In the case where this check fails, the downstream frame processor chain won't be able to handle the incoming (SDR) data anyway as we've already set it up for HDR. PiperOrigin-RevId: 465584814 (cherry picked from commit 0e99d28)
Commits on Aug 8, 2022
-
Add support for multiple mid-track tempo changes
PiperOrigin-RevId: 466018462 (cherry picked from commit 4725cff)
-
Remove unused log tag constant
PiperOrigin-RevId: 466025324 (cherry picked from commit 273cf08)
-
Add a custom MIME type for MIDI
PiperOrigin-RevId: 466032455 (cherry picked from commit 3aa99d5)
-
HDR: Input ColorInfo to the FrameProcessor.
This allows the GlEffectsFrameProcessor to later handle HLG and PQ differently, or limited and full color range differently. No functional change intended in this CL. PiperOrigin-RevId: 466070764 (cherry picked from commit e444eaa)
Commits on Aug 9, 2022
-
Split GlTextureProcessor.Listener into input/output/error listener.
This simplifies ChainingGlTextureProcessor as it now only connects a consuming and a producing GlTextureProcessor rather than a previous, current, and next GlTextureProcessor. Also use default no-op implementations of the listeners in SingleFrameGlTextureProcessor and MediaPipeProcessor to avoid null-checks. PiperOrigin-RevId: 466301642 (cherry picked from commit a2166a4)
-
HDR: Rename ColorInfo#isHdr to isTransferHdr.
While HDR is most closely tied to the color transfer (ex. COLOR_TRANSFER_SDR is the only one explicitly mentioning dynamic range), technically color spaces may be associated with HDR as well, like BT.2020 commonly being used for HDR rather than BT.709 for SDR. Therefore, it's more specific to mention just that the transfer is HDR. PiperOrigin-RevId: 466316960 (cherry picked from commit 7075f78)
-
Remove times(1) from effect and transformer tests as it is the default.
PiperOrigin-RevId: 466324322 (cherry picked from commit 95a7dca)
-
Add JSyn library build instructions for the MIDI module
PiperOrigin-RevId: 466370644 (cherry picked from commit 96a2b14)
-
Demo: Add legacy external storage permission for intents.
Without this permission, files in `/sdcard` or other directories cannot be read by the demo, as they're not in the transformer demo's scoped storage container. For more information, see https://developer.android.com/training/data-storage/use-cases Tested by uninstalling and re-installing the demo app, granting permission by starting a transformation, and launching an intent using a local file in `/sdcard` to start another transformation. Without this CL, this threw an error, and with this CL it succeeded. PiperOrigin-RevId: 466399023 (cherry picked from commit 051dee6)
-
HDR: Update experimental_setEnableHdrEditing javadoc.
Previously, this feature interpreted SDR signals as HDR when called. Now, only HDR streams are interpreted as HDR, so the javadoc should be updated. Not yet removing this method, as there are still some loose ends to finish up (ex. PQ support, e2e tests). PiperOrigin-RevId: 466425738 (cherry picked from commit 2d2926b)
Commits on Aug 10, 2022
-
Avoid spinning in between intermediate texture processors.
This change adds a new method onReadyToAcceptInputFrame to GlTextureProcesssor.InputListener and changes maybeQueueInputFrame to queueInputFrame, removing the boolean return value. This avoids the re-trying in ChainingGlTextureProcessorListener by allowing it to only feed frames from the producing to the consuming GlTextureProcessor when there is capacity. MediaPipeProcessor still needs re-trying when processing isn't 1:1. PiperOrigin-RevId: 466626369 (cherry picked from commit 9c366b3)
-
HDR: Clarify tone mapping fallback.
createSupportedTransformationRequest is more accurate than createFallbackTransformationRequest, as a TransformationRequest will be returned regardless of whether any fallback is applied. PiperOrigin-RevId: 466641277 (cherry picked from commit 70972bb)
-
Fix ChainingGlTextureProcessorListener field name.
PiperOrigin-RevId: 466735554 (cherry picked from commit 43aa89a)
Commits on Aug 11, 2022
-
In some cases, the IMA SDK fails to call the expected loadAd event to load the next ad to play. This is (potentially) the only remaining case where playback can get stuck due to missing calls from IMA as the player doesn't even have a MediaSource at this stage and is only waiting for IMA to provide the ad URL. We can reuse the existing adPreloadTimeoutMs that was added for a similar purpose (when preloading the first ad in the group). The JavaDoc matches this purpose as well and the default timeout is appropriate since we expect to get the loadAd call immediately. Issue: #10510 PiperOrigin-RevId: 466953617 (cherry picked from commit 91fc5c4)
Commits on Aug 12, 2022
-
-
Avoid spinning while queueing input to ExternalTextureProcessor.
This change adds ExternalTextureManager which implements InputListener to only queue input frames to the ExternalTextureProcessor when it is ready to accept an input frame. This replaces the old retry-logic in GlEffectsFrameProcessor. Before this change, the retrying in GlEffectFrameProcessor wasted CPU time if input becomes available faster than the ExternalTextureProcessor can process it. PiperOrigin-RevId: 467177659 (cherry picked from commit 06ce5ec)
-
Refactor RgbaMatrix to RgbMatrix.
* Rename all Rgba instances to Rgb. * Remove alpha value from the RGBA Matrices and apply the 4x4 matrix only to the R, G, B channels. * Restore the alpha from the input unchanged. PiperOrigin-RevId: 467208888 (cherry picked from commit 80f9ad9)
Commits on Aug 15, 2022
-
Increase pixel difference threshold
PiperOrigin-RevId: 467610621 (cherry picked from commit ec7936f)
-
Add initial version of SimpleBasePlayer
This base class will simplify the implementation of custom Player classes. The current version only supports available commands and playWhenReady handling. PiperOrigin-RevId: 467618021 (cherry picked from commit 9a7fde8)
-
-
Increase max sample size for HEVC.
Increase the estimated max sample size for HEVC by 2x, and set a minimum size of 2MB. The 2MB will be applied for resolutions up to 1080p, after which the new calculation takes effect. This is in par with the platform's HEVC software decoder. PiperOrigin-RevId: 467641494 (cherry picked from commit d3d5ffc)
-
Allow high-priority tasks to be executed before other tasks.
This is needed as a pre-requisite for allowing MCVR to control FrameProcessor frame release for previewing. Submitting a high-priority task is conceptually different from posting at the front of a single queue of tasks, as the high-priority tasks are executed in FIFO order among themselves. This will ensure that frame release tasks submitted in close succession are executed in the order they are submitted but before any lower priority tasks. PiperOrigin-RevId: 467675137 (cherry picked from commit 4d81a6d)
Commits on Aug 16, 2022
-
HDR: Update limited range and add full range YUV to RGB color transfo…
…rms. PiperOrigin-RevId: 467910378 (cherry picked from commit 130a536)
-
Define CueGroup.EMPTY_TIME_ZERO for convenience
We create an empty CueGroup in many places as default or where none is needed. Instead, we can define a constant for this purpose and reuse it. PiperOrigin-RevId: 467944841 (cherry picked from commit 29208ec)
-
Compact a RGB Matrix chain into a singular RGB Matrix.
PiperOrigin-RevId: 468013019 (cherry picked from commit 977370e)
Commits on Aug 17, 2022
-
PiperOrigin-RevId: 468152718 (cherry picked from commit c6a10ad)
-
Defensively cancel frame processing tasks on error.
FrameProcessingTaskExecutor should be released on error. There can be a delay until this happens, so FrameProcessingTaskExecutor will cancel any pending tasks and drop new tasks until it is released. PiperOrigin-RevId: 468171820 (cherry picked from commit d11c3be)
Commits on Aug 18, 2022
-
HDR: Clamp YUV to RGB conversion.
Manually tested using transformer demo HLG videos. Before this CL, RGB values after the YUV to RGB conversion reached up to 1.025. After this CL, RGB values correctly clamp at 1.0. PiperOrigin-RevId: 468426092 (cherry picked from commit 32ee448)
-
Allow frame release to be controlled outside FrameProcessor.
Adds a method to FrameProcessor.Listener to be called when an output frame is available and a method releaseOutputFrame in FrameProcessor allowing the caller to trigger release of the oldest available output frame at a given timestamp. Late frames or frames with unset release times are dropped in the FinalMatrixTransformationProcessorWrapper. More than one output frame can become available before they are released if the penultimate GlTextureProcessor is capable of producing multiple output frames. Processing continues while waiting for releaseOutputFrame to be called. Frame release tasks are prioritized over other tasks. PiperOrigin-RevId: 468473072 (cherry picked from commit 2c06354)
-
Fix the command sample size given to trackOutput.
Remove the manual overwriting of Note ON events that have 0 velocity with Note OFF. JSyn handles this already. - The implementation of "running status" means that the amount of bytes read from the file differ from the size of the sample that ends up in the decoder. The decoder sample contains the applied running status (status of previous event), which the file bytes don't contain. PiperOrigin-RevId: 468537659 (cherry picked from commit 53218b5)
Commits on Aug 19, 2022
-
Change onOutputFrameAvailable timestamp from nanos to micros.
Upstream timestamps from the decoder are also in microseconds, so using microseconds here is consistent with that. PiperOrigin-RevId: 468659099 (cherry picked from commit 4e7f9c5)
-
Issue: androidx/media#142 PiperOrigin-RevId: 468666737 (cherry picked from commit d6442f6)
-
PiperOrigin-RevId: 468672505 (cherry picked from commit 010ecec)
Commits on Aug 22, 2022
-
PiperOrigin-RevId: 469143613 (cherry picked from commit c611435)
Commits on Aug 23, 2022
-
Replace usage of
android_binary
withbuild_test
for libraries`android_binary` is only required when building an application. PiperOrigin-RevId: 469413752 (cherry picked from commit f01896a)
-
Bind contrastFactor in constructor instead of drawFrame method.
PiperOrigin-RevId: 469438747 (cherry picked from commit 9a1e7fb)
-
Fix outdated RtpDataLoadable javadoc
PiperOrigin-RevId: 469443086 (cherry picked from commit 5cf166c)
Commits on Aug 24, 2022
-
Use the PQ OETF and EOTF to ensure that intermediate fragment shader operations using PQ are in linear BT.2020 rather than PQ and HLG-1 BT.2020. Also, swap the OETF and EOTF in shaders, as they were used incorrectly before Manually tested by verifying transformer demo HLG and PQ videos look the same with and without this CL, including with a BitmapOverlayProcessor enabled to test flows both with one MatrixTransformationProcessor that skips HDR TFs, and with one that doesn't. PiperOrigin-RevId: 469736067 (cherry picked from commit a213910)
-
PiperOrigin-RevId: 469750922 (cherry picked from commit 2c70383)
Commits on Aug 25, 2022
-
HDR: Rename GL_COLOR_TRANSFER instances to COLOR_TRANSFER
PiperOrigin-RevId: 469959215 (cherry picked from commit 0f48c89)
-
Delete glPrograms in Contrast and RgbMatrix.
Remove unecessary null checks. PiperOrigin-RevId: 469999952 (cherry picked from commit f454c9a)
-
Switch incorrectly configured native multidex to legacy
Native multidex can only be used for binaries with minSdkVersion of 21 or higher, but minSdkVersion was specified to 16. PiperOrigin-RevId: 470003836 (cherry picked from commit 142d1c0)
-
Switch incorrectly configured native multidex to legacy for demos
Native multidex can only be used for binaries with minSdkVersion of 21 or higher, but minSdkVersion was specified to 16. PiperOrigin-RevId: 470004102 (cherry picked from commit a395b23)
Commits on Aug 26, 2022
-
Fix ExternalTextureManager: repeated queueing input frame in preview
TL;DR: we should check if there are new frames available to queue to the ExternalTextureProcessor before actually queueing a frame. The overall flow on the external texture processor: - `SurfaceTexture.onFrameAvailable` is called on `ExtTexMgr`, and - it calls `updateTexImage()`, and sets `frame` - it calls `maybeQueueFrameToExtTexProc()` - the frame is queued to `ExtTexProc` if `frame` is set - From `ExtTexProc.queueInputFrame()`: - notifies the `frameProcessorListener` of available frame - notifies the `inputListener` of `onReadyToAcceptInputFrame` - (`ExtTexMgr` is the listener), it calls `maybeQueueFrameToExtTexProc()` again -- Parallelly -- - `ExtTexProc` calls `inputListener.onInputFrameProcessed`, when the frame is released - (`ExtTexMgr` is the listener), sets `frame` to `null` *Problem* This logic relies on `frame` to be cleared at the right time. In transformer, it's OK b/c `ExtTexProc` release the frame immediately in `queueInputFrame()` and calls `onInputFrameProcessed` which also reset `frame` But in previewing, the frame is not released for a while, up to 10 ms. In this case, `frame` will not reset in this 10 ms, and `maybeQueueFrameToExtTexProc()` is repeatedly queueing the same input frame. PiperOrigin-RevId: 470211620 (cherry picked from commit a8c54dd)
-
Log instead of throwing for transfer mismatch
PiperOrigin-RevId: 470354448 (cherry picked from commit f1a3a40)
Commits on Aug 30, 2022
-
Update color info mismatch test
This should now expect transformation to succeed. PiperOrigin-RevId: 470950411 (cherry picked from commit 1023254)
-
Fix 1 ErrorProneStyle finding:
* Non-standard parameter comment; prefer `/* paramName= */ arg` (see http://go/bugpattern/ParameterComment) This CL looks good? Just LGTM and Approve it! This CL doesn’t look good? This is what you can do: * Revert this CL, by replying "REVERT: <provide reason>" * File a bug under go/error-prone-bug for category ErrorProneStyle if there's an issue with the CL content. * File a bug under go/rosie-bug if there's an issue with how the CL was managed. * Revert this CL and not get a CL that cleans up these paths in the future by replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to opt out the respective paths in your CL Robot configuration instead: go/clrobot-opt-out. This CL was generated by CL Robot - a tool that cleans up code findings (go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA. Anything wrong with the signup? File a bug at go/clrobot-bug. #codehealth Tested: Local presubmit tests passed. PiperOrigin-RevId: 470953422 (cherry picked from commit f26e5d4)
-
Remove media3-only line from exoplayer2
build.gradle
file#minor-release PiperOrigin-RevId: 470999044 (cherry picked from commit e285e70)
-
Update first frame instructions.
PiperOrigin-RevId: 471008623 (cherry picked from commit cb60f50)
-
Add static Grayscale and Inverted RGB Filter.
PiperOrigin-RevId: 471017440 (cherry picked from commit 9f67ce4)
-
Fix 19 ErrorProneStyle findings:
* Non-standard parameter comment; prefer `/* paramName= */ arg` (see http://go/bugpattern/ParameterComment) (19 times) This CL looks good? Just LGTM and Approve it! This CL doesn’t look good? This is what you can do: * Revert this CL, by replying "REVERT: <provide reason>" * File a bug under go/error-prone-bug for category ErrorProneStyle if there's an issue with the CL content. * File a bug under go/rosie-bug if there's an issue with how the CL was managed. * Revert this CL and not get a CL that cleans up these paths in the future by replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to opt out the respective paths in your CL Robot configuration instead: go/clrobot-opt-out. This CL was generated by CL Robot - a tool that cleans up code findings (go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA. Anything wrong with the signup? File a bug at go/clrobot-bug. #codehealth Tested: Local presubmit tests passed. PiperOrigin-RevId: 471022923 (cherry picked from commit 674b3d4)
-
HDR: Use factory for MatrixTransformationProcessor.
Separate MatrixTransformationProcessor constructors by color input and output. PiperOrigin-RevId: 471034768 (cherry picked from commit a8e814a)
-
Effect: Add some FrameProcessor javadoc.
In particular, make it a bit more clear that "rendering" and "releasing" frames are related concepts, and how they differ from one another in conjunction with frame dropping. PiperOrigin-RevId: 471037733 (cherry picked from commit e6a1936)
Commits on Aug 31, 2022
-
Add @SuppressWarnings to nullness errors detected by a newer version …
…of the Checker Framework PiperOrigin-RevId: 471137219 (cherry picked from commit 90e684a)
-
Fix 3 ErrorProneStyle findings:
* Non-standard parameter comment; prefer `/* paramName= */ arg` (see http://go/bugpattern/ParameterComment) (3 times) This CL looks good? Just LGTM and Approve it! This CL doesn’t look good? This is what you can do: * Revert this CL, by replying "REVERT: <provide reason>" * File a bug under go/error-prone-bug for category ErrorProneStyle if there's an issue with the CL content. * File a bug under go/rosie-bug if there's an issue with how the CL was managed. * Revert this CL and not get a CL that cleans up these paths in the future by replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to opt out the respective paths in your CL Robot configuration instead: go/clrobot-opt-out. This CL was generated by CL Robot - a tool that cleans up code findings (go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA. Anything wrong with the signup? File a bug at go/clrobot-bug. #codehealth Tested: Local presubmit tests passed. PiperOrigin-RevId: 471198016 (cherry picked from commit bac7d69)
Commits on Sep 1, 2022
-
Skip transcoding if HDR video does not need encoding.
3b0d2c1 made `shouldPassthrough` always return false for `enableHdrVideoEditing`: >We force using `FrameEditor` (no passthrough) to avoid the need to select another edit operation, and use the new shaders. The `EGLContext` and `EGLSurface` also need to be set up differently for this path. However, this was introduced before the `videoNeedsEncoding` setting was introduced in 3f61504. That setting should apply to HDR videos as much as SDR videos. PiperOrigin-RevId: 471569853 (cherry picked from commit 94713a8)
Commits on Sep 2, 2022
-
Rename shouldPassthrough to shouldTranscode
shouldPassthrough's internal checks seem to be check whether we should *not* pass through, which seemed a bit like a confusing double-negative to me. shouldTranscode is slightly more clear, by instead returning true when we do want to transcode. No functional changes intended. PiperOrigin-RevId: 471753771 (cherry picked from commit 1a4cd54)
-
Add sepia, grayscale, and inverted filters to the demo app.
PiperOrigin-RevId: 471782565 (cherry picked from commit 87926f0)
Commits on Sep 5, 2022
-
Minor javadoc and scoping cleanup.
No functional changes. PiperOrigin-RevId: 472245797 (cherry picked from commit 8e14611)
-
Fix 1 ErrorProneStyle finding:
* Non-standard parameter comment; prefer `/* paramName= */ arg` (see http://go/bugpattern/ParameterComment) This CL looks good? Just LGTM and Approve it! This CL doesn’t look good? This is what you can do: * Revert this CL, by replying "REVERT: <provide reason>" * File a bug under go/error-prone-bug for category ErrorProneStyle if there's an issue with the CL content. * File a bug under go/rosie-bug if there's an issue with how the CL was managed. * Revert this CL and not get a CL that cleans up these paths in the future by replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to opt out the respective paths in your CL Robot configuration instead: go/clrobot-opt-out. This CL was generated by CL Robot - a tool that cleans up code findings (go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA. Anything wrong with the signup? File a bug at go/clrobot-bug. #codehealth Tested: Local presubmit tests passed. PiperOrigin-RevId: 472252461 (cherry picked from commit dfdcf76)
-
Fix 3 ErrorProneStyle findings:
* Non-standard parameter comment; prefer `/* paramName= */ arg` (see http://go/bugpattern/ParameterComment) (3 times) This CL looks good? Just LGTM and Approve it! This CL doesn’t look good? This is what you can do: * Revert this CL, by replying "REVERT: <provide reason>" * File a bug under go/error-prone-bug for category ErrorProneStyle if there's an issue with the CL content. * File a bug under go/rosie-bug if there's an issue with how the CL was managed. * Revert this CL and not get a CL that cleans up these paths in the future by replying "BLOCKLIST: <provide reason>". This is not reversible! We recommend to opt out the respective paths in your CL Robot configuration instead: go/clrobot-opt-out. This CL was generated by CL Robot - a tool that cleans up code findings (go/clrobot). The affected code paths have been enabled for CL Robot in //depot/google3/java/com/google/android/libraries/media/METADATA which is reachable following include_presubmits from //depot/google3/third_party/java_src/android_libs/media/METADATA. Anything wrong with the signup? File a bug at go/clrobot-bug. #codehealth Tested: Local presubmit tests passed. PiperOrigin-RevId: 472254253 (cherry picked from commit 8396647)
-
Merge RgbProcessor and MatrixTransformation.
PiperOrigin-RevId: 472325145 (cherry picked from commit daa77da)
Commits on Sep 6, 2022
-
Use super class for toGlProcessor in RgbFilter.
PiperOrigin-RevId: 472405147 (cherry picked from commit c0ad9f5)
-
Make MatrixTransformationsProcessor constructor to take in Lists.
* Replace ImmutableLists to List interface for constructors PiperOrigin-RevId: 472433434 (cherry picked from commit ce0e3a4)
-
Include CamcorderProfile resolution in encoder capability test
PiperOrigin-RevId: 472459423 (cherry picked from commit 6e45824)
-
Bump IMA SDK version for gradle
PiperOrigin-RevId: 472500789 (cherry picked from commit 60a3ea4)
-
Remove redundant constant definition
PiperOrigin-RevId: 472522846 (cherry picked from commit 9a9baa5)
-
Update presentation time of metadata when the stream offset changes
The stream offset is used to calculate the presentation time of a metadata object when reading and later when playing, to calculate the current presentation time to decide whether to send the metadata to the output. Accordingly, the presentation time of a pending metadata that has been calculated with a given offset needs to be recalculated when the stream offset changes. #minor-release PiperOrigin-RevId: 472499943 (cherry picked from commit 5a12237)
Commits on Sep 7, 2022
-
Discard backbuffer before playback gets stuck.
If the back buffer is using too much memory, there is a risk playback could get stuck because LoadControl refuses to load further data. This eventually results in a stuck-buffering playback error. We can detect this case, clear the back buffer and then ask the LoadControl again to avoid failing playback in such a case. PiperOrigin-RevId: 472679797 (cherry picked from commit 125646e)
-
Add withAvailableAd for server side inserted ad groups
#minor-release PiperOrigin-RevId: 472714732 (cherry picked from commit 072f376)
-
Clarify GlTextureProcessor.InputListener contract
PiperOrigin-RevId: 472745311 (cherry picked from commit 32a2164)
Commits on Sep 8, 2022
-
Remove conditional check for no-longer flaky API version
PiperOrigin-RevId: 472949850 (cherry picked from commit caefa56)
-
Test that HDR editing succeeds on devices supporting HDR editing, tone maps on devices supporting tone mapping, and throws exceptions on all other devices. Also, only restrict HDR editing and tone mapping support to API 31+ only when transcoding, not for all transformations. PiperOrigin-RevId: 472958965 (cherry picked from commit 8ee2121)
-
Add caching for compositeRgbMatrixArray.
* Refactor caching for matrix transformations to reuse it for rgb matrices. PiperOrigin-RevId: 473042194 (cherry picked from commit 593370b)
Commits on Sep 9, 2022
-
Decoder: Reduce max pending frame count limit down to 5.
PiperOrigin-RevId: 473212543 (cherry picked from commit 41963fc)
-
Handle int instead of byte in SSIM.
The value of pixels are converted to integers at the point of use, move this logic to the initialisation step. This is a prerequisite step for testing SSIM calculation, which will lead on to some SSIM improvements being verifiable. Tested manually and SSIM values match for the same video before and after this change. PiperOrigin-RevId: 473231779 (cherry picked from commit eb6c118)
-
*** Original commit *** Handle int instead of byte in SSIM. The value of pixels are converted to integers at the point of use, move this logic to the initialisation step. This is a prerequisite step for testing SSIM calculation, which will lead on to some SSIM improvements being verifiable. Tested manually and SSIM values match for the same video before and after this change. *** PiperOrigin-RevId: 473259446 (cherry picked from commit 8f9c9d0)
-
Rename MatrixTransformationProcessor to MatrixTextureProcessor.
PiperOrigin-RevId: 473283967 (cherry picked from commit 40f1bd3)
Commits on Sep 11, 2022
-
Split decoding out of the test
This method is useful for other tests also. PiperOrigin-RevId: 473574282 (cherry picked from commit f770324)
Commits on Sep 12, 2022
-
Add rgb matrices to java docs for public constructors.
PiperOrigin-RevId: 473699927 (cherry picked from commit 75f920b)
-
Add java docs for ContrastProcessor constructor.
* Add docs for the public constructor for consistency with all the other frame processors. PiperOrigin-RevId: 473726586 (cherry picked from commit 696ef2a)
-
Add MssimCalculatorTest to verify SSIM calculations.
As part of this change, MssimCalculator is moved from androidTest/ to main/ PiperOrigin-RevId: 473771344 (cherry picked from commit 20aa22c)
Commits on Sep 13, 2022
-
Change ContrastProcessor java doc for consistency.
PiperOrigin-RevId: 474002026 (cherry picked from commit 7c43562)
Commits on Sep 14, 2022
-
Clarify the replaceOutputBuffer parameter because count is unclear.
PiperOrigin-RevId: 474279220 (cherry picked from commit 3e0ad6d)
-
Add support for skipping windows in MssimCalculator.
By skipping every other row and column, SSIM calculation time reduces by 10-30%. PiperOrigin-RevId: 474286702 (cherry picked from commit 6dd2a6d)
-
Fix testId and match it to the test name.
PiperOrigin-RevId: 474363545 (cherry picked from commit 0e2b6a0)
Commits on Sep 15, 2022
-
Add LUT functionalities to transformer.
* Adds SDR 3D LUT functionalities with OpenGL 2.0 support. PiperOrigin-RevId: 474561060 (cherry picked from commit 702419d)
Commits on Sep 16, 2022
-
Currently doSomeWork is never closed and so tracing is deceiving. See https://screenshot.googleplex.com/eZDzn5APpBNnhe5 PiperOrigin-RevId: 474755816 (cherry picked from commit 005b73c)
-
Fix outdated command in bitmap/README.md.
* The command changed after creating a custom effects module. PiperOrigin-RevId: 474777823 (cherry picked from commit fd6b0d1)
Commits on Sep 20, 2022
-
Fix instrumentation tests not working via Gradle
PiperOrigin-RevId: 475560401 (cherry picked from commit 6015f05)
Commits on Sep 21, 2022
-
Use golden bitmaps in contrast pixel tests.
PiperOrigin-RevId: 475805421 (cherry picked from commit 06c0040)
-
Add file size to TransformationResult at the end of a Transformation.
Tested: * Manually using both path and file descriptor. PiperOrigin-RevId: 475860978 (cherry picked from commit 08bb01b)
Commits on Sep 22, 2022
-
Add RGB Adjustments to transformer demo.
PiperOrigin-RevId: 476049125 (cherry picked from commit cfc0eef)
-
Work around a bug in the Android 13 ClearKey implementation
The ClearKey CDM will attach an 'invalid' URL in `KeyRequest` objects, when the documentation states this should be an empty string if a default URL is not known. #minor-release PiperOrigin-RevId: 476113513 (cherry picked from commit 331d4d6)
-
Add OETF and EOTF ES2 fragment shaders for non-HDR frames.
* Transform the intermediate color space to linear SDR by applying the SMPTE 170M EOTF and OETF. * Use linear colors for the color filter pixel tests and update all golden bitmaps. PiperOrigin-RevId: 476124592 (cherry picked from commit afd829e)
-
Add HSL Adjustments to the effects module.
PiperOrigin-RevId: 476144167 (cherry picked from commit 2c27cd8)
Commits on Sep 23, 2022
-
HDR: Assert output C.ColorTransfer for tests.
To confirm that tone mapping did or did not happen. PiperOrigin-RevId: 476354606 (cherry picked from commit df58107)
-
Try alternative decoder for Dolby Vision if display does not support
-
Remove TODOs for merging RGB and MatrixTransformation processors.
PiperOrigin-RevId: 476362571 (cherry picked from commit af19f82)
-
Fix broken links on https://exoplayer.dev/troubleshooting.html
#minor-release PiperOrigin-RevId: 476366214 (cherry picked from commit 0969118)
-
Add HSL Adjustments to the demo.
PiperOrigin-RevId: 476373520 (cherry picked from commit 5725ebb)
-
PiperOrigin-RevId: 476390089 (cherry picked from commit 29cf093)
-
Add setPreferredAudioDevice method to ExoPlayer
This allows to access the associated functionality of AudioTrack and fills a feature gap to MediaPlayer, which has a similar method. Issue: androidx/media#135 PiperOrigin-RevId: 476398964 (cherry picked from commit ccb820d)
-
Store LUT bitmap as texture with processor creation.
* Before this CL, the texture was stored during the construction of the LUT processor. This failed since if one creates a list of GlEffects on the application thread, the texture will get stored in the application thread during the effect creation and not on the GL thread, which executes the FrameProcessors. * This is an issue since the executing thread then can't index from the texture stored on a different thread. PiperOrigin-RevId: 476388021 (cherry picked from commit f745c6e)
Commits on Sep 26, 2022
-
HDR: Update gamma comments to linear.
Comment-only change. PiperOrigin-RevId: 476873286 (cherry picked from commit f3d1321)
-
Fix badly formatted AudioProcessor javadoc.
PiperOrigin-RevId: 476909855 (cherry picked from commit 9b1909e)
Commits on Sep 27, 2022
-
Fix checkboxes on configuration page
PiperOrigin-RevId: 477166507 (cherry picked from commit bcea7bd)
Commits on Sep 28, 2022
-
Add a troubleshooting section about slow seeking
#minor-release PiperOrigin-RevId: 477432256 (cherry picked from commit f8f2ec6)
-
HDR: Add tests for tone mapping.
Also, add checks for output file color. PiperOrigin-RevId: 477439139 (cherry picked from commit 507a1be)
-
HDR: Add period to end of error message.
For tone mapping error messages. PiperOrigin-RevId: 477447799 (cherry picked from commit 05ce639)
-
Demo: Split video Effect generation out of createTransformer.
PiperOrigin-RevId: 477524540 (cherry picked from commit 26a7360)
Commits on Sep 29, 2022
-
Test: Rename to avoid redundant substrings.
Rename test files to avoid substrings that can be implied by the directory name, like "Transformation" and "Test" No functional changes. Renaming-only. PiperOrigin-RevId: 477724724 (cherry picked from commit 9786802)
Commits on Sep 30, 2022
-
Tests: Statically import BitmapTestUtil methods.
Per go/java-practices/imports#static No functional changes intended. PiperOrigin-RevId: 477974779 (cherry picked from commit da2c637)
-
Effect: Update javadoc to remove "final effect" references
"Final" was likely added to reference the FinalMatrixTextureProcessorWrapper, which is a package-private class. However, I think more clear to express that this is the input size, which then has all effects applied, to get the output size. PiperOrigin-RevId: 477975358 (cherry picked from commit 7286155)
-
HDR: Add tests with HLG10 input.
PiperOrigin-RevId: 478019046 (cherry picked from commit b9a3aa5)
Commits on Oct 3, 2022
-
Add second player for input video
PiperOrigin-RevId: 478510687 (cherry picked from commit 6f2bc16)
Commits on Oct 4, 2022
-
HDR: Check isToneMappingApplied in HDR editing test.
Assert that tone mapping is applied when an HDR edit cannot be HDR, but is successfully tone mapped. Meanwhile, assert that fallback, which is applied after codec configuration (which throws the "Tone-mapping requested but not supported by the decoder" error) is not applied when that error is called. PiperOrigin-RevId: 478762951 (cherry picked from commit 36e4105)
Commits on Oct 5, 2022
-
Add button to show/hide input player in TransformerActivity
PiperOrigin-RevId: 479003655 (cherry picked from commit 20c1ae1)
-
Add FrameProcessor functionality to release a frame immediately
Currently `FrameProcessor.releaseOutputFrame()` method supports Release at a specific system time Drops the frame This API is not that convenient to use when the caller wants to release a frame, now, regardless of the release time. A use case is to release (present) a frame when no frame is shown for a while, and it's thus better to just release the frame, now. Currently if MCVR wants a frame to be rendered now, MCVR calls release frame with a set offset like 10us: `releaseOutputFrame(System.nanoTime() + 10_000)`. The 10us offset is to prevent the frame processor dropping the frame, due to thread hopping delays. To make the API better usable, consider adding a mode for releasing the frame now, like (bold marks the new mode) - Use C.TIME_UNSET to drop - **Use -1 to release the frame immediately, or** - Use an actual release time. PiperOrigin-RevId: 479044215 (cherry picked from commit ff8dd0b)
-
Fix RequestMetadata JavaDoc link to point to the right MediaController.
The JavaDoc of RequestMetadata should point to the media3 controller, not the platform one. PiperOrigin-RevId: 479047924 (cherry picked from commit 0889589)
Commits on Oct 6, 2022
-
Provide access to original media timestamps in AudioSink.
* Add `setOutputStreamOffsetUs(long)` method in `AudioSink`. * Add private methods `setOutputStreamOffsetUs(long)` method in `MediaCodecRenderer` and `DecoderAudioRenderer`. * Add protected method `onOutputStreamOffsetUs(long)` method in `MediaCodecRenderer`, in which: * `MediaCodecRenderer` itself will be no-op for this method. * `MediaCodecAudioRenderer` will propagate this value to its `audioSink`. * Add logics in `DecoderAudioRenderer` to calculate `outputStreamOffsetUs`. PiperOrigin-RevId: 479265429 (cherry picked from commit 4c73241)
-
Add a FrameProcessor flag to drop the processed frame
This mode is supported by using `C.TIME_UNSET` (which is a negative value). The new logic decouples the value of `C.TIME_UNSET` and the frame dropping behaviour. PiperOrigin-RevId: 479368880 (cherry picked from commit ccab9fb)
Commits on Oct 7, 2022
-
Document the allowed values of TsPayloadReader.Flags IntDef
PiperOrigin-RevId: 479569806 (cherry picked from commit 7c68b8d)
-
HDR: Disable tone mapping on unsupported pixel build ID.
Also, update tests to allow AnyOf error codes, and no longer check exception messages, which caused quite a bit of churn. PiperOrigin-RevId: 479570861 (cherry picked from commit faa796d)
-
PiperOrigin-RevId: 479579252 (cherry picked from commit a6b9772)
-
Remove late frame dropping in FrameProcessor
Currently, a frame is dropped if it's requested release time is in the past. This mode was added to support previewing. However, in normal ExoPlayer playback, slightly late frames (<30ms late) are also rendered. On MediaCodec side, this means calling `releaseOutputBuffer` with a release time in the past. PiperOrigin-RevId: 479615291 (cherry picked from commit 2188685)
Commits on Oct 10, 2022
-
Adjust track selection with Dolby Vision if display does not support
If the sample type is Dolby Vision and the display does not support Dolby Vision, then the capabilities DecoderSupport flag is set to DECODER_SUPPORT_FALLBACK_MIMETYPE. This denotes that the renderer will use a decoder for a fallback mimetype if possible. This alters track selection as tracks with DecoderSupport DECODER_SUPPORT_PRIMARY are preferred. UnitTests included -DefaultTrackSelector test that checks track selection reordering with DECODER_SUPPORT_FALLBACK_MIMETYPE -MediaCodecVideoRenderer test that checks setting of DecoderSupport flag based on Display's Dolby Vision support Issue: #8944 PiperOrigin-RevId: 480040876 (cherry picked from commit a366590)
-
Treat NO_VALUE as zero when adding up total required bitrate
Commits on Oct 11, 2022
-
Add local file picker to ConfigurationActivity
PiperOrigin-RevId: 480349627 (cherry picked from commit 225d0dc)
-
Demo: Read long values from trim slider.
Before, slider values were read as `floor()`'ed `longValue()`s, so that trimming to intervals less than one second would be interpreted as a request for a zero- duration trim. Also, rename `radiusRange` references here to `trimRange`, since this is not a radius range. PiperOrigin-RevId: 480401556 (cherry picked from commit 6c59f9e)
Commits on Oct 12, 2022
-
Demo: Hide player controls by default.
Player controls are somewhat distracting when showing the difference between the input and output video, as they obscure and darken the video players. PiperOrigin-RevId: 480597804 (cherry picked from commit 91a61ce)
-
Demo: Shorten trim range from 60 seconds to 10 seconds.
Most demo videos aren't very long, and the default demo video is only 10 seconds. Shorten the maximum trim duration to 10 seconds, to demonstrate transformer functionality more easily, and allow this to be used more easily when trimming short sections of a longer video (ex. to make test clips) PiperOrigin-RevId: 480602037 (cherry picked from commit 3142a21)
-
When debugging and fixing Issue: #10666 I wanted to write a regression test, but needed to add a test first... This is just a small bit of coverage to start with. It checks the field/channel filtering works correctly, but doesn't check any styling info. It also doesn't test 'pop on' subtitles (i.e. when the subtitle isn't shown until a 'end of subtitle' signal is received). PiperOrigin-RevId: 480644568 (cherry picked from commit 6052212)
Commits on Oct 13, 2022
-
Remove supportsSampleMimeType from Muxer.Factory
- This method is redundant with getSupportedSampleMimeTypes(). - This is to prepare the Muxer class to become public. PiperOrigin-RevId: 480840902 (cherry picked from commit 8962f5a)
-
Fix blank toast in Transformer Demo
PiperOrigin-RevId: 480847967 (cherry picked from commit 446c994)
-
Migrate media constants from androidx.media.util.MediaConstants
Adds root extras and metadata extras to MockMediaLibraryService and MockMediaBrowserCompatService and completed test cases for asserting interoperability with a media1 or Media3 browser. PiperOrigin-RevId: 480854842 (cherry picked from commit f95406e)
-
Ensure sessions without MediaPeriodId are ended after seek to new item
We already have logic to end all session except the current one if the current one doesn't have a MediaPeriodId yet. This is assuming that this only happens after a seek on the app side where the player doesn't have detailled knowledge about the MediaPeriodIds yet. Currently this logic isn't triggered if the window we are coming from doesn't have its MediaPeriodId either as we run into another check that keeps sessions around until we have a valid windowSequenceNumber. Swapping both conditions fixes this case without breaking any of the other known transition scenarios. Issue: androidx/media#180 PiperOrigin-RevId: 480866465 (cherry picked from commit 6070d91)
Commits on Oct 14, 2022
-
Mark effectively-final PlayerControlView fields as actually final
This means the null checker can be more sure that these fields don't get reassigned between a null-check and a usage. PiperOrigin-RevId: 481142004 (cherry picked from commit 248ee46)
-
Effect: Remove unused private int ouptutTexId in pixel tests.
PiperOrigin-RevId: 481143798 (cherry picked from commit 026699b)
-
Fix the position of IntDef annotations on fields in the UI module
PiperOrigin-RevId: 481150758 (cherry picked from commit 871a5e6)
-
Fix display settings window UI bug for foldable devices.
PiperOrigin-RevId: 481215581 (cherry picked from commit 6cdaf2c)
-
Use static import for Assertions in MCVR
PiperOrigin-RevId: 481122795 (cherry picked from commit 12f7174)
Commits on Oct 17, 2022
-
Add copybara annotated import statement for special cases
PiperOrigin-RevId: 481605567 (cherry picked from commit fd315da)
-
Add manifest to make gradle build work
PiperOrigin-RevId: 481606248 (cherry picked from commit 325e973)
Commits on Oct 18, 2022
-
Add DefaultMuxer forwarding to FrameworkMuxer
- The naming DefaultMuxer is more consistent with the rest of Transformer codebase (e.g. DefaultEncoderFactory). - By hiding the implementation details of DefaultMuxer, the transition to in-app Muxer will be seamless for apps using DefaultMuxer. - The current plan is that DefaultMuxer will become the in-app muxer. PiperOrigin-RevId: 481838790 (cherry picked from commit b4d7f06)
-
Remove more references to overriding layouts from Player(Control)View
In exoplayer2 this affects StyledPlayer(Control)View #minor-release PiperOrigin-RevId: 481878940 (cherry picked from commit a5583c0)
-
#cleanup PiperOrigin-RevId: 481882181 (cherry picked from commit b6bd358)
-
Remove deprecated setOutputMimeType
This is to prepare Muxer to become public PiperOrigin-RevId: 481893842 (cherry picked from commit bd9181e)
-
GL: Move loadAsset to GlProgram, where it's used.
(Also, make some public methods private) PiperOrigin-RevId: 481912071 (cherry picked from commit a404fde)
-
Ensure onMediaItemTransition is sent for repeats of the same item
Currently, repeating the same item (via seekNext/Previous) implicitly results in a seek to the default position of the current item, which looks exactly the same as a direct seek. As a result, we don't send onMediaItemTransition as we would for every other seekNext/Previous call. This can be fixed by explicitly marking the repeat case in the internal BasePlayer/ExoPlayerImpl methods, so that the callback can be triggered. Issue: #10667 PiperOrigin-RevId: 481951788 (cherry picked from commit 76ce0cc)
-
Test: Update MatrixProcessorPixelTest to use input width and height.
Before, they used `width` and `height`, which was inconsistent with other pixel tests, and less descriptive. Refactoring change only. No functional change intended. PiperOrigin-RevId: 481970243 (cherry picked from commit 620d8c9)
Commits on Oct 19, 2022
-
Remove ForwardingPlayer special case from PlayerControlView.setPlayer
-
Effect: Remove unnecessary "this" qualifier
`transformationMatrix` is not ambiguous, as there's no other local transformationMatrix variable nearby. PiperOrigin-RevId: 482184602 (cherry picked from commit c698ec5)
-
The reason for making the Muxer public is that we want to add an option to disable or configure the timer that will throw when the muxer doesn't receive any data for a given period of time. PiperOrigin-RevId: 482199360 (cherry picked from commit d213b93)
-
HDR: Support RGBA_1010102 in GlUtil as a parameter.
Make it easier to support use of RGBA_101012 rather than RGBA_8888 for EGL contexts, displays, and surfaces. This tangentially supports adding HDR tests, by slightly simplifying the color selection logic we'd have to add in HDR tests. PiperOrigin-RevId: 482219428 (cherry picked from commit 9e1adee)
-
Corrected ordering of javadoc params
PiperOrigin-RevId: 482231370 (cherry picked from commit 8977220)
-
Merge pull request #10570 from Artemych:fix/progressive_downloader_in…
…finite_loop PiperOrigin-RevId: 472475124 (cherry picked from commit 9c56b2c)
-
Merge pull request #10549 from ferhatparmak:release-requirementswatcher
PiperOrigin-RevId: 472488921 (cherry picked from commit 92cfa74)
-
Merge pull request #123 from stoyicker:wrapping_media_source
PiperOrigin-RevId: 476376463 (cherry picked from commit 8623f1f)
-
Map lib-effect from androidx to exoplayer2
PiperOrigin-RevId: 482179761 (cherry picked from commit 28c4be2)
Commits on Oct 20, 2022
-
Merge pull request #10578 from thucngv:release-v2
PiperOrigin-RevId: 481115402 (cherry picked from commit 9861f88)
-
Merge pull request #183 from jasper-apps:bugfix/make-download-notific…
…ation-appear-immediately PiperOrigin-RevId: 482165983 (cherry picked from commit 405455b)
-
Remove muxerFactory dependency on playerListener
This listener will need to be passed to the MuxerWrapper to throw when the Transformer is stuck. PiperOrigin-RevId: 482433552 (cherry picked from commit e3f2842)
-
Change areSizeAndRateSupported to use PerfomancePoint.covers
PiperOrigin-RevId: 482461219 (cherry picked from commit 0eb30ea)
Commits on Oct 21, 2022
-
Add DAI specific methods to AdPlaybackState
PiperOrigin-RevId: 482755468 (cherry picked from commit a8e6894)
Commits on Oct 24, 2022
-
Fix some incorrect comments in Cea608DecoderTest
Also used all-caps consistently PiperOrigin-RevId: 483317405 (cherry picked from commit 6dcb9aa)
-
Merge pull request #10618 from vishnuchilakala:fix/do_not_send_conten…
…t_complete_if_midroll_skipped PiperOrigin-RevId: 482481703 (cherry picked from commit a413b47)
-
Merge pull request #162 from ittiam-systems:rtp-mp4a-latm
PiperOrigin-RevId: 482490230 (cherry picked from commit fd2ba37)
-
Add CanIgnoreReturnValue to AudioProcessor#configure + implementations
Although it can be useful to check the output format, it's not required or needed. For some AudioProcessor implementations, it is stated/obvious that the output format will match the input, in which case there is no a need to check the return value. #cleanup PiperOrigin-RevId: 483403679 (cherry picked from commit a7bfa12)
-
Use int for an unsigned byte value in Cea608Decoder
This is a no-op, but it's more 'correct' because it avoids any potential sign mix-ups that come from storing an unsigned byte (with a potentially set MSB) in a signed java byte variable. PiperOrigin-RevId: 483409798 (cherry picked from commit 3d0f43a)
Commits on Oct 25, 2022
-
Clarify sideloaded subtitle example
#minor-release PiperOrigin-RevId: 483633564 (cherry picked from commit eaf1f21)
-
Add GL utility methods to get 4x4 identity and set identity
PiperOrigin-RevId: 483671580 (cherry picked from commit f5ad4e0)
-
Move AudioProcessor to common.
PiperOrigin-RevId: 483699606 (cherry picked from commit dda17db)
-
Move
DefaultAudioSink.AudioProcessorChain
toAudioProcessorChain
Split inner interface into separate file, which will go in common module. The old interface will be deprecated and extends the new. #cleanup PiperOrigin-RevId: 483732226 (cherry picked from commit ad52b68)
Commits on Oct 26, 2022
-
Fix
Cea608Decoder
handling of service switch commands in field 2From ANSI-CTA-608-E R-2014 section 8.4: > When closed captioning is used on line 21, field 2, it shall conform > to all of the applicable specifications and recommended practices as > defined for field 1 services with the following differences: > 1. The non-printing character of the miscellaneous control-character > pairs that fall in the range of 0x14, 0x20 to 0x14, 0x2F in field 1, > shall be replaced with 0x15, 0x20 to 0x15, 0x2F when used in field > 2. > 2. The non-printing character of the miscellaneous control-character > pairs that fall in the range of 0x1C, 0x20 to 0x1C, 0x2F in field > 1, shall be replaced with 0x1D, 0x20 to 0x1D, 0x2F when used in > field 2. This basically means that `cc1=0x15` in field 2 should be interpreted as `cc1=0x14` in field 1, and same for `0x1D -> 0x1C`. The `isMiscCode` method above already handles this by ignoring the LSB (the only difference between `0x14` and `0x15`, and `0x1C` and `0x1D`) by AND-ing with `0xF6` instead of `0xF7`. This change uses the same trick in `isServiceSwitchCommand`. Issue: #10666 #minor-release PiperOrigin-RevId: 483927506 (cherry picked from commit 7c6d492)
-
Mute input video player in transformer demo
PiperOrigin-RevId: 483969411 (cherry picked from commit 8181b3c)
-
Add AudioProcessor.AudioFormat equals method.
PiperOrigin-RevId: 483983486 (cherry picked from commit c9585d0)
Commits on Oct 27, 2022
-
Add muxer timer to detect when generating an output sample is too slow
This allows to throw when the Transformer is stuck or is too slow. PiperOrigin-RevId: 484179037 (cherry picked from commit 376ee77)
-
Make adding ad live breaks more robust
This change makes adding ad events in live streams more robust by allowing ad groups to grow in number of ads if more ad events are received than initially announced by the SDK. With the IMA prefetch feature, an AdPod can grow in size in certain conditions like from initially 2 ads to 4 ads being part of the ad group. With this change, if an additional ad event arrives while the ad group is still being played, the ad group is expanded. If the event arrives late and the ad group is already completed, a new group is created for the remaining ads. This also covers the case where we join the live stream while an ad is being played and we missed at least one LOADED event from the SDK. Ads of the group before the first LOADED event are ignored in such a case. PiperOrigin-RevId: 484214760 (cherry picked from commit 136addf)
-
Add test for muxer watchdog timer
PiperOrigin-RevId: 484298261 (cherry picked from commit 42057cc)
Commits on Oct 28, 2022
-
Upgrade dackka and fix some generation errors
#minor-release PiperOrigin-RevId: 484483080 (cherry picked from commit fc1eca1)
-
Disable the muxer watchdog if all tracks have ended.
PiperOrigin-RevId: 484512661 (cherry picked from commit 2390322)
-
Bump appTargetSDKVersion to 33
#minor-release PiperOrigin-RevId: 484514123 (cherry picked from commit 1bbe7c1)
Commits on Oct 31, 2022
-
Tighten the wording for sending a pull request.
PiperOrigin-RevId: 485036120 (cherry picked from commit 8030a49)
-
Disable failing tests of FlacExtractorSeekTest
PiperOrigin-RevId: 485061783 (cherry picked from commit 55b82ff)
-
Enfore minCompileSdk version when depending on ExoPlayer/Media3 libs
If an app sets a compileSdkVersion that is lower than the one used to create AARs of its dependencies, the build process may produce invalid outputs, for example by stripping methods from the APK that are only called when the app is running on a new API version. To avoid this issue, we can enforce that the compileSdk of apps or libraries depending on ExoPlayer/Media3 is at least the same as the one we used for compilation when creating the AAR. Issue: #10684 PiperOrigin-RevId: 485100067 (cherry picked from commit 23d39ca)
Commits on Nov 1, 2022
-
Removed move transformation for exoplayer2 audio package-info.java
dda17db creation of audio/package-info.java introduced a copybara conflict with the exoplayer2/audio/package-info.java move transformation in copy.bara.sky. Solution was to remove original package-info-common-audio.java and the move transformation as dda17db now covers it. Tested with a copybara push to exoplayer github PiperOrigin-RevId: 485329674 (cherry picked from commit 972e169)
-
HDR: Generalize Pixel 6 workaround to TP
PiperOrigin-RevId: 485366659 (cherry picked from commit 6de5d93)
-
Load bitmaps for
MediaMetadataCompat
and handle the metadata updates.* Add `Listener` in `MediaSession` with method `onNotificationRefreshRequired(MediaSession)`. * Add `MediaSessionService` as the listener of the `MediaSession` when `MediaSession` is added to `MediaSessionService` * Load bitmap when update metadata in `MediaSessionLegacyStub` and call `onNotificationRefreshRequired` when bitmap asynchronously arrives. PiperOrigin-RevId: 485376145 (cherry picked from commit 624238c)
-
Apply tone mapping workaround to Pixel Watch as well.
Not sure what BUILD.ID the fix will first be applied on though. PiperOrigin-RevId: 485389618 (cherry picked from commit 2ddd645)
Commits on Nov 2, 2022
-
Fix Dackka/Metalava errors in the effects module
Public methods may only refer to public types in their signature. This change ensures that by switching to a public supertype everywhere. PiperOrigin-RevId: 485568625 (cherry picked from commit 3fdfe58)
Commits on Nov 3, 2022
-
-
Add 'Player.getVideoSurfaceSize' that returns the size of the surface
on which the video is rendered. Design Doc: go/aaos-mu-media-dd PiperOrigin-RevId: 485884772
-
HDR Test: Add link to tested method.
PiperOrigin-RevId: 485890141 (cherry picked from commit bd4e58d)
-
Disable publishing block when media3 included in another build.
From https://github.com/androidx/media/pull/127/files PiperOrigin-RevId: 485921271 (cherry picked from commit 36a51ac)
Commits on Nov 4, 2022
-
Add @SuppressWarnings to unblock T SDK for <unknown commit>
LSC: https://docs.google.com/document/d/16tpK6aXqN68PvTyvt4siM-m7f0NXi_8xEeitLDzr8xY/edit?usp=sharing TESTED=NA BEGIN_PUBLIC/END_PUBLIC PiperOrigin-RevId: 486180995 (cherry picked from commit 88445d2)
Commits on Nov 7, 2022
-
HDR: Update test FileUtil to handle null ColorInfo.
PiperOrigin-RevId: 486706595 (cherry picked from commit 0b53c93)
-
HDR: Set decoder codec profile and level if available.
This should be necessary to ensure decoders see fewer errors. Setting this resulted in removing native_dequeueOutputBuffer errors on OMX.MTK decoders for in-app tone mapping prototyping. PiperOrigin-RevId: 486715941 (cherry picked from commit 0b7e5bb)
-
Move muxer initialization off application thread
Problem: We are initialising muxer as soon as we start the transformation. Now the startTransformation() method can be called from main thread, but muxer creation is an I/O operation and should be not be done on main thread. Solution: Added lazy initialisation of muxer object. The actual transformation happens on background thread so the muxer will be initialised lazily from background thread only. Another way was to provide an initialize() method on MuxerWrapper which will explicitly initialise muxer object but with this approach the caller need to call the initialise method before calling anything else. With current implementation the renderers are calling MuxerWrapper methods on various callbacks (Not sequentially) and also we are sharing same muxer with multiple renderers so It might become confusing for the caller on when to call the initialise() method. Also there are few methods on MuxerWrapper which dont really need muxer object. So in short it might make MuxerWrapper APIs more confusing. Validation: Verified the transformation from demo app. PiperOrigin-RevId: 486735787 (cherry picked from commit b10b4e6)
Commits on Nov 8, 2022
-
Move muxing inside sample pipelines
This logic is currently in the player renderers. With multi-asset, the renderers will go into the AssetLoader, which shouldn't be responsible for muxing. PiperOrigin-RevId: 486860502 (cherry picked from commit d8754b6)
-
Set targetSdkVersion of main demo app back to 29
#minor-release PiperOrigin-RevId: 486969194 (cherry picked from commit 2172466)
Commits on Nov 9, 2022
-
Move slow mo logic to sample pipelines
This is to avoid having this logic in TransformerInternal once it is added. PiperOrigin-RevId: 487159941 (cherry picked from commit b59fdf5)
-
Merge Issue: #10762: Fix ffmpeg jni wrapper returning invalid result …
…codes Imported from GitHub PR Issue: #10762 This ensure that ffmpeg error code are properly translated to values that the ExoPlayer decoder understand. The main gain is that it allows the decoder to properly ignore more cases of invalid data and recover. The second gain is that the other errors are now proper ExoPlayer errors and no more obscure buffer ones. Fixes: Issue: #10760 Merge 82ceeb7 into 972e169 COPYBARA_INTEGRATE_REVIEW=go/exoghi/10762 from Tolriq:ffmpeg_error_code 82ceeb7 PiperOrigin-RevId: 487189910 (cherry picked from commit 6d2e7a1)
-
Just move some code around for now, to start setting up the overall structure. PiperOrigin-RevId: 487229329 (cherry picked from commit 5d1cab0)
-
Change UnsupportedEncodingException to IllegalArgumentException
In startTransformation method we were throwing UnsupportedEncodingException (IOException) when mediaItem with unsupported arguments is passed. Changed this to IllegalArgumentException which seems more logical here. PiperOrigin-RevId: 487259296 (cherry picked from commit 4598cc9)
-
Set HDR color info on FrameworkMuxer
Not setting the color info results in a missing "colr" box in the produced container, under file/moov/trak/mdia/minf/stbl/stsd/hvc1. This means extractors will not be able to find out the transcoded file is HDR. In `Transformer`, this means it can't transcode this transcoded file, because it currently relies on the container bearing HDR info to construct the transcoding sample pipeline. PiperOrigin-RevId: 487276712 (cherry picked from commit d6c8e3a)
-
HDR: Implement ForceInterpretHdrVideoAsSdr
Also, document that we tone map when no HDR features are explicitly set PiperOrigin-RevId: 487310971 (cherry picked from commit 8bdd278)
Commits on Nov 10, 2022
-
Fix Dackka/Metalava errors in the ExoPlayer module
This makes two types of fix: 1. Align parameter names on overridden methods where the superclass has `@param` javadoc. 2. Use `@hide` on `protected final` methods that refer to package-private types. This will hide these symbols from Dackka javadoc generation but not (currently) from the artefacts distributed on Maven. These methods are currently unusable outside their package anyway (e.g. by external developers) because of the dependency on a package-private type. This also changes some HLS, SmoothStreaming, and IMA code where I've renamed parameters of overridden methods to be consistent across the type hierarchy. #minor-release PiperOrigin-RevId: 487472665 (cherry picked from commit 10c4a4d)
-
Fix Dackka/Metalava errors in the HLS and RTSP modules
This makes two fixes: 1. Remove `HlsSampleStreamWrapper.Callback` (package-private) from the list of interfaces implemented by `HlsMediaPeriod` (`public`) and move the implementation to a private inner class instead. This avoids Metalava complaining about a public class that inherits from a package-private type. 2. Reduce the visibility of `RtpPayloadFormat.isFormatSupported(MediaDescription)` from `public` to package-private. The `MediaDescription` type is already package-private, so this method was already unusable outside the package. #minor-release PiperOrigin-RevId: 487472781 (cherry picked from commit 9041d7b)
-
Fix Dackka/Metalava errors in av1, flac, ffmpeg, midi, and opus modules
This uses `@hide` on `protected final` methods to hide them from Dackka javadoc generation, since these methods are inaccessible to developers anyway. These symbols will still (currently) be included in artefacts distributed on Maven (because we don't run Metalava as part of generating these artefacts). In some cases I had to change the visibility/finality of methods to make them `protected final` before adding the `@hide` annotation (but the impact should be very low, since most of these methods were either already unusable by app developers, or they shouldn't have been used). #minor-release PiperOrigin-RevId: 487472907 (cherry picked from commit 1cd488a)
-
Fix Dackka/Metalava errors in test_utils module
This involves reducing the visibility of methods/constructors that are already unusable outside the `androidx.media3.test.utils` package. #minor-release PiperOrigin-RevId: 487473005 (cherry picked from commit ca8de0e)
-
Fix Dackka parameter name error in
Gav1Decoder
andVpxDecoder
These aren't caught by presubmit because the classes are annotated `@VisibleForTesting` and are therefore stripped out by Metalava. However Metalava doesn't run when we're generating javadoc for real. #minor-release PiperOrigin-RevId: 487476260 (cherry picked from commit 14e23d3)
-
Set targetSdkVersion of main demo app to 29
#minor-release PiperOrigin-RevId: 487479366 (cherry picked from commit 09bee98)
-
Fix parameter name mismatch in MappingTrackSelector.selectTracks
It's not clear to me why presubmit didn't catch this, I briefly investigated but couldn't work it out - so I'm just going to fix it and move on. #minor-release PiperOrigin-RevId: 487497827 (cherry picked from commit 13ee34f)
-
Configure Dackka to generate javadoc for protected methods
#minor-release PiperOrigin-RevId: 487497923 (cherry picked from commit 7cb2e11)
-
Add missing IntDef on MediaSource.Factory.getSupportedTypes overrides
Without this the annotation isn't shown in javadoc (same in Dackka) No annotation: https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/source/DefaultMediaSourceFactory.html#getSupportedTypes() Annotation present: https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/source/MediaSource.Factory.html#getSupportedTypes() #minor-release PiperOrigin-RevId: 487498450 (cherry picked from commit 4949fbe)
Commits on Nov 17, 2022
-
Reformat demo build.gradle file
PiperOrigin-RevId: 487539107 (cherry picked from commit 0383b72)
-
Add
@ForOverride
toDecoderAudioRenderer
protected
methodsPiperOrigin-RevId: 487779266 (cherry picked from commit a34fdcf)
-
Reformat demo build.gradle file
PiperOrigin-RevId: 488376715 (cherry picked from commit 30b73c8)
-
Calculate SSAI window duration for live periods with unset duration.
-
Mark iterationFinished when triggering release event.
When we currently trigger the iteration finished event during the release, we don't mark the event as triggered. This means that someone can trigger another release from within the callback, which then tries to resend the event. Issue: #10758 #minor-release PiperOrigin-RevId: 488645089 (cherry picked from commit 3e5103a)
-
Set valid channel masks for 8 and 12 channels on all Android versions
Util.getAudioTrackChannelConfig() maps a channel count to a channel mask that is passed to AudioTrack. The method expected that playback of 8-channel audio is possible from Android 5.1 and playback of 12-channel audio is only possible from Android 12L. However, there is no restriction on the upper number of channels that can be passed to the AudioTrack. #10701 is an example where the audio decoder outputs 12 channels on an Android 10. This change removes the restrictions for 8 and 12 channels. Note, we still do not support playback of arbitrary number of channels as it would require further changes to DefaultAudioSink. #minor-release Issue: #10701 PiperOrigin-RevId: 488659831 (cherry picked from commit 1b24e6f)
-
Rename getVideoSurfaceSize to getSurfaceSize
This better matches the callback name (onSurfaceSizeChanged) and probably cause less confusion with getVideoSize. PiperOrigin-RevId: 488669786 (cherry picked from commit 8438dac)
Commits on Nov 22, 2022
-
Filter bogus AndroidX core jar file when creating javadoc
#minor-release PiperOrigin-RevId: 489202167 (cherry picked from commit 7e82d4e)
-
Remove @hide javadoc annotation from ExoPlayer GitHub
This tag is only understood by Dackka, which is used to generate the media3 javadoc. PiperOrigin-RevId: 489233200 (cherry picked from commit 058cba9)
-
Version bump to exoplayer:2.18.2 and media3:1.0.0-beta03
#minor-release PiperOrigin-RevId: 489959918 (cherry picked from commit ca190c0)
-
Update JavaDoc for exoplayer:2.18.2
#minor-release PiperOrigin-RevId: 490202192 (cherry picked from commit 6f1cf6d)
-
Reorder some release notes in other sections.
#minor-release PiperOrigin-RevId: 490224795 (cherry picked from commit e567594)
Commits on Nov 23, 2022
-
Fix compilation error in ffmpeg JNI layer
PiperOrigin-RevId: 490263003 (cherry picked from commit 202e03f)