- 09 Jun, 2022 4 commits
-
-
#minor-release PiperOrigin-RevId: 453622964
ibaker committed -
PiperOrigin-RevId: 453510883
olly committed -
PiperOrigin-RevId: 453490088
Marc Baechinger committed -
#minor-release PiperOrigin-RevId: 453408087
christosts committed
-
- 07 Jun, 2022 6 commits
-
-
The current setup with distinct, private `keyForField` implementations, leaves open the (theoretical) possibility of a clash in the `Bundle` keys used by the superclass and subclass. This change brings consistency with our only other extensible `Bundleable` type (`PlaybackException`). #minor-release PiperOrigin-RevId: 453385875
ibaker committed -
We generally nest the `Builder` for `Foo` inside `Foo`. In this case, there's already a `DefaultTrackSelector.Parameters.Builder` type visible to a developer, it just happens to be the 'common' `TrackSelectorParameters.Builder`, so using it is a bit weird. For example this code snippet doesn't compile because `DefaultTrackSelector.Parameters.Builder#build()` returns `TrackSelectionParameters`. This CL fixes that problem and the code snippet now compiles. ```java DefaultTrackSelector.Parameters params = new DefaultTrackSelector.Parameters.Builder(context).build() ``` #minor-release PiperOrigin-RevId: 453215702
ibaker committed -
Implementations of this interface will be able to drop or add frames, change timestamps, accept multiple input frames before producing output, and process frames on their own background thread. A default implementation of this interface will be added to SingleFrameGlTextureProcessor in a follow-up. PiperOrigin-RevId: 453159835
hschlueter committed -
#minor-release PiperOrigin-RevId: 452282128
bachinger committed -
This is done by removing the `@FieldNumber` IntDef completely. It's not really adding much value anyway, because it's `open` so there's no real enforcement to prevent passing 'incorrect' values. #minor-release PiperOrigin-RevId: 452108972
ibaker committed -
This internal listener avoids wrapping the TransformationExceptions in PlaybackExceptions that are handled via the Player.Listener and is also used for FrameProcessingExceptions which already avoided the PlaybackException layer previously. This listener will also be useful in follow-ups for encoder-related TransformationExceptions that are thrown in the SurfaceProvider that will be called on the GL thread. PiperOrigin-RevId: 452074575
hschlueter committed
-
- 31 May, 2022 8 commits
-
-
#minor-release PiperOrigin-RevId: 452043577
bachinger committed -
This should fix running `./gradlew clean test` if MediaPipe hasn't been built, for example. PiperOrigin-RevId: 452033698
andrewlewis committed -
This reinstates the permissive behaviour removed by https://github.com/google/ExoPlayer/commit/fe7e5b8181333683fda7869c3d9cffc0bdefcccb Test file created by opening bear.opus in a hex editor and naively duplicating the two header packets, starting at (and including) the first `OggS` in the file and ending just before the third `OggS`. #minor-release Issue: google/ExoPlayer#10038 PiperOrigin-RevId: 452015662
ibaker committed -
#minor-release PiperOrigin-RevId: 452006137
bachinger committed -
#minor-release PiperOrigin-RevId: 452002758
ibaker committed -
This ensures the 'use X instead' message is easily visible in the generated HTML for the overriding method. Currently it's not, e.g.: https://exoplayer.dev/doc/reference/com/google/android/exoplayer2/BasePlayer.html#getCurrentWindowIndex() #minor-release PiperOrigin-RevId: 452002224
ibaker committed -
Once the more advanced GlTextureProcessor interface exists, it will be possible to change the output size of a GlTextureProcessor between frames. To keep the re-configuration based on the frame sizes minimal, things indepedent of the frame size, such as the GlProgram, can be initialized in the constructor. PiperOrigin-RevId: 451997584
hschlueter committed -
PiperOrigin-RevId: 451994696
bachinger committed
-
- 30 May, 2022 19 commits
-
-
The current verion of AGP warns it doesn't support Android API 32 [1]. The wrapper was upgraded with ([instructions](https://docs.gradle.org/current/userguide/gradle_wrapper.html#sec:upgrading_wrapper)): ```shell $ ./gradlew wrapper --gradle-version 7.4.2 --distribution-type all ``` [1] ``` WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 32 This Android Gradle plugin (7.0.3) was tested up to compileSdk = 31 This warning can be suppressed by adding android.suppressUnsupportedCompileSdk=32 to this project's gradle.properties The build will continue, but you are strongly encouraged to update your project to use a newer Android Gradle Plugin that has been tested with compileSdk = 32 ``` #minor-release PiperOrigin-RevId: 451893214
ibaker committed -
Gives a bit more information upon failures PiperOrigin-RevId: 451882968
aquilescanta committed -
Add bitrate check to the "can encode" criteria. PiperOrigin-RevId: 451868042
claincly committed -
This value only existed to allow setting media URLs from external sources (e.g. in a MediaController) so that a player can start playing this item. Now that we have MediaItem.RequestMetadata.mediaUrl we can remove this value from MediaMetadata because it's request metadata, not media metadata. PiperOrigin-RevId: 451857413
tonihei committed -
These fields can be used to transport additional request properties when the requester doesn't know the details needed for the actual playback (i.e. the LocalConfiguration). PiperOrigin-RevId: 451857093
tonihei committed -
ExoPlayer applies a large time offset to buffers so that, if the input has negative timestamps, generally buffers seen by the decoders should have positive timestamps. Modify how the offset is handled in `Transformer` so that decoders and encoders generally see positive timestamps, by leaving the offset on samples when reading them in the base renderer (remove the code that removed the offset), and then removing the offset when muxing. Also update the frame processor chain and slow motion flattening code to retain the existing behavior after this change (these both need original media presentation timestamps) Tested via existing end-to-end tests and manually verified that the overlay frame processor shows the expected original media timestamps. Aside: we don't need the same logic as ExoPlayer to track stream offsets across the decoder yet, because we don't try to handle stream changes during playback in single asset editing. (There is an edge case of multi-period DASH that may not work but I doubt anyone will use that as input to `Transformer` before we change the code to handle multi-asset properly.) In future we should try to refactor interaction with the decoder to use the same code for Transformer and ExoPlayer. PiperOrigin-RevId: 451846055
andrewlewis committed -
PiperOrigin-RevId: 451831531
ibaker committed -
PiperOrigin-RevId: 451428202
samrobinson committed -
Most devices won't support 8k decoding, so they'll skip this test entirely. As the video is quite short, this test shouldn't be any longer than the nearby, long-running 4k60 test. PiperOrigin-RevId: 451423368
huangdarwin committed -
PiperOrigin-RevId: 451392021
samrobinson committed -
PiperOrigin-RevId: 451384408
samrobinson committed -
Unconditionally sleep for offload, if the audio buffer is full. Previously ExoPlayer would not sleep if the expected wake-up was in 2s. This was to prevent underrun if the wake-up was delayed. Experiments have shown that the wakup audio buffer is far more than 2s (around 1min). Additionally, the metric was incorrect because it measured both, AudioTrack + DSP. Finally, this metric was erroneous after a gapless transition, when the head position would reset to 0 and thus the computed delay until next wakeup was too large. PiperOrigin-RevId: 451383701
bachinger committed -
PiperOrigin-RevId: 451380267
hschlueter committed -
PiperOrigin-RevId: 451371681
hschlueter committed -
SSIM calculation requires the input and output dimensions to be identical. For devices that can't encode the input dimensions, skip SSIM calculations and log the cause. Only apply this on tests where the encoder may not support the input file dimensions. PiperOrigin-RevId: 451364904
huangdarwin committed -
Decode-only video frames (needed when the frame at / first frame after the clipping start is not a key frame) need to be decoded but not passed to the frame processor chain or encoder. The clipping start offset needs to be removed from the frame timestamps in the passthrough and video pipelines. There are no changes needed for this in the audio pipeline, as it doesn't use the input timestamps -- it uses its own timestamps derived from the buffer sizes instead. Also add demo option to try this out. #minor-release PiperOrigin-RevId: 451353609
hschlueter committed -
There's no need to manually construct a 'default' DefaultDataSource.Factory instance, we can just pass the `Context` to `DefaultMediaSourceFactory` and let it construct the `DefaultDataSource.Factory` internally. PiperOrigin-RevId: 451155747
ibaker committed -
PiperOrigin-RevId: 451142799
hschlueter committed -
Also update names of implementations to match design doc. In follow-ups, SingleFrameGlTextureProcessor will become an abstract implementation of a new GlTextureProcessor interface. Texture processor makes sense as it processes OpenGL textures. The term frame processor will be used for something else in follow-ups. PiperOrigin-RevId: 451142085
hschlueter committed
-
- 26 May, 2022 3 commits
-
-
PiperOrigin-RevId: 451135097
ibaker committed -
* Rename (via deprecation) `MediaItem.DrmConfiguration.Builder#forceSessionsForAudioAndVideoTracks` to `setForceSessionsForAudioAndVideoTracks`. This is more consistent with existing 'force' method names both in this class and in `TrackSelectionParameters.Builder`. * Add missing `@Nullable` annotation to the parameter for `MediaItem.SubtitleConfiguration.Builder#setMimeType`. This annotation is already present on the `MediaItem.SubtitleConfiguration#mimeType` field that this setter corresponds to. PiperOrigin-RevId: 450941336
ibaker committed -
There is a problem with the ImageReader formats used by the SSIM helper that only occurs for Nexus 5 API 21, so as a workaround we can skip the SSIM calculation on Nexus 5 API 21. This skips just the SSIM calculation (by setting the value to 1.0 instead and logging). The tests still run when SSIM is skipped so that we can detect other failures. PiperOrigin-RevId: 450903183
hschlueter committed
-