blob: 6ad372abb6c71a87d481cfc9321073c51c960dd8 [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_types.mojom";
import "mojo/services/media/control/interfaces/media_player.mojom";
import "mojo/services/media/control/interfaces/media_sink.mojom";
import "mojo/services/media/control/interfaces/media_source.mojom";
import "mojo/services/media/core/interfaces/media_demux.mojom";
import "mojo/services/media/core/interfaces/media_type_converter.mojom";
import "mojo/services/media/core/interfaces/seeking_reader.mojom";
import "mojo/services/media/core/interfaces/timeline_controller.mojom";
// Exposed by the factory service to create media-related agents.
[ServiceName="mojo::media::MediaFactory"]
interface MediaFactory {
// Creates a player.
// TODO(dalesat): Add means of specifying destinations.
CreatePlayer(SeekingReader reader, MediaPlayer& player);
// Creates a source. If allowed_media_types is supplied, conversions will be
// added to each stream as needed to make the media type of the stream match
// one of the allowed types. If a stream cannot be converted to one of the
// allowed types, its media type will have the scheme NONE, and the stream
// will not be usable.
CreateSource(SeekingReader reader,
array<MediaTypeSet>? allowed_media_types,
MediaSource& source);
// Creates a sink. Conversions are added to the pipeline as appropriate to
// convert the indicated media type to a type compatible with the
// destination.
CreateSink(string destination_url, MediaType media_type, MediaSink& sink);
// Creates a demux.
CreateDemux(SeekingReader reader, MediaDemux& demux);
// Creates a decoder.
CreateDecoder(MediaType input_media_type, MediaTypeConverter& decoder);
// Creates a network reader.
CreateNetworkReader(string url, SeekingReader& reader);
// Creates a timeline controller reader.
CreateTimelineController(MediaTimelineController& timeline_controller);
};