android13/external/exoplayer/tree_8e57d3715f9092d5ec54eb.../demos/surface
liiir1985 7f62dcda9f initial 2024-06-22 20:45:49 +08:00
..
src/main initial 2024-06-22 20:45:49 +08:00
README.md initial 2024-06-22 20:45:49 +08:00
build.gradle initial 2024-06-22 20:45:49 +08:00

README.md

ExoPlayer SurfaceControl demo

This app demonstrates how to use the SurfaceControl API to redirect video output from ExoPlayer between different views or off-screen. SurfaceControl is new in Android 10, so the app requires minSdkVersion 29.

The app layout has a grid of SurfaceViews. Initially video is output to one of the views. Tap a SurfaceView to move video output to it. You can also tap the buttons at the top of the activity to move video output off-screen, to a full-screen SurfaceView or to a new activity.

When using SurfaceControl, the MediaCodec always has the same surface attached to it, which can be freely 'reparented' to any SurfaceView (or off-screen) without any interruptions to playback. This works better than calling MediaCodec.setOutputSurface to change the output surface of the codec because MediaCodec does not re-render its last frame when that method is called, and because you can move output off-screen easily (setOutputSurface can't take a null surface, so the player has to use a DummySurface, which doesn't handle protected output on all devices).

See the demos README for instructions on how to build and run this demo.