// Copyright 2016 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;

// TODO(dalesat): Move out of media to somewhere more generic.

// Represents the relationship between and subject timeline and a reference
// timeline.
//
// To translate a reference timeline value r to the subject timeline, apply
// the following formula:
//
//   (r - reference_time) * subject_delta / reference_delta + subject_time
//
// To translate a subject timeline value s to the reference timeline, apply
// this formula provided subject_delta isn't zero:
//
//   (s - subject_time) * reference_delta / subject_delta + reference_time
//
struct TimelineTransform {
  // A value from the reference timeline that correlates to timeline_time.
  int64 reference_time = 0;

  // A value from the subject timeline that correlates to reference_time.
  int64 subject_time = 0;

  // The change in the reference timeline corresponding to timeline_delta.
  // Cannnot be zero.
  uint32 reference_delta = 1;

  // The change in the subject timeline corresponding to reference_delta.
  uint32 subject_delta = 0;
};

// A push-mode consumer of timeline updates.
interface TimelineConsumer {
  const int64 kUnspecifiedTime = 0x7fffffffffffffff;

  // Sets the timeline transform at the indicated effective time. Exactly one
  // of the effective_*_time values must be kUnspecifiedTime.
  // effective_subject_time can only be specified if the current subject_delta
  // isn’t zero. reference_delta may not be zero. subject_time may be
  // kUnspecifiedTime to indicate that the new transform subject_time should
  // be inferred from the effective time. The new transform reference_time is
  // always inferred from the effective time. The callback is called at the
  // effective time or when a pending operation is cancelled due to a
  // subsequent call, in which case the 'completed' value is false.
  SetTimelineTransform(
      int64 subject_time,
      uint32 reference_delta,
      uint32 subject_delta,
      int64 effective_reference_time,
      int64 effective_subject_time) => (bool completed);
};
