blob: d0902cc42ef2259539b4c9bb22e80e6272c4d6a7 [file] [log] [blame]
// Copyright 2022 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.media2;
using zx;
/// As soon as possible.
type Asap = struct {};
/// Specifies a real time using a system monotonic or reference clock time or an
/// option specifying ‘as soon as possible’. This type is used when a transport
/// control operation is to occur using a time value that is meaningful when the
/// transport is stopped.
type RealTime = flexible union {
/// As soon as possible.
1: asap Asap;
/// Real time according to the system monotonic clock.
2: system_time zx.Time;
/// Real time according to the relevant reference clock. If no reference
/// clock (other than the system clock) is relevant, this is equivalent to
/// `system_time`.
3: reference_time zx.Time;
};
/// Specifies a stream time either as a duration or as a packet timestamp in the
/// relevant timestamp units. This type is used when a transport control
/// operation is to define a positional offset value that is relative to the
/// beginning of the stream.
type StreamTime = flexible union {
/// Stream time expressed as a duration (nanoseconds).
1: stream_time zx.Duration;
/// Stream time expressed in the same timestamps that are used on the
/// relevant packets.
2: packet_timestamp int64;
};
/// Specifies a real time or a stream time. Real time is expressed using a
/// system monotonic or reference clock time. Stream time is expressed either as
/// a duration or as a packet timestamp in the relevant units. This type is used
/// when a transport control operation is to occur using a time value that is
/// meaningful when the transport is progressing.
type RealOrStreamTime = flexible union {
/// As soon as possible.
1: asap Asap;
/// Real time according to the system monotonic clock.
2: system_time zx.Time;
/// Real time according to the relevant reference clock. If no reference
/// clock (other than the system clock) is relevant, this is equivalent to
/// `system_time`.
3: reference_time zx.Time;
/// Stream time expressed as a duration (nanoseconds).
4: stream_time zx.Duration;
/// Stream time expressed in the same timestamps that are used on the
/// relevant packets.
5: packet_timestamp int64;
};