Document setVideoEffects surface limitation

`Surface`s don't expose their size via Java APIs. Recommend apps pass a
`SurfaceView` (which is preferable to `TextureView` as it's more efficient)
or `SurfaceHolder` so they benefit from the player automatically passing the
size down to the video renderer via `MSG_SET_VIDEO_OUTPUT_RESOLUTION`.

PiperOrigin-RevId: 598804258
This commit is contained in:
andrewlewis 2024-01-16 04:48:57 -08:00 committed by Copybara-Service
parent 5488d33da8
commit fc9900c483

View file

@ -1565,14 +1565,19 @@ public interface ExoPlayer extends Player {
* Sets a {@link List} of {@linkplain Effect video effects} that will be applied to each video
* frame.
*
* <p>If {@linkplain #setVideoSurface passing a surface to the player directly}, the output
* resolution needs to be signaled by passing a renderer message with type {@link
* Renderer#MSG_SET_VIDEO_OUTPUT_RESOLUTION} after calling this method. For {@link SurfaceView},
* {@link TextureView} and {@link SurfaceHolder} output this happens automatically.
*
* <p>The following limitations exist for using {@linkplain Effect video effects}:
*
* <ul>
* <li>This feature works only with the default {@link MediaCodecVideoRenderer} and not custom
* or extension {@linkplain Renderer video renderers}.
* <li>This feature does not work with {@linkplain Effect effects} updating the timestamps.
* <li>This feature does not work with DRM-protected contents.
* <li>This method should be called before calling {@link #prepare}.
* <li>This feature does not work with DRM-protected content.
* <li>This method should be called before calling {@link #prepare()}.
* </ul>
*
* @param videoEffects The {@link List} of {@linkplain Effect video effects} to apply.