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 };