Search in sources :

Example 1 with ExoPlayerMessage

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

the class SimpleExoPlayer method setVolume.

/**
   * Sets the audio volume, with 0 being silence and 1 being unity gain.
   *
   * @param audioVolume The audio volume.
   */
public void setVolume(float audioVolume) {
    this.audioVolume = audioVolume;
    ExoPlayerMessage[] messages = new ExoPlayerMessage[audioRendererCount];
    int count = 0;
    for (Renderer renderer : renderers) {
        if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
            messages[count++] = new ExoPlayerMessage(renderer, C.MSG_SET_VOLUME, audioVolume);
        }
    }
    player.sendMessages(messages);
}
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)

Example 2 with ExoPlayerMessage

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

the class SimpleExoPlayer method setPlaybackParams.

/**
   * Sets the {@link PlaybackParams} governing audio playback.
   *
   * @param params The {@link PlaybackParams}, or null to clear any previously set parameters.
   */
@TargetApi(23)
public void setPlaybackParams(PlaybackParams params) {
    if (params != null) {
        // The audio renderers will call this on the playback thread to ensure they can query
        // parameters without failure. We do the same up front, which is redundant except that it
        // ensures an immediate call to getPlaybackParams will retrieve the instance with defaults
        // allowed, rather than this change becoming visible sometime later once the audio renderers
        // receive the parameters.
        params.allowDefaults();
        playbackParamsHolder = new PlaybackParamsHolder(params);
    } else {
        playbackParamsHolder = null;
    }
    ExoPlayerMessage[] messages = new ExoPlayerMessage[audioRendererCount];
    int count = 0;
    for (Renderer renderer : renderers) {
        if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
            messages[count++] = new ExoPlayerMessage(renderer, C.MSG_SET_PLAYBACK_PARAMS, params);
        }
    }
    player.sendMessages(messages);
}
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) TargetApi(android.annotation.TargetApi)

Example 3 with ExoPlayerMessage

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

the class SimpleExoPlayer method setAudioStreamType.

/**
   * Sets the stream type for audio playback (see {@link C.StreamType} and
   * {@link android.media.AudioTrack#AudioTrack(int, int, int, int, int, int)}). If the stream type
   * is not set, audio renderers use {@link C#STREAM_TYPE_DEFAULT}.
   * <p>
   * Note that when the stream type changes, the AudioTrack must be reinitialized, which can
   * introduce a brief gap in audio output. Note also that tracks in the same audio session must
   * share the same routing, so a new audio session id will be generated.
   *
   * @param audioStreamType The stream type for audio playback.
   */
public void setAudioStreamType(@C.StreamType int audioStreamType) {
    this.audioStreamType = audioStreamType;
    ExoPlayerMessage[] messages = new ExoPlayerMessage[audioRendererCount];
    int count = 0;
    for (Renderer renderer : renderers) {
        if (renderer.getTrackType() == C.TRACK_TYPE_AUDIO) {
            messages[count++] = new ExoPlayerMessage(renderer, C.MSG_SET_STREAM_TYPE, audioStreamType);
        }
    }
    player.sendMessages(messages);
}
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)

Example 4 with ExoPlayerMessage

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

the class ExoPlayerImplInternal method sendMessagesInternal.

private void sendMessagesInternal(ExoPlayerMessage[] messages) throws ExoPlaybackException {
    try {
        for (ExoPlayerMessage message : messages) {
            message.target.handleMessage(message.messageType, message.message);
        }
        if (mediaSource != null) {
            // The message may have caused something to change that now requires us to do work.
            handler.sendEmptyMessage(MSG_DO_SOME_WORK);
        }
    } finally {
        synchronized (this) {
            customMessagesProcessed++;
            notifyAll();
        }
    }
}
Also used : ExoPlayerMessage(com.google.android.exoplayer2.ExoPlayer.ExoPlayerMessage)

Example 5 with ExoPlayerMessage

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

the class SimpleExoPlayer method setVideoScalingMode.

/**
   * Sets the video scaling mode.
   * <p>
   * Note that the scaling mode only applies if a {@link MediaCodec}-based video {@link Renderer} is
   * enabled and if the output surface is owned by a {@link android.view.SurfaceView}.
   *
   * @param videoScalingMode The video scaling mode.
   */
public void setVideoScalingMode(@C.VideoScalingMode int videoScalingMode) {
    this.videoScalingMode = videoScalingMode;
    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_SCALING_MODE, videoScalingMode);
        }
    }
    player.sendMessages(messages);
}
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