// 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_clock.mojom";
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.

  // Gets the clock disposition from the source.
  GetClockDisposition() => (ClockDisposition clock_disposition);

  // Gets a master clock if the sink can be master, null otherwise.
  GetMasterClock(Clock& master_clock);

  // Sets a master clock.
  SetMasterClock(Clock? master_clock);

  // Gets the consumer for the stream to be delivered.
  GetConsumer(MediaConsumer& consumer);

  // Gets the status. To get the status immediately, call GetStatus(0). 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;
};
