// Copyright 2018 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef MEDIA_BASE_MEDIA_CONTROLLER_H_ #define MEDIA_BASE_MEDIA_CONTROLLER_H_ #include "base/time/time.h" namespace media { // High level interface that allows a controller to issue simple media commands. // Modeled after the media_router.mojom.MediaController interface. // State changes will be signaled via the MediaStatusObserver interface. // TODO(tguilbert): Add MediaStatusObserver interface. class MediaController { public: virtual ~MediaController() = default; // Starts playing the media if it is paused. Is a no-op if not supported by // the media or the media is already playing. virtual void Play() = 0; // Pauses the media if it is playing. Is a no-op if not supported by the media // or the media is already paused. virtual void Pause() = 0; // Mutes the media if |mute| is true, and unmutes it if false. Is a no-op if // not supported by the media. virtual void SetMute(bool mute) = 0; // Changes the current volume of the media, with 1 being the highest and 0 // being the lowest/no sound. Does not change the (un)muted state of the // media. Is a no-op if not supported by the media. virtual void SetVolume(float volume) = 0; // Sets the current playback position. |time| must be less than or equal to // the duration of the media. Is a no-op if the media doesn't support seeking. virtual void Seek(base::TimeDelta time) = 0; }; } // namespace media #endif // MEDIA_BASE_MEDIA_CONTROLLER_H_