blob: c8e3a593d08f7d71a3f3e55824f96d8f428bfe12 [file] [log] [blame]
Victor Porof6e096922022-06-10 13:01:05 +00001// 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// New dictionary
7dictionary RTCInsertableStreams {
8 ReadableStream readable;
9 WritableStream writable;
10};
11
12typedef (SFrameTransform or RTCRtpScriptTransform) RTCRtpTransform;
13
14// New methods for RTCRtpSender and RTCRtpReceiver
15partial interface RTCRtpSender {
16 attribute RTCRtpTransform? transform;
17};
18
19partial interface RTCRtpReceiver {
20 attribute RTCRtpTransform? transform;
21};
22
23enum SFrameTransformRole {
24 "encrypt",
25 "decrypt"
26};
27
28dictionary SFrameTransformOptions {
29 SFrameTransformRole role = "encrypt";
30};
31
32typedef [EnforceRange] unsigned long long SmallCryptoKeyID;
33typedef (SmallCryptoKeyID or bigint) CryptoKeyID;
34
35[Exposed=(Window,DedicatedWorker)]
36interface SFrameTransform {
37 constructor(optional SFrameTransformOptions options = {});
38 Promise<undefined> setEncryptionKey(CryptoKey key, optional CryptoKeyID keyID);
39 attribute EventHandler onerror;
40};
41SFrameTransform includes GenericTransformStream;
42
43enum SFrameTransformErrorEventType {
44 "authentication",
45 "keyID",
46 "syntax"
47};
48
49[Exposed=(Window,DedicatedWorker)]
50interface SFrameTransformErrorEvent : Event {
51 constructor(DOMString type, SFrameTransformErrorEventInit eventInitDict);
52
53 readonly attribute SFrameTransformErrorEventType errorType;
54 readonly attribute CryptoKeyID? keyID;
55 readonly attribute any frame;
56};
57
58dictionary SFrameTransformErrorEventInit : EventInit {
59 required SFrameTransformErrorEventType errorType;
60 required any frame;
61 CryptoKeyID? keyID;
62};
63
64// New enum for video frame types. Will eventually re-use the equivalent defined
65// by WebCodecs.
66enum RTCEncodedVideoFrameType {
67 "empty",
68 "key",
69 "delta",
70};
71
72dictionary RTCEncodedVideoFrameMetadata {
73 long long frameId;
74 sequence<long long> dependencies;
75 unsigned short width;
76 unsigned short height;
77 long spatialIndex;
78 long temporalIndex;
79 long synchronizationSource;
80 octet payloadType;
81 sequence<long> contributingSources;
82};
83
84// New interfaces to define encoded video and audio frames. Will eventually
85// re-use or extend the equivalent defined in WebCodecs.
86[Exposed=(Window,DedicatedWorker)]
87interface RTCEncodedVideoFrame {
88 readonly attribute RTCEncodedVideoFrameType type;
89 readonly attribute unsigned long long timestamp;
90 attribute ArrayBuffer data;
91 RTCEncodedVideoFrameMetadata getMetadata();
92};
93
94dictionary RTCEncodedAudioFrameMetadata {
95 long synchronizationSource;
96 octet payloadType;
97 sequence<long> contributingSources;
98};
99
100[Exposed=(Window,DedicatedWorker)]
101interface RTCEncodedAudioFrame {
102 readonly attribute unsigned long long timestamp;
103 attribute ArrayBuffer data;
104 RTCEncodedAudioFrameMetadata getMetadata();
105};
106
107// New interfaces to expose JavaScript-based transforms.
108
109[Exposed=DedicatedWorker]
110interface RTCTransformEvent : Event {
111 readonly attribute RTCRtpScriptTransformer transformer;
112};
113
114partial interface DedicatedWorkerGlobalScope {
115 attribute EventHandler onrtctransform;
116};
117
118[Exposed=DedicatedWorker]
119interface RTCRtpScriptTransformer {
120 readonly attribute ReadableStream readable;
121 readonly attribute WritableStream writable;
122 readonly attribute any options;
123 Promise<unsigned long long> generateKeyFrame(optional DOMString rid);
124 Promise<undefined> sendKeyFrameRequest();
125};
126
127[Exposed=Window]
128interface RTCRtpScriptTransform {
129 constructor(Worker worker, optional any options, optional sequence<object> transfer);
130};
131
132partial interface RTCRtpSender {
133 Promise<undefined> generateKeyFrame(optional sequence <DOMString> rids);
134};