blob: b317d6324d5634a77a7c11cd35995114ffd5dc65 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
library fuchsia.mediasession;
using zx;
/// |Controller| is a handle for media playback, allowing clients to observe
/// and control a media playback session. Unsupported commands are no-ops.
/// Consult |PlaybackCapabilities|, sent by |OnPlaybackCapabilities|, to learn
/// which commands are supported.
[FragileBase]
interface Controller : Observer {
/// Sent on first connection and when supported
/// playback capabilities change.
-> OnPlaybackCapabilitiesChanged(PlaybackCapabilities playback_capabilities);
// Plays media.
Play();
// Pauses playback and retains position in media
Pause();
// Stops playback. There is no position or associated media in the stopped
// state.
Stop();
// Seeks to a specific position in media. Implementations are free to
// to treat this as a no-op or enter an error state if the position
// is out of bounds. |position| is an offset from the beginning of the media.
SeekToPosition(zx.duration position);
// Skips forward in media. Uses the default skip interval if |skip_amount|
// is 0.
SkipForward(zx.duration skip_amount);
// Skips in reverse in media. Uses the default skip interval if |skip_amount|
// is 0.
SkipReverse(zx.duration skip_amount);
// Changes media to the next item (e.g. next song in playlist).
NextItem();
// Changes media to the previous item.
PrevItem();
// Sets the playback rate of the media. This may imply a change of
// playback mode.
SetPlaybackRate(float32 playback_rate);
// Sets through supported repeat modes.
SetRepeatMode(RepeatMode repeat_mode);
// Sets through supported shuffle modes.
SetShuffleMode(bool shuffle_on);
// Connects a channel to a custom extension. This is for clients
// privy to the underlying implementation.
ConnectToExtension(string extension, handle<channel> channel);
};