| // 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. |
| |
| module media.mojom; |
| |
| import "media/mojo/mojom/media_types.mojom"; |
| import "mojo/public/mojom/base/unguessable_token.mojom"; |
| |
| interface AudioDecoder { |
| // Initialize the decoder. This must be called before any other method. |
| // |
| // TODO(sandersd): Rename to Initialize() if/when |
| // media::AudioDecoder::Initialize() is renamed to Configure(). |
| Construct(pending_associated_remote<AudioDecoderClient> client); |
| |
| // Initializes the AudioDecoder with the audio codec configuration and CDM id. |
| // For the unencrypted streams the |cdm_id| is ignored. Executed the callback |
| // with whether the initialization succeeded, and whether the pipeline needs |
| // bitstream conversion. |
| Initialize(AudioDecoderConfig config, |
| mojo_base.mojom.UnguessableToken? cdm_id) |
| => (Status success, |
| bool needs_bitstream_conversion, |
| AudioDecoderType decoder_type); |
| |
| // Establishes data connection. Should be called before Decode(). |
| SetDataSource(handle<data_pipe_consumer> receive_pipe); |
| |
| // Sends the |buffer| to the underlying codec. Should be called only after |
| // Initialize() succeeds. The callback with the status is called after the |
| // decoder has accepted corresponding DecoderBuffer, indicating that the |
| // pipeline can send next buffer to decode. |
| // If |buffer| is an EOS buffer then the decoder must be flushed, i.e. all |
| // pending buffers should be processed, the corresponding decoded buffers |
| // should be returned to the proxy, and only then the service should return |
| // DecoderStatus. |
| Decode(DecoderBuffer buffer) => (Status status); |
| |
| // Resets decoder state. Should be called only if Initialize() succeeds. |
| // All pending Decode() requests will be finished or aborted, then the method |
| // executes the callback. |
| Reset() => (); |
| }; |
| |
| interface AudioDecoderClient { |
| // Sends the decoded audio buffer back to the proxy. |
| OnBufferDecoded(AudioBuffer buffer); |
| |
| // Called when the remote decoder is waiting because of |reason|, e.g. waiting |
| // for decryption key. |
| OnWaiting(WaitingReason reason); |
| }; |