|
2727 | 2727 | [EnforceRange] required unsigned long numberOfChannels;
|
2728 | 2728 | [EnforceRange] required long long timestamp; // microseconds
|
2729 | 2729 | required BufferSource data;
|
| 2730 | + sequence<ArrayBuffer> transfer = []; |
2730 | 2731 | };
|
2731 | 2732 | </xmp>
|
2732 | 2733 |
|
|
2758 | 2759 | AudioData(init)
|
2759 | 2760 | </dfn>
|
2760 | 2761 | 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: |
2762 | 2768 | 1. Assign `false` to {{platform object/[[Detached]]}}.
|
2763 | 2769 | 2. Assign |init|.{{AudioDataInit/format}} to
|
2764 | 2770 | {{AudioData/[[format]]}}.
|
|
2770 | 2776 | {{AudioData/[[number of channels]]}}.
|
2771 | 2777 | 6. Assign |init|.{{AudioDataInit/timestamp}} to
|
2772 | 2778 | {{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|. |
2778 | 2793 |
|
2779 | 2794 | ### Attributes ###{#audiodata-attributes}
|
2780 | 2795 |
|
|
0 commit comments