Skip to content

Commit 6151808

Browse files
committed
ARMv7 lock-free
1 parent 7560793 commit 6151808

File tree

2 files changed

+15
-15
lines changed

2 files changed

+15
-15
lines changed

include/audio_daemon/capture_pipeline.hpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class CapturePipeline {
5151
uint64_t frames_captured;
5252
size_t ring_buffer_frames;
5353
int16_t peak_level;
54-
double rms_level;
54+
float rms_level;
5555
};
5656
Stats get_stats() const;
5757

@@ -69,13 +69,13 @@ class CapturePipeline {
6969
std::unique_ptr<SamplePublisher> sample_publisher_;
7070

7171
// Mic boost / gain
72-
std::atomic<double> gain_linear_{1.0};
73-
std::atomic<double> gain_db_{0.0};
72+
std::atomic<float> gain_linear_{1.0f};
73+
std::atomic<float> gain_db_{0.0f};
7474
std::vector<uint8_t> gain_buffer_; // scratch buffer for gain-adjusted data
7575

7676
void apply_gain(const uint8_t* src, uint8_t* dst,
7777
size_t sample_count, uint16_t bits_per_sample,
78-
double gain) const;
78+
float gain) const;
7979

8080
// Stereo-to-mono downmix
8181
bool downmix_mono_ = false;
@@ -95,7 +95,7 @@ class CapturePipeline {
9595

9696
// Level metering (updated from capture thread)
9797
std::atomic<int16_t> peak_level_{0};
98-
std::atomic<double> rms_level_{0.0};
98+
std::atomic<float> rms_level_{0.0f};
9999
std::atomic<uint64_t> total_frames_{0};
100100
};
101101

src/pipeline/capture_pipeline.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ namespace audio_daemon {
1313

1414
CapturePipeline::CapturePipeline(const DaemonConfig& config)
1515
: config_(config), downmix_mono_(config.audio.downmix_mono) {
16-
gain_db_.store(config.audio.gain_db, std::memory_order_relaxed);
17-
gain_linear_.store(std::pow(10.0, config.audio.gain_db / 20.0),
16+
gain_db_.store(static_cast<float>(config.audio.gain_db), std::memory_order_relaxed);
17+
gain_linear_.store(static_cast<float>(std::pow(10.0, config.audio.gain_db / 20.0)),
1818
std::memory_order_relaxed);
1919
if (config.audio.gain_db != 0.0) {
2020
LOG_INFO("Mic boost: ", config.audio.gain_db, " dB (linear ",
@@ -148,8 +148,8 @@ bool CapturePipeline::set_parameter(const std::string& key,
148148
const std::string& value) {
149149
if (key == "gain_db" || key == "gain") {
150150
double db = std::stod(value);
151-
gain_db_.store(db, std::memory_order_relaxed);
152-
gain_linear_.store(std::pow(10.0, db / 20.0),
151+
gain_db_.store(static_cast<float>(db), std::memory_order_relaxed);
152+
gain_linear_.store(static_cast<float>(std::pow(10.0, db / 20.0)),
153153
std::memory_order_relaxed);
154154
LOG_INFO("Mic boost set to ", db, " dB");
155155
return true;
@@ -189,9 +189,9 @@ void CapturePipeline::on_audio_chunk(const AudioChunkMeta& meta,
189189
size_t data_size = cur_samples * bytes_per_sample;
190190

191191
// Apply mic boost if gain != 0 dB
192-
double gain = gain_linear_.load(std::memory_order_relaxed);
192+
float gain = gain_linear_.load(std::memory_order_relaxed);
193193
const uint8_t* out_data = cur_data;
194-
if (gain != 1.0) {
194+
if (gain != 1.0f) {
195195
if (gain_buffer_.size() < data_size) {
196196
gain_buffer_.resize(data_size);
197197
}
@@ -337,14 +337,14 @@ void CapturePipeline::on_audio_chunk(const AudioChunkMeta& meta,
337337
}
338338
}
339339
peak_level_.store(static_cast<int16_t>(std::min(peak, (int32_t)32767)), std::memory_order_relaxed);
340-
rms_level_.store(std::sqrt(sum_sq / static_cast<double>(cur_samples)),
340+
rms_level_.store(static_cast<float>(std::sqrt(sum_sq / static_cast<double>(cur_samples))),
341341
std::memory_order_relaxed);
342342
total_frames_.fetch_add(frame_count, std::memory_order_relaxed);
343343
}
344344

345345
void CapturePipeline::apply_gain(const uint8_t* src, uint8_t* dst,
346346
size_t sample_count, uint16_t bits_per_sample,
347-
double gain) const {
347+
float gain) const {
348348
switch (bits_per_sample) {
349349
case 16: {
350350
const int16_t* sp = reinterpret_cast<const int16_t*>(src);
@@ -580,11 +580,11 @@ std::string CapturePipeline::get_status_json() const {
580580
std::string CapturePipeline::get_levels_json() const {
581581
std::ostringstream oss;
582582
int16_t peak = peak_level_.load(std::memory_order_relaxed);
583-
double rms = rms_level_.load(std::memory_order_relaxed);
583+
float rms = rms_level_.load(std::memory_order_relaxed);
584584
double peak_db = (peak > 0)
585585
? 20.0 * std::log10(static_cast<double>(peak) / 32768.0) : -96.0;
586586
double rms_db = (rms > 0)
587-
? 20.0 * std::log10(rms / 32768.0) : -96.0;
587+
? 20.0 * std::log10(static_cast<double>(rms) / 32768.0) : -96.0;
588588
oss << R"({"peak":)" << peak
589589
<< R"(,"peak_db":)" << peak_db
590590
<< R"(,"rms":)" << rms

0 commit comments

Comments
 (0)