media/demos/surface
olly d68dba6e34 Use relative naming for demo app components
PiperOrigin-RevId: 379506322
2021-06-15 18:46:45 +01:00
..
src/main Use relative naming for demo app components 2021-06-15 18:46:45 +01:00
build.gradle Include MediaSource deps in all demo apps 2021-05-13 17:26:08 +01:00
README.md Adding instructions on how to build and run ExoPlayer demo apps 2020-05-21 17:08:53 +01:00

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).

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