webrtc-encoded-transform.idl (5601B)
1 // GENERATED CONTENT - DO NOT EDIT 2 // Content was automatically extracted by Reffy into webref 3 // (https://github.com/w3c/webref) 4 // Source: WebRTC Encoded Transform (https://w3c.github.io/webrtc-encoded-transform/) 5 6 typedef (SFrameSenderTransform or RTCRtpScriptTransform) RTCRtpSenderTransform; 7 typedef (SFrameReceiverTransform or RTCRtpScriptTransform) RTCRtpReceiverTransform; 8 9 // New methods for RTCRtpSender and RTCRtpReceiver 10 partial interface RTCRtpSender { 11 attribute RTCRtpSenderTransform? transform; 12 }; 13 14 partial interface RTCRtpReceiver { 15 attribute RTCRtpReceiverTransform? transform; 16 }; 17 18 // List of supported cipher suites, as defined in [[RFC9605]] section 4.5. 19 enum SFrameCipherSuite { 20 "AES_128_CTR_HMAC_SHA256_80", 21 "AES_128_CTR_HMAC_SHA256_64", 22 "AES_128_CTR_HMAC_SHA256_32", 23 "AES_128_GCM_SHA256_128", 24 "AES_256_GCM_SHA512_128" 25 }; 26 27 dictionary SFrameTransformOptions { 28 required SFrameCipherSuite cipherSuite; 29 }; 30 31 typedef [EnforceRange] unsigned long long SmallCryptoKeyID; 32 typedef (SmallCryptoKeyID or bigint) CryptoKeyID; 33 34 interface mixin SFrameEncrypterManager { 35 Promise<undefined> setEncryptionKey(CryptoKey key, CryptoKeyID keyId); 36 attribute EventHandler onerror; 37 }; 38 39 interface mixin SFrameDecrypterManager { 40 Promise<undefined> addDecryptionKey(CryptoKey key, CryptoKeyID keyId); 41 Promise<undefined> removeDecryptionKey(CryptoKeyID keyId); 42 attribute EventHandler onerror; 43 }; 44 45 [Exposed=Window] 46 interface SFrameSenderTransform { 47 constructor(optional SFrameTransformOptions options = {}); 48 }; 49 SFrameSenderTransform includes SFrameEncrypterManager; 50 51 [Exposed=Window] 52 interface SFrameReceiverTransform : EventTarget { 53 constructor(optional SFrameTransformOptions options = {}); 54 }; 55 SFrameReceiverTransform includes SFrameDecrypterManager; 56 57 [Exposed=(Window,DedicatedWorker)] 58 interface SFrameEncrypterStream : EventTarget { 59 constructor(optional SFrameTransformOptions options = {}); 60 }; 61 SFrameEncrypterStream includes GenericTransformStream; 62 SFrameEncrypterStream includes SFrameEncrypterManager; 63 64 [Exposed=(Window,DedicatedWorker)] 65 interface SFrameDecrypterStream : EventTarget { 66 constructor(optional SFrameTransformOptions options = {}); 67 }; 68 SFrameDecrypterStream includes GenericTransformStream; 69 SFrameDecrypterStream includes SFrameDecrypterManager; 70 71 enum SFrameTransformErrorEventType { 72 "authentication", 73 "keyID", 74 "syntax" 75 }; 76 77 [Exposed=(Window,DedicatedWorker)] 78 interface SFrameTransformErrorEvent : Event { 79 constructor(DOMString type, SFrameTransformErrorEventInit eventInitDict); 80 81 readonly attribute SFrameTransformErrorEventType errorType; 82 readonly attribute CryptoKeyID? keyID; 83 readonly attribute any frame; 84 }; 85 86 dictionary SFrameTransformErrorEventInit : EventInit { 87 required SFrameTransformErrorEventType errorType; 88 required any frame; 89 CryptoKeyID? keyID; 90 }; 91 92 dictionary RTCEncodedFrameMetadata { 93 unsigned long synchronizationSource; 94 octet payloadType; 95 sequence<unsigned long> contributingSources; 96 unsigned long rtpTimestamp; 97 DOMHighResTimeStamp receiveTime; 98 DOMHighResTimeStamp captureTime; 99 DOMHighResTimeStamp senderCaptureTimeOffset; 100 DOMString mimeType; 101 }; 102 103 dictionary RTCEncodedVideoFrameMetadata : RTCEncodedFrameMetadata { 104 unsigned long long frameId; 105 sequence<unsigned long long> dependencies; 106 unsigned short width; 107 unsigned short height; 108 unsigned long spatialIndex; 109 unsigned long temporalIndex; 110 long long timestamp; // microseconds 111 }; 112 113 dictionary RTCEncodedVideoFrameOptions { 114 RTCEncodedVideoFrameMetadata metadata; 115 }; 116 117 // New interfaces to define RTC specific encoded video and audio frames used by RTCRtpScriptTransform. 118 [Exposed=(Window,DedicatedWorker), Serializable] 119 interface RTCEncodedVideoFrame { 120 constructor(RTCEncodedVideoFrame originalFrame, optional RTCEncodedVideoFrameOptions options = {}); 121 readonly attribute EncodedVideoChunkType type; 122 attribute ArrayBuffer data; 123 RTCEncodedVideoFrameMetadata getMetadata(); 124 }; 125 126 dictionary RTCEncodedAudioFrameMetadata : RTCEncodedFrameMetadata { 127 short sequenceNumber; 128 double audioLevel; 129 }; 130 131 dictionary RTCEncodedAudioFrameOptions { 132 RTCEncodedAudioFrameMetadata metadata; 133 }; 134 135 [Exposed=(Window,DedicatedWorker), Serializable] 136 interface RTCEncodedAudioFrame { 137 constructor(RTCEncodedAudioFrame originalFrame, optional RTCEncodedAudioFrameOptions options = {}); 138 attribute ArrayBuffer data; 139 RTCEncodedAudioFrameMetadata getMetadata(); 140 }; 141 142 [Exposed=Window] 143 interface RTCRtpScriptTransform { 144 constructor(Worker worker, optional any options, optional sequence<object> transfer); 145 }; 146 147 [Exposed=DedicatedWorker] 148 interface RTCRtpScriptTransformer : EventTarget { 149 // Attributes and methods related to the transformer source 150 readonly attribute ReadableStream readable; 151 Promise<undefined> generateKeyFrame(optional DOMString rid); 152 Promise<undefined> sendKeyFrameRequest(); 153 // Attributes and methods related to the transformer sink 154 readonly attribute WritableStream writable; 155 attribute EventHandler onkeyframerequest; 156 // Attributes for configuring the Javascript code 157 readonly attribute any options; 158 }; 159 160 [Exposed=DedicatedWorker] 161 interface RTCTransformEvent : Event { 162 readonly attribute RTCRtpScriptTransformer transformer; 163 }; 164 165 partial interface DedicatedWorkerGlobalScope { 166 attribute EventHandler onrtctransform; 167 }; 168 169 [Exposed=DedicatedWorker] 170 interface KeyFrameRequestEvent : Event { 171 constructor(DOMString type, optional DOMString rid); 172 readonly attribute DOMString? rid; 173 };