tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

MediaCapabilities.webidl (2957B)


      1 /* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
      4 * You can obtain one at http://mozilla.org/MPL/2.0/.
      5 *
      6 * The origin of this IDL file is
      7 * https://w3c.github.io/media-capabilities/
      8 *
      9 * Copyright © 2018 the Contributors to the Media Capabilities Specification
     10 */
     11 
     12 dictionary MediaConfiguration {
     13  VideoConfiguration video;
     14  AudioConfiguration audio;
     15 };
     16 
     17 // https://w3c.github.io/media-capabilities/#dictdef-mediaconfiguration
     18 dictionary MediaDecodingConfiguration : MediaConfiguration {
     19  required MediaDecodingType type;
     20  MediaCapabilitiesKeySystemConfiguration keySystemConfiguration;
     21 };
     22 
     23 dictionary MediaEncodingConfiguration : MediaConfiguration {
     24  required MediaEncodingType type;
     25 };
     26 
     27 // https://w3c.github.io/media-capabilities/#mediacapabilitieskeysystemconfiguration
     28 dictionary MediaCapabilitiesKeySystemConfiguration {
     29  required DOMString keySystem;
     30  DOMString initDataType = "";
     31  MediaKeysRequirement distinctiveIdentifier = "optional";
     32  MediaKeysRequirement persistentState = "optional";
     33  sequence<DOMString> sessionTypes;
     34  KeySystemTrackConfiguration audio;
     35  KeySystemTrackConfiguration video;
     36 };
     37 
     38 dictionary KeySystemTrackConfiguration {
     39  DOMString robustness = "";
     40  DOMString? encryptionScheme = null;
     41 };
     42 
     43 enum MediaDecodingType {
     44  "file",
     45  "media-source",
     46 };
     47 
     48 enum MediaEncodingType {
     49  "record",
     50  "transmission"
     51 };
     52 
     53 dictionary VideoConfiguration {
     54  required DOMString contentType;
     55  required unsigned long width;
     56  required unsigned long height;
     57  required unsigned long long bitrate;
     58  required double framerate;
     59  boolean hasAlphaChannel;
     60  HdrMetadataType hdrMetadataType;
     61  ColorGamut colorGamut;
     62  TransferFunction transferFunction;
     63  DOMString scalabilityMode;
     64 };
     65 
     66 enum HdrMetadataType {
     67  "smpteSt2086",
     68  "smpteSt2094-10",
     69  "smpteSt2094-40"
     70 };
     71 
     72 enum ColorGamut {
     73  "srgb",
     74  "p3",
     75  "rec2020"
     76 };
     77 
     78 enum TransferFunction {
     79  "srgb",
     80  "pq",
     81  "hlg"
     82 };
     83 
     84 dictionary AudioConfiguration {
     85  required DOMString contentType;
     86  DOMString channels;
     87  unsigned long long bitrate;
     88  unsigned long samplerate;
     89 };
     90 
     91 dictionary MediaCapabilitiesInfo {
     92  required boolean supported;
     93  required boolean smooth;
     94  required boolean powerEfficient;
     95 };
     96 
     97 // https://w3c.github.io/media-capabilities/#dictdef-mediacapabilitiesinfo
     98 dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
     99  // This doesn't match the spec, see https://github.com/w3c/media-capabilities/issues/219
    100  required MediaKeySystemAccess? keySystemAccess;
    101  // TODO : implement configuration
    102 };
    103 
    104 [Exposed=(Window, Worker)]
    105 interface MediaCapabilities {
    106  [NewObject]
    107  Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);
    108  [NewObject]
    109  Promise<MediaCapabilitiesInfo> encodingInfo(MediaEncodingConfiguration configuration);
    110 };