// Copyright 2014 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. module media.mojom; import "media/mojo/mojom/media_types.mojom"; // DemuxerStream is modeled after media::DemuxerStream using mojo in order to // enable proxying between a media::Pipeline and media::Renderer living in two // different applications. interface DemuxerStream { // See media::DemuxerStream for descriptions. [Native] enum Type; // See media::DemuxerStream for descriptions. [Native] enum Status; // Initializes the DemuxerStream. Read() can only be called after the callback // is received. The returned |pipe| will be used to fill out the data section // of the media::DecoderBuffer returned via DemuxerStream::Read(). Only the // config for |type| should be non-null, which is the initial config of the // stream. Initialize() => (Type type, handle pipe, AudioDecoderConfig? audio_config, VideoDecoderConfig? video_config); // Requests multi DecoderBuffer from this stream for decoding and rendering. // See media::DemuxerStream::ReadCB for a general explanation of the fields. // // Notes on the callback: // - If |status| is OK, the size of |batch_buffers| should be 1<=n<=count // and clients must fill out the data section of the returned // array by reading from the |pipe| provided during // Initialize(). // - If |status| is ABORTED, |audio_config| and |video_config| should be null // and size of |batch_buffers| is zero. // - If |status| is CONFIG_CHANGED, the config for the stream type should be // non-null and size of |batch_buffers| is zero. // // TODO(dalecurtis): Remove this method in favor of serializing everything // into the DataPipe given to Initialize() once DataPipe supports framed data // in a nicer fashion. Read(uint32 count) => (Status status, array batch_buffers, AudioDecoderConfig? audio_config, VideoDecoderConfig? video_config); // Enables converting bitstream to a format that is expected by the decoder. // For example, H.264/AAC bitstream based packets into H.264 Annex B format. EnableBitstreamConverter(); };