// Copyright 2015 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/audio_decoder.mojom";
import "media/mojo/interfaces/content_decryption_module.mojom";
import "media/mojo/interfaces/renderer.mojom";
import "media/mojo/interfaces/video_decoder.mojom";

// A factory for creating media mojo interfaces. Renderers can only access
// ContentDecryptionModules created with the same factory.
interface InterfaceFactory {
  CreateAudioDecoder(AudioDecoder& audio_decoder);
  CreateVideoDecoder(VideoDecoder& video_decoder);

  // Creates a Renderer.
  // The audio stream will be played on |audio_device_id|, which is defined in
  // media/audio/audio_device_description.h. If |audio_device_id| is empty,
  // kDefaultDeviceId will be used.
  CreateRenderer(string audio_device_id, Renderer& renderer);

  // Creates a CDM based on the |key_system| provided. A |key_system| is a
  // generic term for a decryption mechanism and/or content protection provider.
  // It should be a reverse domain name, e.g. "com.example.somesystem". However,
  // this call may be initiated by an untrusted process (e.g. renderer), so the
  // implementation must fully validate |key_system| before creating the CDM.
  CreateCdm(string key_system, ContentDecryptionModule& cdm);
};
