Skip to content

Commit f535233

Browse files
committed
Add AudioDataInit.transfer
1 parent a7ea132 commit f535233

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

index.src.html

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2727,6 +2727,7 @@
27272727
[EnforceRange] required unsigned long numberOfChannels;
27282728
[EnforceRange] required long long timestamp; // microseconds
27292729
required BufferSource data;
2730+
sequence<ArrayBuffer> transfer = [];
27302731
};
27312732
</xmp>
27322733

@@ -2758,7 +2759,12 @@
27582759
AudioData(init)
27592760
</dfn>
27602761
1. If |init| is not a [=valid AudioDataInit=], throw a {{TypeError}}.
2761-
2. Let |frame| be a new {{AudioData}} object, initialized as follows:
2762+
2. If |init|.{{AudioDataInit/transfer}} contains more than one reference
2763+
to the same {{ArrayBuffer}}, then throw a {{DataCloneError}} {{DOMException}}.
2764+
3. For each |transferable| in |init|.{{AudioDataInit/transfer}}:
2765+
1. If {{platform object/[[Detached]]}} internal slot is `true`,
2766+
then throw a {{DataCloneError}} {{DOMException}}.
2767+
4. Let |frame| be a new {{AudioData}} object, initialized as follows:
27622768
1. Assign `false` to {{platform object/[[Detached]]}}.
27632769
2. Assign |init|.{{AudioDataInit/format}} to
27642770
{{AudioData/[[format]]}}.
@@ -2770,11 +2776,20 @@
27702776
{{AudioData/[[number of channels]]}}.
27712777
6. Assign |init|.{{AudioDataInit/timestamp}} to
27722778
{{AudioData/[[timestamp]]}}.
2773-
7. Let |resource| be a [=media resource=] containing a copy of
2774-
|init|.{{AudioDataInit/data}}.
2775-
8. Let |resourceReference| be a reference to |resource|.
2776-
9. Assign |resourceReference| to {{AudioData/[[resource reference]]}}.
2777-
3. Return |frame|.
2779+
7. If |init|.{{AudioDataInit/transfer}} contains an {{ArrayBuffer}}
2780+
referenced by |init|.{{AudioDataInit/data}} the User Agent
2781+
<em class="rfc2119">MAY</em> choose to:
2782+
1. Let |resource| be a new [=media resource=] referencing sample data
2783+
in |data|.
2784+
8. Otherwise:
2785+
1. Let |resource| be a [=media resource=] containing a copy of
2786+
|init|.{{AudioDataInit/data}}.
2787+
9. Let |resourceReference| be a reference to |resource|.
2788+
10. Assign |resourceReference| to {{AudioData/[[resource reference]]}}.
2789+
5. For each |transferable| in |init|.{{AudioDataInit/transfer}}:
2790+
1. Perform [DetachArrayBuffer](https://tc39.es/ecma262/#sec-detacharraybuffer)
2791+
on |transferable|
2792+
6. Return |frame|.
27782793

27792794
### Attributes ###{#audiodata-attributes}
27802795

0 commit comments

Comments
 (0)