- 17 Jan, 2023 16 commits
-
-
Tested manually on the Pixel 7 and Samsung S10. PiperOrigin-RevId: 501626354
huangdarwin committed -
Notifies event listener of FrameProcessor's new output size to layout the PlayerView PiperOrigin-RevId: 501590239
claincly committed -
This class may be removed soon, but in the meantime clarify this method's javadoc summary fragment to make it marginally clearer that this only affects the "displayed" height instead of the "encoded" height. PiperOrigin-RevId: 501582219
huangdarwin committed -
PiperOrigin-RevId: 501575932
samrobinson committed -
Small refactoring change to simplify the logic a tiny bit by removing one unnecessary variable. No functional change intended. PiperOrigin-RevId: 501566533
huangdarwin committed -
This is a prerequisite step to making the `ResamplingAudioProcessor` public. PiperOrigin-RevId: 501545561
samrobinson committed -
This method allows to call through to `StreamManager.focus()` of the currently playing SSAI stream. PiperOrigin-RevId: 501399144
bachinger committed -
Starting with Android 13 (API 33) an app needs to request the permission to post notifications or notifications are suppressed. This change documents this in the class level JavaDoc of the `DownloadService`. Issue: google/ExoPlayer#10884 PiperOrigin-RevId: 501346908
bachinger committed -
Starting with API 33 the POST_NOTIFICATION permission needs to be requested at runtime or the notification is not shown. Note that with an app with targetSdkVersion < 33 but on a device with API 33 the notification permission is automatically requested when the app starts for the first time. If the user does not grant the permission, requesting the permission at runtime result in an empty array of grant results. Issue: google/ExoPlayer#10884 PiperOrigin-RevId: 501320632
bachinger committed -
PiperOrigin-RevId: 501314812
samrobinson committed -
PiperOrigin-RevId: 501287961
claincly committed -
The migration strategy is to deprecate `androidx.media3.session.BitmapLoader` and copy the file into common since BitmapLoader is a public interface that apps could be relying on. PiperOrigin-RevId: 501266521
tofunmi committed -
It makes more sense to have it in the AssetLoader now that decoding is done there, particularly as the decoder factory should rarely be customized. Also remove the setter from the AssetLoader.Factory because it's uncommon to have setters in a factory. PiperOrigin-RevId: 501244974
kimvde committed -
This improves performance and makes the code more intuitive. PiperOrigin-RevId: 501220234
kimvde committed -
It's unusual to have setters on a Factory. PiperOrigin-RevId: 501212264
kimvde committed -
For TV devices the skip button needs to have the focus to be accessible with the remote control. This property makes this configurable while being set to true by default. PiperOrigin-RevId: 501077608
bachinger committed
-
- 10 Jan, 2023 16 commits
-
-
Design document: go/me-android-audio-mixer PiperOrigin-RevId: 501048758
steveanton committed -
The FrameProcessor is created on the GL thread, but: - setInputFrameInfo() is currently called from the playback thread. - release() is currently called from the transformer internal thread. PiperOrigin-RevId: 501035719
kimvde committed -
PiperOrigin-RevId: 501010994
tonihei committed -
When audio processors are enabled during tunneling, they must produce output immediately, ensuring that the timestamps of the output samples correspond to the input and that no additional samples are produced. This requirement is documented in the Javadoc of DefaultAudioSink. However, this alone doesn't guarantee all buffers are immediately written to the AudioTrack, because the AudioTrack writes are non-blocking and may need multiple attempts. When draining the audio sink at the end of the stream, we currently fail in this situation because we assert that the timestamp must be set (=the drain operation is a no-op). But this may not be true when the previous non-blocking write wasn't fully handled. We can fix this by saving the last timestamp and reusing it during draining. Issue: google/ExoPlayer#10847 PiperOrigin-RevId: 500943891
tonihei committed -
There is no API to allow applications to use these currently. Until that exists, these classes do not need to be public. PiperOrigin-RevId: 500792401
samrobinson committed -
PiperOrigin-RevId: 500789076
samrobinson committed -
PiperOrigin-RevId: 500786191
samrobinson committed -
PiperOrigin-RevId: 500776260
samrobinson committed -
This makes more sense as SampleConsumer.dequeueInputBuffer returns the same buffer as long as it is not queued. PiperOrigin-RevId: 500631982
kimvde committed -
Whether to write a sample or not was based on the timestamp of the previous sample, rather than the current sample. PiperOrigin-RevId: 500195279
kimvde committed -
Split ExoPlayerAssetLoaderRenderer into audio and video renderers. PiperOrigin-RevId: 500102256
kimvde committed -
Initialising the fields as Integer and then getting a String on compute time is slow. Instead we directly initialise these fields as String. Improves the time taken in bundling PlayerInfo further to less than 200ms from ~300ms. Also modified a test to improve productive coverage. PiperOrigin-RevId: 500003935
rohks committed -
PiperOrigin-RevId: 499905136
rohks committed -
This brings together the multiple details about a muxer track, and reduces the need for additional variables and more complicated track tracking. PiperOrigin-RevId: 499872145
samrobinson committed -
PiperOrigin-RevId: 499808853
andrewlewis committed -
Throw a ParserException instead of a NullPointerException if the sample table (stbl) is missing a required sample description (stsd). As per the javadoc for AtomParsers.parseTrack, ParserException should be "thrown if the trak atom can't be parsed." PiperOrigin-RevId: 499522748
Googler committed
-
- 04 Jan, 2023 8 commits
-
-
Improves the time taken to construct playerInfo from its bundle from ~400 ms to ~300 ms. Also made `Timeline.Window.toBundle(boolean excludeMediaItem)` public as it was required to assert a condition in tests. PiperOrigin-RevId: 499512353
rohks committed -
The old names are not really correct anymore because: - The Audio/VideoTranscodingSamplePipelines do not decode anymore. - The pipelines now mux the encoded data. PiperOrigin-RevId: 499498446
kimvde committed -
Whilst testing fallback functionality, I found that we were aggressively reducing the resolution if it was not supported. A quick test found that we could reduce by a much smaller increments. Performance wise it appears these checks are incredibly quick. The code for checking supported sizes was duplicated, with one case having a bug because of this duplication (2/3 case). This CL abstracts this into a loop. PiperOrigin-RevId: 499497646
samrobinson committed -
PiperOrigin-RevId: 499469006
kimvde committed -
Added another check in each of these tests to make sure we don't add keys to bundle for fields with default values. Also fixed comments of similar changes in `AdPlaybackStateTest` and `MediaMetadataTest`. PiperOrigin-RevId: 499463581
rohks committed -
PiperOrigin-RevId: 499454273
kimvde committed -
Based on experimentation it seems that buffers can occasionally (roughly 1% of test runs) be dropped when rendering off-screen from EGL on the emulator. Specifically, in this test, sometimes after rendering three buffers with distinct timestamps only the first and third buffers' timestamps are handled in the `ImageReader`'s image available callback causing the assertion checking all frames rendered to fail. This behavior seems to be independent of the nanosecond presentation time attached to the buffers (as expected for off-screen rendering). Introducing a pause of 1 second between rendering each frame reduces the flake rate to around 1/2000. This increases the run time of some of the tests, so this change also removes the 5 second `FRAME_PROCESSING_WAIT_MS` (it seems to be unnecessary when rendering off-screen) and instead uses a latch to wait until the frame processor has handled 'end of stream'. PiperOrigin-RevId: 499440591
andrewlewis committed -
- Do not fail silently if selectedEffects is null. - Do not add an empty overlay effect to the Transformer to avoid transcoding video all the time. PiperOrigin-RevId: 499168759
kimvde committed
-