blob: b1b89d0941e22845e0f802de45a9b4fc43b2246c [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_metadata.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";
// Produces media streams delivered from a specified origin.
interface MediaSource {
// Special value for GetStatus version_last_seen parameter to get the current
// status immediately.
const uint64 kInitialStatus = 0;
// Gets the streams produced by this source.
GetStreams() => (array<MediaSourceStreamDescriptor> streams);
// Gets the producer for the specified stream.
GetProducer(uint32 stream_index, MediaProducer& producer);
// Gets the pull mode producer for the specified stream.
GetPullModeProducer(uint32 stream_index, MediaPullModeProducer& producer);
// 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, MediaSourceStatus status);
// Prepares the source.
Prepare() => ();
// Primes the source and downstream components.
Prime() => ();
// Flushes the source and downstream components.
Flush() => ();
// Seeks to the specified position, specified in nanoseconds.
Seek(int64 position) => ();
};
// Describes a media stream produced by a source.
struct MediaSourceStreamDescriptor {
// Zero-based index.
uint32 index;
// Media type of the stream after conversion.
MediaType media_type;
// Media type of the stream before conversion (as produced by the demux).
MediaType original_media_type;
};
// Describes the media source.
struct MediaSourceStatus {
// Current state of the source.
MediaState state;
// Describes the media.
MediaMetadata? metadata;
};