Vivoe Lite 0.5.0
Lightweight GVA like HMI for military displays.
Loading...
Searching...
No Matches
audio.h
Go to the documentation of this file.
1//
2// Copyright (c) 2023, DefenceX PTY LTD
3//
4// This file is part of the VivoeX project developed by DefenceX.
5//
6// Licensed under the Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)
7// License. See the LICENSE file in the project root for full license details.
8//
12
13#ifndef HMICORE_HARDWARE_AUDIO_H_
14#define HMICORE_HARDWARE_AUDIO_H_
15
16#include <portaudio.h>
17#include <sndfile.h>
18
19#include <string>
20
22
23namespace gva {
24
30 public:
32 struct CallbackData {
34 SNDFILE *file;
36 SF_INFO info;
37 };
38
44
50
51 AudioFunctions &operator=(const AudioFunctions &) = delete;
52
57 AudioFunctions(const AudioFunctions &) = delete;
58
70 static int Callback(const void *input, void *output, unsigned long frameCount, // NOLINT
71 const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData);
72
79 int Play(AudioSampleBase *sample);
80
85 void PlayThreat();
86
91 void PlayCaution();
92
97 void PlayWarning();
98
100 const uint32_t kFramesPerBuffer = 512;
101
102 private:
103#if _WIN32
105 const std::string kThreatFilename = "../sounds/threat.wav";
107 const std::string kCautionFilename = "../sounds/caution.wav";
109 const std::string kWarningFilename = "../sounds/warning.wav";
110#else
112 const std::string kThreatFilename = "/opt/gva/hmi/sounds/threat.wav";
114 const std::string kCautionFilename = "/opt/gva/hmi/sounds/caution.wav";
116 const std::string kWarningFilename = "/opt/gva/hmi/sounds/warning.wav";
117#endif
119 AudioSample threat_ = AudioSample(kThreatFilename);
121 AudioSample caution_ = AudioSample(kCautionFilename);
123 AudioSample warning_ = AudioSample(kWarningFilename);
125 PaStream *stream_ = nullptr;
126
138 static void *AlsaLog(const char *file, int line, const char *function, int err, const char *fmt, ...);
139};
140
141} // namespace gva
142
143#endif // HMICORE_HARDWARE_AUDIO_H_
The Audio Functions class.
Definition audio.h:29
AudioFunctions()
Construct a new Audio Functions object.
Definition audio.cc:31
void PlayThreat()
Play threat tone.
Definition audio.cc:79
const uint32_t kFramesPerBuffer
Number of frames per buffer.
Definition audio.h:100
SNDFILE * file
The audio sample file.
Definition audio.h:34
SF_INFO info
The audio sample info.
Definition audio.h:36
static int Callback(const void *input, void *output, unsigned long frameCount, const PaStreamCallbackTimeInfo *timeInfo, PaStreamCallbackFlags statusFlags, void *userData)
Portaudio callback for simple audio.
Definition audio.cc:59
~AudioFunctions()
Destroy the Audio Functions object.
Definition audio.cc:51
void PlayCaution()
Play Caution tone.
Definition audio.cc:80
void PlayWarning()
Play Warning.
Definition audio.cc:81
AudioFunctions(const AudioFunctions &)=delete
Construct a new Audio Functions object.
int Play(AudioSampleBase *sample)
Play a given file.
Definition audio.cc:83
The callback data.
Definition audio.h:32
The Audio Sample Base class.
Definition sample.h:27
The Audio Sample class.
Definition sample.h:70