# AudioStreamBinding

`import { AudioStreamBinding } from "destack:audio/binding";`

Stream binding family.

```ds title="AudioStreamBinding"
export interface AudioStreamBinding {
    supportAudioStream(request: &'a readonly AudioStreamRequest): Result<AudioStreamSupport, HostError>;
    openAudioStream(request: &'a readonly AudioStreamRequest): Result<AudioStreamHandle, HostError>;
    closeAudioStream(stream: AudioStreamHandle): Result<void, HostError>;
    startAudioStream(stream: AudioStreamHandle): Result<void, HostError>;
    pauseAudioStream(stream: AudioStreamHandle): Result<void, HostError>;
    resumeAudioStream(stream: AudioStreamHandle): Result<void, HostError>;
    stopAudioStream(stream: AudioStreamHandle): Result<void, HostError>;
    drainAudioStream(stream: AudioStreamHandle, timeoutNs?: uint64 | undefined): Result<void, HostError>;
    describeAudioStream(stream: AudioStreamHandle): Result<AudioStream, HostError>;
    audioStreamStatus(stream: AudioStreamHandle): Result<AudioStreamStatus, HostError>;
    readAudioStream(stream: AudioStreamHandle, buffer: &'a [uint8], timeoutNs?: uint64 | undefined): Result<uint64, HostError>;
    writeAudioStream(stream: AudioStreamHandle, bytes: &'a readonly [uint8], timeoutNs?: uint64 | undefined): Result<uint64, HostError>;
    setAudioStreamGain(stream: AudioStreamHandle, gain: float64): Result<void, HostError>;
    setAudioStreamMute(stream: AudioStreamHandle, isMuted: boolean): Result<void, HostError>;
}
```

[language/library/src/audio/binding/stream.ds:137:273](https://github.com/destack-sh/destack/blob/main/language/library/src/audio/binding/stream.ds#L137-L273)

## Members

### `supportAudioStream(request: &'a readonly AudioStreamRequest): Result<AudioStreamSupport, HostError>`

Check whether one audio stream can be opened.

### `openAudioStream(request: &'a readonly AudioStreamRequest): Result<AudioStreamHandle, HostError>`

Open one audio stream.

### `closeAudioStream(stream: AudioStreamHandle): Result<void, HostError>`

Close one audio stream.

### `startAudioStream(stream: AudioStreamHandle): Result<void, HostError>`

Start one audio stream.

### `pauseAudioStream(stream: AudioStreamHandle): Result<void, HostError>`

Pause one audio stream.

### `resumeAudioStream(stream: AudioStreamHandle): Result<void, HostError>`

Resume one audio stream.

### `stopAudioStream(stream: AudioStreamHandle): Result<void, HostError>`

Stop one audio stream.

### `drainAudioStream(stream: AudioStreamHandle, timeoutNs?: uint64 | undefined): Result<void, HostError>`

Drain queued playback data.

### `describeAudioStream(stream: AudioStreamHandle): Result<AudioStream, HostError>`

Read one opened audio stream state.

### `audioStreamStatus(stream: AudioStreamHandle): Result<AudioStreamStatus, HostError>`

Read one stream status sample.

### `readAudioStream(stream: AudioStreamHandle, buffer: &'a [uint8], timeoutNs?: uint64 | undefined): Result<uint64, HostError>`

Read buffered capture frames into one buffer.

### `writeAudioStream(stream: AudioStreamHandle, bytes: &'a readonly [uint8], timeoutNs?: uint64 | undefined): Result<uint64, HostError>`

Write buffered playback frames from one buffer.

### `setAudioStreamGain(stream: AudioStreamHandle, gain: float64): Result<void, HostError>`

Set one stream gain multiplier.

### `setAudioStreamMute(stream: AudioStreamHandle, isMuted: boolean): Result<void, HostError>`

Set one stream mute state.
