blob: afd1f063cbf9f4c62e239bd9754df406ec250271 [file] [log] [blame]
// 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_