
7e65cce967
introduced a regression on ExoPlayer.setVideoEffects() where there is flash on the screen after the first few frames are shown. Before7e65cce967
, the first frames of the content are missed, until MediaCodecVideoRenderer sends the onVideoSizeChanged() callback. The first frame is processed but not shown, the onVideoSizeChanged() is triggered and the renderer receives a video output resolution message as a response from the UI.7e65cce967
fixed the missed first frames by setting a surface on the CompositingVideoSinkProvider before the provider is initialized, and as as result: - the first frames are rendered - the MediaCodecVideoRenderer sends the the onVideoSizeChanged() after frames are shown - the UI sends a video output resolution change - the MediaCodecVideoRenderer updates the CompositingVideoSinkProvider which causes the flash. The underlying problem is with onVideoSizeChanged() not being triggered early enough, before the first frame is shown. Because the flashing is a regression, this commit is reverting7e65cce967
but keeps the test that was added as ignored, so that the test is re-enabled as soon as we address the underlying issue. PiperOrigin-RevId: 597814013
Effect module
Provides functionality for applying effects to video frames.
Getting the module
The easiest way to get the module is to add it as a gradle dependency:
implementation 'androidx.media3:media3-effect:1.X.X'
where 1.X.X
is the version, which must match the version of the other media
modules being used.
Alternatively, you can clone this GitHub project and depend on the module locally. Instructions for doing this can be found in the top level README.