| // Copyright 2020 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 mojom; |
| |
| import "media/mojo/mojom/media_types.mojom"; |
| |
| // Renderer-implemented interface that is used to receive metadata for buffers. |
| interface CastStreamingBufferReceiver { |
| // Provide metadata for a buffer to the Cast Streaming Receiver in the |
| // renderer process. The buffer data itself is on the associated |data_pipe|, |
| // from AudioStreamInfo or VideoStreamInfo. |
| // This is called for every new buffer pushed in the associated |data_pipe|. |
| ProvideBuffer(media.mojom.DecoderBuffer buffer); |
| |
| // Signals the audio decoder configuration has changed. After this call, |
| // CastStreamingBufferReceiver.ProvideBuffer() will be called on every new |
| // frame. The buffer data itself is on |data_pipe|. |
| OnNewAudioConfig(media.mojom.AudioDecoderConfig decoder_config, |
| handle<data_pipe_consumer> data_pipe); |
| |
| // Signals the video configuration has changed. After this call, |
| // CastStreamingBufferReceiver.ProvideBuffer() will be called on every new |
| // frame. The buffer data itself is on |data_pipe|. |
| OnNewVideoConfig(media.mojom.VideoDecoderConfig decoder_config, |
| handle<data_pipe_consumer> data_pipe); |
| }; |
| |
| // Information about a Cast Streaming audio stream. |
| struct AudioStreamInfo { |
| // Audio decoder configuration. |
| media.mojom.AudioDecoderConfig decoder_config; |
| |
| // Audio buffer metadata receiver. |
| pending_receiver<CastStreamingBufferReceiver> buffer_receiver; |
| |
| // Mojo data pipe over which audio buffer data is sent. |
| handle<data_pipe_consumer> data_pipe; |
| }; |
| |
| // Information about a Cast Streaming video stream. |
| struct VideoStreamInfo { |
| // Video decoder configuration. |
| media.mojom.VideoDecoderConfig decoder_config; |
| |
| // Video buffer metadata receiver. |
| pending_receiver<CastStreamingBufferReceiver> buffer_receiver; |
| |
| // Mojo data pipe over which video buffer data is sent. |
| handle<data_pipe_consumer> data_pipe; |
| }; |
| |
| // Implemented by the renderer, used to start the Cast Streaming Session. |
| // Closure of the Mojo channel will trigger the end of the Cast Streaming |
| // Session. |
| interface CastStreamingReceiver { |
| // Used for synchronization between the browser and the renderer. The browser |
| // should invoke this after binding the interface, and wait for the reply |
| // callback to know when the renderer is ready to receive and render frames. |
| EnableReceiver() => (); |
| |
| // Called when the streams have been successfully initialized. At least one of |
| // |audio_stream_info| or |video_stream_info| must be set. This will only be |
| // called once per the lifetime of CastStreamingReceiver. After this call, |
| // CastStreamingBufferReceiver.ProvideBuffer() will be called on every new |
| // frame. |
| OnStreamsInitialized( |
| AudioStreamInfo? audio_stream_info, |
| VideoStreamInfo? video_stream_info); |
| }; |