|
- #pragma once
-
- #include "private/std.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- // Sample code for reading a stereo buffer:
- //
- // bool isLeftConstant = (buffer->constant_mask & (1 << 0)) != 0;
- // bool isRightConstant = (buffer->constant_mask & (1 << 1)) != 0;
- //
- // for (int i = 0; i < N; ++i) {
- // float l = data32[0][isLeftConstant ? 0 : i];
- // float r = data32[1][isRightConstant ? 0 : i];
- // }
- //
- // Note: checking the constant mask is optional, and this implies that
- // the buffer must be filled with the constant value.
- // Rationale: if a buffer reader doesn't check the constant mask, then it may
- // process garbage samples and in result, garbage samples may be transmitted
- // to the audio interface with all the bad consequences it can have.
- //
- // The constant mask is a hint.
- typedef struct clap_audio_buffer {
- // Either data32 or data64 pointer will be set.
- float **data32;
- double **data64;
- uint32_t channel_count;
- uint32_t latency; // latency from/to the audio interface
- uint64_t constant_mask;
- } clap_audio_buffer_t;
-
- #ifdef __cplusplus
- }
- #endif
|