- 14 Nov, 2022 8 commits
-
-
Also, update API level per the test now using API 31 PiperOrigin-RevId: 488359535
huangdarwin committed -
Add an HLG Pixel 7 Pro video and its associated format for testing. PiperOrigin-RevId: 488353926
huangdarwin committed -
PiperOrigin-RevId: 488310077
kimvde committed -
PiperOrigin-RevId: 487811903
samrobinson committed -
PiperOrigin-RevId: 487786326
huangdarwin committed -
Added new method to check if codec just functionally supports a format. Changed getDecoderInfosSortedByFormatSupport to use new function to order by functional support. This allows decoders that only support functionally and are more preferred by the MediaCodecSelector to keep their preferred position in the sorted list. UnitTests included -Two MediaCodecVideoRenderer tests that verify hw vs sw does not have an effect on sort of the decoder list, it is only based on functional support Issue: google/ExoPlayer#10604 PiperOrigin-RevId: 487779284
michaelkatz committed -
PiperOrigin-RevId: 487779266
ibaker committed -
PiperOrigin-RevId: 487539107
ibaker committed
-
- 10 Nov, 2022 25 commits
-
-
Also make order of streamStartPositionUs and streamOffsetUs consistent PiperOrigin-RevId: 487511633
kimvde committed -
The MediaControllerImplBase listener invocations currently use the class member state that can change if one of the listener method implementations changes the state recursively. Updating the listener invocations to use a final local variable ensures all listeners get consistent updates. PiperOrigin-RevId: 487503373
tonihei committed -
The tests in MediaControllerCompatCallbackWithMediaSessionTest don't follow this pattern very consistently at the moment. PiperOrigin-RevId: 487501913
tonihei committed -
Creating the PlaybackStateCompat from a media3 Player state is done already by the MediaSessionConnector (and used widely). The media3 session module should set the same states under the same circumstances to ensure compatiblity and consistency. PlaybackStateCompat changes made in media3 session: - Use STATE_STOPPED when player is ended instead of STATE_PAUSED - Use STATE_PLAYING when playback is suppressed temporarily. - Set the playback speed to 0 if the player is not playing. - Add extras for mediaId and user-set playback speed. Part of the problem was that Player.isPlaying() was used to check the state. Unfortunately, MockPlayer.isPlaying() is implemented in a way that makes it hard to test these changes, because the value is set independently of playbackState, playWhenReady and suppression reason. To be able to write consistent, logical tests, this change also removes the independent setting of isPlaying in MockPlayer to align it better with a real player. This requires to update some other tests to use alternative methods. PiperOrigin-RevId: 487500859
tonihei committed -
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
ibaker committed -
#minor-release PiperOrigin-RevId: 487497923
ibaker committed -
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
ibaker committed -
The connection to a legacy MediaSession may receive additional onSessionReady callbacks that are treated as additional state updates. We currently also set the "notifyConnected" flag for these updates even though we are connected already, causing an IllegalStateException. Fix the exception by not setting this flag. We can also remove the wording about "locked" updates since this class operates everything on a single application thread. Issue: androidx/media#49 PiperOrigin-RevId: 487487286
tonihei committed -
PiperOrigin-RevId: 487487259
kimvde committed -
#minor-release PiperOrigin-RevId: 487479366
christosts committed -
The player is still driving the transformation at this point. The transformer thread will be added in another CL. PiperOrigin-RevId: 487479148
kimvde committed -
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
ibaker committed -
This involves reducing the visibility of methods/constructors that are already unusable outside the `androidx.media3.test.utils` package. #minor-release PiperOrigin-RevId: 487473005
ibaker committed -
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
ibaker committed -
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
ibaker committed -
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
ibaker committed -
Also, document that we tone map when no HDR features are explicitly set PiperOrigin-RevId: 487310971
huangdarwin committed -
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
claincly committed -
Accepting a PlayerInfo while the MediaController is masking its state means we are reverting all masking changes we've made earlier. This only makes sense if the update already contains the masked operation. If multiple operations are in flight (or are sent from the session while they are in flight), we need to wait until all of them are handled before accepting new updates. In cases where a new update from the session excludes the Timeline and the masked state is incompatible with the new update, we also risk an exception if we accept the update too early. PiperOrigin-RevId: 487266899
tonihei committed -
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
sheenachhabra committed -
This is the follow-up commit where the onEvents callback raised by MediaController contains the missing events, for the case where MediaController is connected to a legacy MediaSession. #minor-release PiperOrigin-RevId: 487231996
christosts committed -
Just move some code around for now, to start setting up the overall structure. PiperOrigin-RevId: 487229329
kimvde committed -
Imported from GitHub PR Issue: google/ExoPlayer#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: google/ExoPlayer#10760 Merge 82ceeb77d6df71f5ffb0474db66a36fd6eb8e51a into 972e169b COPYBARA_INTEGRATE_REVIEW=go/exoghi/10762 from Tolriq:ffmpeg_error_code 82ceeb77d6df71f5ffb0474db66a36fd6eb8e51a PiperOrigin-RevId: 487189910
Tolriq committed -
This is to avoid having this logic in TransformerInternal once it is added. PiperOrigin-RevId: 487159941
kimvde committed -
#minor-release PiperOrigin-RevId: 486969194
bachinger committed
-
- 08 Nov, 2022 7 commits
-
-
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
kimvde committed -
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
sheenachhabra committed -
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
huangdarwin committed -
PiperOrigin-RevId: 486706595
huangdarwin committed -
The folder type is useful metadata to understand programmatically what criterion was used to create the folder. PiperOrigin-RevId: 486653317
tonihei committed -
Remove static imports to Player constants to make the code more readable. #minor-release PiperOrigin-RevId: 486619911
christosts committed -
The method getCurrentPosition() may return a lesser position during pause than the previous retrieved value due to ipc call delay in playerInfo update. Users see track position jump backwards at pause. Fixed to return last estimated position while paused if have not received updated playerInfo. Code is deduped to point getContentPosition() to getCurrentPosition() when !isPlayingAd. PiperOrigin-RevId: 486617341
michaelkatz committed
-