mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-12-01 01:36:09 +03:00
83 lines
3.8 KiB
Plaintext
83 lines
3.8 KiB
Plaintext
|
// Copyright 2014 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/interfaces/media_types.mojom";
|
||
|
|
||
|
// Interface for decrypting (and decoding) encrypted streams.
|
||
|
// See media/base/decryptor.h for details.
|
||
|
// TODO(crbug.com/794326): Deduplicate this interface with audio_decoder.mojom
|
||
|
// and audio_decoder.mojom.
|
||
|
interface Decryptor {
|
||
|
// Status of a decrypt or decrypt-and-decode operation. See decryptor.h for
|
||
|
// descriptions.
|
||
|
[Native]
|
||
|
enum Status;
|
||
|
|
||
|
// Stream type (audio/video). See decryptor.h for descriptions.
|
||
|
[Native]
|
||
|
enum StreamType;
|
||
|
|
||
|
// Pass three data pipes used to transfer compressed DecoderBuffer data for
|
||
|
// DecryptAndDecodeAudio(), and DecryptAndDecodeVideo() and Decrypt(),
|
||
|
// respectively, and one data pipe to receive DecoderBuffer data for decrypt
|
||
|
// result passed back in OnDecryptDone() calls.
|
||
|
// This method must be called before any methods listed are called.
|
||
|
Initialize(handle<data_pipe_consumer> audio_pipe,
|
||
|
handle<data_pipe_consumer> video_pipe,
|
||
|
handle<data_pipe_consumer> decrypt_pipe,
|
||
|
handle<data_pipe_producer> decrypted_pipe);
|
||
|
|
||
|
// Decrypts the |encrypted| buffer and returns the decrypt |status| and
|
||
|
// decrypted |buffer|.
|
||
|
// At most one decrypt call is allowed at any time for a |stream_type|.
|
||
|
Decrypt(StreamType stream_type, DecoderBuffer encrypted)
|
||
|
=> (Status status, DecoderBuffer? buffer);
|
||
|
|
||
|
// Cancels any pending decrypt for |stream_type| with SUCCESS.
|
||
|
CancelDecrypt(StreamType stream_type);
|
||
|
|
||
|
// Initializes a decoder with the given |config|. Returns whether the
|
||
|
// initialization succeeded.
|
||
|
InitializeAudioDecoder(AudioDecoderConfig config) => (bool success);
|
||
|
InitializeVideoDecoder(VideoDecoderConfig config) => (bool success);
|
||
|
|
||
|
// Decrypts and decodes the |encrypted| buffer and returns the |status| and
|
||
|
// the decrypted |audio_buffers| or |video_frame|.
|
||
|
// At end-of-stream, this method should be called repeatedly with
|
||
|
// end-of-stream |encrypted| until no buffer/frame can be produced.
|
||
|
// These methods can only be called after the corresponding decoder has
|
||
|
// been successfully initialized.
|
||
|
// At most one decrypt-and-decode call is allowed at any time for a
|
||
|
// |stream_type|.
|
||
|
// For video, |releaser| must be closed (if it is bound) when the VideoFrame
|
||
|
// is no longer needed so that any shared resources can be reused.
|
||
|
DecryptAndDecodeAudio(DecoderBuffer encrypted)
|
||
|
=> (Status status, array<AudioBuffer> audio_buffers);
|
||
|
DecryptAndDecodeVideo(DecoderBuffer encrypted)
|
||
|
=> (Status status, VideoFrame? video_frame, FrameResourceReleaser? releaser);
|
||
|
|
||
|
// Resets the decoder for |stream_type| to a clean initialized state and
|
||
|
// cancels any pending decrypt-and-decode operations immediately with ERROR.
|
||
|
// This method can only be called after the corresponding decoder has been
|
||
|
// successfully initialized.
|
||
|
ResetDecoder(StreamType stream_type);
|
||
|
|
||
|
// Releases decoder resources, deinitializes the decoder, aborts any pending
|
||
|
// initialization (with false) or decrypt-and-decode (with ERROR) for
|
||
|
// |stream_type| immediately.
|
||
|
// This method can be called any time after Initialize{Audio|Video}Decoder()
|
||
|
// has been called (with the correct stream type).
|
||
|
// After this operation, the decoder is set to an uninitialized state.
|
||
|
// The decoder can be reinitialized after it is deinitialized.
|
||
|
DeinitializeDecoder(StreamType stream_type);
|
||
|
};
|
||
|
|
||
|
// Interface for controlling the the resources associated with a VideoFrame.
|
||
|
// This is returned when calling DecryptAndDecodeVideo(), and the connection
|
||
|
// (if it exists) should be closed when the VideoFrame is no longer needed in
|
||
|
// order to reuse the shared resources associated with the VideoFrame.
|
||
|
interface FrameResourceReleaser {};
|