// 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 chromecast.media.mojom;

struct CodecProfileLevel {
  int32 codec;
  int32 profile;
  int32 level;
};

// Media capabilities that apply to all applications.
interface MediaCaps {
  AddObserver(MediaCapsObserver observer);
};

// Observes changes in media capabilities that apply to all applications.
interface MediaCapsObserver {
  ScreenResolutionChanged(uint32 width, uint32 height);

  // EOTFs and Dolby Vision flags defined in avsettings.h
  ScreenInfoChanged(int32 hdcp_version, int32 supported_eotfs,
                    int32 dolby_vision_flags, int32 screen_width_mm,
                    int32 screen_height_mm, bool current_mode_supports_hdr,
                    bool current_mode_supports_dolby_vision);

  // Add supported codec profiles and levels. May not be called on all
  // platforms, but can be used to infer whether a video config is supported.
  AddSupportedCodecProfileLevel(CodecProfileLevel codec_profile_level);
};
