AudioData
=========

Limited availability
--------------------

This feature is not Baseline because it does not work in some of the most widely-used browsers.

* Learn more
* See full compatibility
* Report feedback
**Experimental:** **This is an experimental technology**  
Check the Browser compatibility table carefully before using this in production.

The **`AudioData`** interface of the WebCodecs API represents an audio sample.

`AudioData` is a transferable object.

Description
-----------

An audio track consists of a stream of audio samples, each sample representing a captured moment of sound. An `AudioData` object is a representation of such a sample. Working alongside the interfaces of the Insertable Streams API, you can break a stream into individual `AudioData` objects with `MediaStreamTrackProcessor`, or construct an audio track from a stream of frames with `MediaStreamTrackGenerator`.

**Note:** Find out more about audio on the web in Digital audio concepts.

### The media resource

An `AudioData` object contains a reference to an attached **media resource**. This media resource contains the actual audio sample data described by the object. A media resource is maintained by the user agent until it is no longer referenced by an `AudioData` object, for example when `AudioData.close()` is called.

### Planes and audio format

To return the sample format of an `AudioData` use the `AudioData.format` property. The format may be described as **interleaved** or **planar**. In interleaved formats, the audio samples from the different channels are laid out in a single buffer, described as a **plane**. This plane contains a number of elements equal to `AudioData.numberOfFrames` \* `AudioData.numberOfChannels`.

In planar format, the number of planes is equal to `AudioData.numberOfChannels`, and each plane is a buffer containing a number of elements equal to `AudioData.numberOfFrames`.

Constructor
-----------

`AudioData()` 
Experimental

Creates a new `AudioData` object.

Instance properties
-------------------

`AudioData.format` Read only  
Experimental

Returns the sample format of the audio.

`AudioData.sampleRate` Read only  
Experimental

Returns the sample rate of the audio in Hz.

`AudioData.numberOfFrames` Read only  
Experimental

Returns the number of frames.

`AudioData.numberOfChannels` Read only  
Experimental

Returns the number of audio channels.

`AudioData.duration` Read only  
Experimental

Returns the duration of the audio in microseconds.

`AudioData.timestamp` Read only  
Experimental

Returns the timestamp of the audio in microseconds.

Instance methods
----------------

`AudioData.allocationSize()` 
Experimental

Returns the number of bytes required to hold the sample as filtered by options passed into the method.

`AudioData.copyTo()` 
Experimental

Copies the samples from the specified plane of the `AudioData` object to the destination.

`AudioData.clone()` 
Experimental

Creates a new `AudioData` object with reference to the same media resource as the original.

`AudioData.close()` 
Experimental

Clears all states and releases the reference to the media resource.

Specifications
--------------

| Specification |
| --- |
| WebCodecs # audiodata-interface |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.