blob: f9907bb60ff777f52dc2a0d9be840c6bea90a51c [file] [log] [blame]
// Copyright 2015 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.
[DartPackage="mojo_services"]
module mojo.media;
import "mojo/services/media/common/interfaces/media_metadata.mojom";
import "mojo/services/media/common/interfaces/media_state.mojom";
import "mojo/services/media/common/interfaces/rate_control.mojom";
// Plays media.
interface MediaPlayer {
// Special value for GetStatus version_last_seen parameter to get the current
// status immediately.
const uint64 kInitialStatus = 0;
// Starts playback.
Play();
// Pauses playback.
Pause();
// Seeks to the specified position, specified in nanoseconds.
// TODO(dalesat): Consider adding relative vs remote flag.
// TODO(dalesat): Consider adding parameters regarding desired precision.
Seek(int64 position);
// Gets the status. To get the status immediately, call
// GetStatus(kInitialStatus). To get updates thereafter, pass the version
// sent in the previous callback.
GetStatus(uint64 version_last_seen) =>
(uint64 version, MediaPlayerStatus status);
};
// MediaPlayer status information.
struct MediaPlayerStatus {
// Current state of the player.
MediaState state;
// Transform translating local time to presentation time. Reverse translation
// (presentation time to local time) is only valid when media is playing.
TimelineTransform? timeline_transform;
// Describes the media.
MediaMetadata? metadata;
};