// Copyright 2017 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/content_decryption_module.mojom";
import "media/mojo/mojom/media_types.mojom";

// TODO(xhwang): Use "set" instead of "array" if supported by mojom.
struct CdmCapability {
  // List of audio codecs supported by the CDM (e.g. opus). This does not
  // include codec profiles, as in general Chromium doesn't handle audio
  // codec profiles separately. The list of supported codecs should be unique.
  array<AudioCodec> audio_codecs;

  // Map of video codecs and associated profiles supported by the CDM
  // (e.g. vp8). If no profiles for a particular codec are specified, then
  // it is assumed that all profiles are supported by the CDM. The list of
  // profiles for each codec should be unique.
  map<VideoCodec, array<VideoCodecProfile>> video_codecs;

  array<EncryptionScheme> encryption_schemes;
  array<CdmSessionType> session_types;
};

struct KeySystemCapability {
  CdmCapability? sw_secure_capability;
  CdmCapability? hw_secure_capability;
};

// Used to query the browser to see if a specific key system is supported.
interface KeySystemSupport {
  // Query to determine if the browser supports the |key_system|. If supported,
  // |key_system_capability| is non-null indicating supported capability.
  // KeySystemSupport implementation is in the browser process, as it maintains
  // the list of registered CDMs, and hardware secure support check also needs
  // to run in the browser process because the render process is sandboxed.
  // KeySystemSupport clients run in the renderer process.
  // TODO(crbug.com/853264): Make this an async call.
  [Sync]
  IsKeySystemSupported(string key_system)
    => (bool is_supported, KeySystemCapability? key_system_capability);
};
