- 17 Jan, 2023 22 commits
-
-
PiperOrigin-RevId: 501881646
samrobinson committed -
Frame cache compensates for the fluctuation in frame processing times. Imagine a frame takes 10ms to process, and the interval between two frames is 33ms. The third frame took 40ms to process. If we don't have frame cache: - Process frame 1, ready after 10ms, starts playback, now t=0 ms - Start processing frame 2, ready at t=10ms, - Release frame 2 at t=33ms - We start processing the third frame at t=33ms - The third frame is due presentation at t=66ms - But frame 3 is available at t=73ms, late If we have a frame cache of say 3 frams, - Process frame 1, ready after 10ms, starts playback, now t=0 ms - Start processing frame 2, ready at t=10ms - Start processing frame 3, ready at t=50ms - Release frame 2 at t=33ms - Start frame 4, ready at t=60ms - Frame 3 is due presentation at t=66ms - Frame 3 isn't late PiperOrigin-RevId: 501869948
claincly committed -
PiperOrigin-RevId: 501865706
claincly committed -
Previously, after calling MCVR.setOutput() with null, `frameProcessorManager`'s output surface is cleared. What was unexpected is `ExoPlayerInternal` notifies a zero output resolution after clearing the output surface. This zero resolution causes FrameProcessor to fail. PiperOrigin-RevId: 501861993
claincly committed -
Move BitmapTestUtil from media3.effect to media3.test.utils. This allows this class to be accessed from both transformer and effect tests. Refactoring change. No functional change intended. PiperOrigin-RevId: 501837130
huangdarwin committed -
Each error will make the output be a solid color with a unique color. PiperOrigin-RevId: 501824355
huangdarwin committed -
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 2 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
-