blob: 45268cce6dc8447d72cd89a3811a96e7e0926579 [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_common.mojom";
import "mojo/services/media/common/interfaces/media_state.mojom";
import "mojo/services/media/common/interfaces/media_transport.mojom";
import "mojo/services/media/common/interfaces/media_types.mojom";
import "mojo/services/media/common/interfaces/rate_control.mojom";
// TODO(dalesat): Define a media sink that multiplexes streams.
// Consumes media streams and delivers them to specified destinations.
interface MediaSink {
// TODO(dalesat): Support fanout to many destinations.
// Special value for GetStatus version_last_seen parameter to get the current
// status immediately.
const uint64 kInitialStatus = 0;
// Gets the consumer for the stream to be delivered.
GetConsumer(MediaConsumer& consumer);
// 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, MediaSinkStatus status);
// Starts playback.
Play();
// Pauses playback.
Pause();
};
// MediaSink status information.
struct MediaSinkStatus {
// Current state of the sink.
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;
};