| // 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; |
| using fuchsia.mediaplayer; |
| |
| struct PlaybackStatus { |
| /// Total duration of playing media. 0 if not known or not applicable. |
| zx.duration duration; |
| PlaybackState playback_state; |
| /// A playback function that describes the position and rate of play through |
| /// the media. |
| // TODO(turnage): move this type to fuchsia.media |
| fuchsia.mediaplayer.TimelineFunction playback_function; |
| RepeatMode repeat_mode; |
| bool shuffle_on; |
| /// Whether a media item exists after the playing one in queue (e.g. a next |
| /// song in an album or next video in a playlist.) |
| bool has_next_item; |
| /// Whether a media item preceded the playing one in queue. |
| bool has_prev_item; |
| Error? error; |
| }; |
| |
| enum PlaybackState { |
| STOPPED = 0; |
| PLAYING = 1; |
| PAUSED = 2; |
| ERROR = 3; |
| }; |
| |
| struct Error { |
| uint32 code; |
| string description; |
| }; |
| |
| enum RepeatMode { |
| /// No repeat. |
| OFF = 0; |
| /// Repeat the relevant group of media (e.g. playlist). |
| GROUP = 1; |
| /// Repeat the currently playing media. |
| SINGLE = 2; |
| }; |