// 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 media.interfaces; // An interface to query output protection status and enable output protection // on links that support it. interface OutputProtection { enum ProtectionType { NONE = 0, HDCP = 1, }; // Video output link types. enum LinkType { NONE = 0, UNKNOWN = 1, INTERNAL = 2, VGA = 4, HDMI = 8, DVI = 16, DISPLAYPORT = 32, NETWORK = 64, }; // Queries link status and protection status. // Clients need to query status periodically in order to detect changes. // // - success: Whether the query succeeded. If false, values of |link_mask| and // |protection_mask| should be ignored. // - link_mask: The type of connected output links, which is a bit-mask of the // LinkType values. // - protection_mask: The type of enabled protections, which is a bit-mask of // the ProtectionType values. QueryStatus() => (bool success, uint32 link_mask, uint32 protection_mask); // Sets desired protection methods. // // When the desired protection method(s) have been applied to all applicable // output links, the relevant bit(s) of the |protection_mask| returned by // QueryStatus() will be set. Otherwise, the relevant bit(s) of // |protection_mask| will not be set; there is no separate error code or // callback. // // Protections will be disabled if no longer desired by all instances. // // - desired_protection_mask: The desired protection methods, which // is a bit-mask of the ProtectionType values. // - success: True when the protection request has been made. This may be // before the protection have actually been applied. Call QueryStatus() to // get protection status. False if it failed to make the protection request, // and in this case there is no need to call QueryStatus(). EnableProtection(uint32 desired_protection_mask) => (bool success); };