File audio.h¶
File List > external-docs > libDaisy > src > hid > audio.h
Go to the documentation of this file
Source Code¶
#ifndef DSY_AUDIO_H
#define DSY_AUDIO_H
#include "per/sai.h"
namespace daisy
{
class AudioHandle
{
public:
struct Config
{
size_t blocksize = 48;
SaiHandle::Config::SampleRate samplerate
= SaiHandle::Config::SampleRate::SAI_48KHZ;
float postgain = 1.f;
float output_compensation = 1.f;
};
enum class Result
{
OK,
ERR,
};
typedef const float* const* InputBuffer;
typedef float** OutputBuffer;
typedef void (*AudioCallback)(InputBuffer in,
OutputBuffer out,
size_t size);
typedef const float* InterleavingInputBuffer;
typedef float* InterleavingOutputBuffer;
typedef void (*InterleavingAudioCallback)(InterleavingInputBuffer in,
InterleavingOutputBuffer out,
size_t size);
AudioHandle() : pimpl_(nullptr) {}
~AudioHandle() {}
AudioHandle(const AudioHandle& other) = default;
AudioHandle& operator=(const AudioHandle& other) = default;
Result Init(const Config& config, SaiHandle sai);
Result Init(const Config& config, SaiHandle sai1, SaiHandle sai2);
Result DeInit();
const Config& GetConfig() const;
size_t GetChannels() const;
float GetSampleRate();
Result SetSampleRate(SaiHandle::Config::SampleRate samplerate);
Result SetBlockSize(size_t size);
Result SetPostGain(float val);
Result SetOutputCompensation(float val);
Result Start(AudioCallback callback);
Result Start(InterleavingAudioCallback callback);
Result Stop();
Result ChangeCallback(AudioCallback callback);
Result ChangeCallback(InterleavingAudioCallback callback);
class Impl;
private:
Impl* pimpl_;
};
} // namespace daisy
#endif