26using namespace std::literals;
48 JAMI_DEBUG(
"{}: Creating stream with device {} ({}, {}Hz, {} channels)",
61 "filter.apply.echo-cancel.parameters",
62 "use_volume_sharing=0"
63 " use_master_format=1"
65 "digital_gain_control=1"
66 " analog_gain_control=0"
73 throw std::runtime_error(
"Unable to create stream\n");
100 infos.
name.empty() ?
nullptr : infos.
name.c_str(),
154 if (
not audiostream_)
163 audiostream_ =
nullptr;
167 auto ops = ongoing_ops;
182 JAMI_ERR(
"[audiostream] moved() unable to get audio stream device");
198 JAMI_ERROR(
"[audiostream] AudioStream pointer became invalid during pa_source_info_cb_t callback!");
204 JAMI_WARNING(
"[audiostream] capture stream using pulse echo cancel module? {} ({})",
213 ongoing_ops.emplace(
op);
220 ongoing_ops.erase(
op);
235 JAMI_DBG(
"Stream is terminating…");
std::function< void()> OnReady
std::function< void(size_t)> OnData
AudioFormat format() const
AudioStream(pa_context *, pa_threaded_mainloop *, const char *, AudioDeviceType, unsigned, pa_sample_format_t, const PaDeviceInfos &, bool, OnReady onReady, OnData onData)
Constructor.
#define JAMI_ERROR(formatstr,...)
#define JAMI_DEBUG(formatstr,...)
#define JAMI_WARNING(formatstr,...)
#define JAMI_LOG(formatstr,...)
void emitSignal(Args... args)
void destroyStream(pa_stream *s)
void disconnectStream(pa_stream *s)
Convenience structure to hold PulseAudio device propreties such as supported channel number etc.
pa_channel_map channel_map