// sherpa-onnx/csrc/alsa-play.h // // Copyright (c) 2022-2023 Xiaomi Corporation #ifndef SHERPA_ONNX_CSRC_ALSA_PLAY_H_ #define SHERPA_ONNX_CSRC_ALSA_PLAY_H_ #include #include #include #include "alsa/asoundlib.h" #include "sherpa-onnx/csrc/resample.h" namespace sherpa_onnx { class AlsaPlay { public: AlsaPlay(const char *device_name, int32_t sample_rate); ~AlsaPlay(); void Play(const std::vector &samples); // wait for all the samples to be played void Drain(); private: void SetParameters(int32_t sample_rate); private: snd_pcm_t *handle_ = nullptr; std::unique_ptr resampler_; std::vector buf_; }; } // namespace sherpa_onnx #endif // SHERPA_ONNX_CSRC_ALSA_PLAY_H_