Search in sources :

Example 6 with ExoPlayerMessage

use of com.google.android.exoplayer2.ExoPlayer.ExoPlayerMessage in project ExoPlayer by google.

the class SimpleExoPlayer method setVideoSurfaceInternal.

private void setVideoSurfaceInternal(Surface surface, boolean ownsSurface) {
    // Note: We don't turn this method into a no-op if the surface is being replaced with itself
    // so as to ensure onRenderedFirstFrame callbacks are still called in this case.
    ExoPlayerMessage[] messages = new ExoPlayerMessage[videoRendererCount];
    int count = 0;
    for (Renderer renderer : renderers) {
        if (renderer.getTrackType() == C.TRACK_TYPE_VIDEO) {
            messages[count++] = new ExoPlayerMessage(renderer, C.MSG_SET_SURFACE, surface);
        }
    }
    if (this.surface != null && this.surface != surface) {
        // If we created this surface, we are responsible for releasing it.
        if (this.ownsSurface) {
            this.surface.release();
        }
        // We're replacing a surface. Block to ensure that it's not accessed after the method returns.
        player.blockingSendMessages(messages);
    } else {
        player.sendMessages(messages);
    }
    this.surface = surface;
    this.ownsSurface = ownsSurface;
}
Also used : MediaCodecAudioRenderer(com.google.android.exoplayer2.audio.MediaCodecAudioRenderer) MetadataRenderer(com.google.android.exoplayer2.metadata.MetadataRenderer) MediaCodecVideoRenderer(com.google.android.exoplayer2.video.MediaCodecVideoRenderer) TextRenderer(com.google.android.exoplayer2.text.TextRenderer)

Aggregations

MediaCodecAudioRenderer (com.google.android.exoplayer2.audio.MediaCodecAudioRenderer)5 MetadataRenderer (com.google.android.exoplayer2.metadata.MetadataRenderer)5 TextRenderer (com.google.android.exoplayer2.text.TextRenderer)5 MediaCodecVideoRenderer (com.google.android.exoplayer2.video.MediaCodecVideoRenderer)5 TargetApi (android.annotation.TargetApi)1 ExoPlayerMessage (com.google.android.exoplayer2.ExoPlayer.ExoPlayerMessage)1