- 09 Jun, 2022 11 commits
-
-
PiperOrigin-RevId: 453905355
Marc Baechinger committed -
Some Player implementations have no playlist capability but can still set a MediaItem for playback. Examples are a MediaController connected to a legacy MediaSession, ExoPlayer up to 2.12 or MediaPlayer. To indicate this capability, we need an allowed command in addition to COMMAND_CHANGE_MEDIA_ITEMS that just allows to set a single item that replaces everything that is currently played. #minor-release PiperOrigin-RevId: 453879626
tonihei committed -
Use Collections.synchronizedSet() instead of creating a set from a ConcurrentHashMap because ConcurrentHashMap has a bug in APIs 21/22 that can result in lost updates. PiperOrigin-RevId: 453696565
christosts committed -
This removes the prior restriction of needing to remember not to crop and set aspect ratio in the same Presentation.Builder, and makes each class a bit more targeted. This is partially made feasible by the past work to merge consecutive MatrixTransformations into a single MatrixTransformationFrameProcessor, which ensures that there's no loss in quality between successive MatrixTransformations. PiperOrigin-RevId: 453660582
huangdarwin committed -
With HLS chunkless preparation, audio formats may have no value for channel count. In this case, the DefaultAudioSink will either query the platform for a supported channel count (API 29+) or assume a max channel count based on the encoding spec in order to decide whether the audio format can be played with audio passthrough. Issue: google/ExoPlayer#10204 #minor-release PiperOrigin-RevId: 453644548
christosts committed -
PiperOrigin-RevId: 453633920
hschlueter committed -
SingleFrameGlTextureProcessor is now an abstract class containing a default implementation of the more flexible GlTextureProcessor interface while still exposing the same simple abstract methods for single frame processing it previously did. FrameProcessorChain and GlEffect will be changed to use GlTextureProcessor in follow-ups. PiperOrigin-RevId: 453633000
hschlueter committed -
These legacy callbacks are currently forwarded to onSetMediaUri which will be removed in the future. Also make sure to only call player.prepare/play after the items have been set. The calls to onAddQueueItem are also forwarded to onAddMediaItems to actually allow a session to resolve these items to playable media, which wasn't possible so far. PiperOrigin-RevId: 453625204
tonihei committed -
#minor-release PiperOrigin-RevId: 453622964
ibaker committed -
PiperOrigin-RevId: 453510883
olly committed -
PiperOrigin-RevId: 453490088
Marc Baechinger committed
-
- 07 Jun, 2022 10 commits
-
-
#minor-release PiperOrigin-RevId: 453408087
christosts committed -
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 -
#minor-release PiperOrigin-RevId: 453384451
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 -
PiperOrigin-RevId: 453168843
christosts committed -
This change makes MediaSessionPermissionTest.removeMediaItems() non-flaky. This is a quick fix though it'd be good to refactor this test file. PiperOrigin-RevId: 453162764
christosts 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/androidx/media/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 -
Issue: androidx/media#66 Issue: androidx/media#65 #minor-release PiperOrigin-RevId: 452004492
bachinger 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 11 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 -
PiperOrigin-RevId: 451875964
bachinger committed -
The classes were renamed to `PlaceholderXXX` in https://github.com/androidx/media/commit/33373d0d0a159ad9c9c3590c838098c4c1530910 #minor-release PiperOrigin-RevId: 451872006
ibaker committed -
This provides an (unstable) API for apps to broadcast session extras Bundle to all connected controllers and set the extras in the legacy session. Similar to the custom layout, the extras Bundle is not part of the Media3 session state. This means that when a Media3 controller connects to the session after the broadcast, the extras needs to be sent to that controller in `MediaSession.Callback.onPostConnect(MediaSession session, ControllerInfo controller)`. PiperOrigin-RevId: 451871731
bachinger committed -
Add bitrate check to the "can encode" criteria. PiperOrigin-RevId: 451868042
claincly committed -
PiperOrigin-RevId: 451859199
bachinger committed -
PiperOrigin-RevId: 451857459
bachinger 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 -
The MediaItemFiller is not flexible enough for most realworld usages because: - it doesn't allow asynchronous resolution of MediaItems (e.g. to look up URIs from a database) - it doesn't allow to batch updates for multiple items or do more advanced customizations (e.g. expanding a mediaId representing a playlist to multiple items). Both issues can be solved by passing in a list of items and returning a ListenableFuture. The callback itself can also move into MediaSession.Callback for consistency with the other callbacks. PiperOrigin-RevId: 451857319
tonihei committed -
The MockPlayer currently: - uses separate fields for single mediaItem vs multiple mediaItems - replaces all items on addMediaItem operations - does nothing on remove/move operations. Fix all of this by using a single field that replicates the player operations directly. Some tests also need to be updated to make them more realistic (for example only removing items from a playlist that have previously been added). PiperOrigin-RevId: 451857271
tonihei committed
-