Merge pull request #1252 from AlexandreRouma/master

Merging back modern stuff into the new sinks branch
This commit is contained in:
AlexandreRouma
2023-12-14 20:54:04 +01:00
committed by GitHub
23 changed files with 3358 additions and 136 deletions

View File

@@ -108,7 +108,6 @@ elseif (ANDROID)
)
target_link_libraries(sdrpp_core PUBLIC
/sdr-kit/${ANDROID_ABI}/lib/libcpu_features.a
/sdr-kit/${ANDROID_ABI}/lib/libvolk.so
/sdr-kit/${ANDROID_ABI}/lib/libfftw3f.so
/sdr-kit/${ANDROID_ABI}/lib/libzstd.so

View File

@@ -12,6 +12,7 @@ namespace sdrpp_credits {
"Howard0su",
"John Donkersley",
"Joshua Kimsey",
"Manawyrm",
"Martin Hauke",
"Marvin Sinister",
"Maxime Biette",
@@ -21,7 +22,6 @@ namespace sdrpp_credits {
"Shuyuan Liu",
"Syne Ardwin (WI9SYN)",
"Szymon Zakrent",
"Tobias Mädel",
"Youssef Touil",
"Zimm"
};

View File

@@ -82,7 +82,7 @@ namespace dsp {
inline float fastAmplitude() {
float re_abs = fabsf(re);
float im_abs = fabsf(re);
float im_abs = fabsf(im);
if (re_abs > im_abs) { return re_abs + 0.4f * im_abs; }
return im_abs + 0.4f * re_abs;
}
@@ -125,4 +125,4 @@ namespace dsp {
float l;
float r;
};
}
}

View File

@@ -577,10 +577,22 @@ void MainWindow::draw() {
// Handle scrollwheel
int wheel = ImGui::GetIO().MouseWheel;
if (wheel != 0 && (gui::waterfall.mouseInFFT || gui::waterfall.mouseInWaterfall)) {
// Select factor depending on modifier keys
double interval;
if (ImGui::IsKeyDown(ImGuiKey_LeftShift)) {
interval = vfo->snapInterval * 10.0;
}
else if (ImGui::IsKeyDown(ImGuiKey_LeftAlt)) {
interval = vfo->snapInterval * 0.1;
}
else {
interval = vfo->snapInterval;
}
double nfreq;
if (vfo != NULL) {
nfreq = gui::waterfall.getCenterFrequency() + vfo->generalOffset + (vfo->snapInterval * wheel);
nfreq = roundl(nfreq / vfo->snapInterval) * vfo->snapInterval;
nfreq = gui::waterfall.getCenterFrequency() + vfo->generalOffset + (interval * wheel);
nfreq = roundl(nfreq / interval) * interval;
}
else {
nfreq = gui::waterfall.getCenterFrequency() - (gui::waterfall.getViewBandwidth() * wheel / 20.0);

View File

@@ -2,7 +2,7 @@
#include <utils/flog.h>
bool ModuleComManager::registerInterface(std::string moduleName, std::string name, void (*handler)(int code, void* in, void* out, void* ctx), void* ctx) {
std::lock_guard<std::mutex> lck(mtx);
std::lock_guard<std::recursive_mutex> lck(mtx);
if (interfaces.find(name) != interfaces.end()) {
flog::error("Tried creating module interface with an existing name: {0}", name);
return false;
@@ -16,7 +16,7 @@ bool ModuleComManager::registerInterface(std::string moduleName, std::string nam
}
bool ModuleComManager::unregisterInterface(std::string name) {
std::lock_guard<std::mutex> lck(mtx);
std::lock_guard<std::recursive_mutex> lck(mtx);
if (interfaces.find(name) == interfaces.end()) {
flog::error("Tried to erase module interface with unknown name: {0}", name);
return false;
@@ -26,13 +26,13 @@ bool ModuleComManager::unregisterInterface(std::string name) {
}
bool ModuleComManager::interfaceExists(std::string name) {
std::lock_guard<std::mutex> lck(mtx);
std::lock_guard<std::recursive_mutex> lck(mtx);
if (interfaces.find(name) == interfaces.end()) { return false; }
return true;
}
std::string ModuleComManager::getModuleName(std::string name) {
std::lock_guard<std::mutex> lck(mtx);
std::lock_guard<std::recursive_mutex> lck(mtx);
if (interfaces.find(name) == interfaces.end()) {
flog::error("Tried to call unknown module interface: {0}", name);
return "";
@@ -41,7 +41,7 @@ std::string ModuleComManager::getModuleName(std::string name) {
}
bool ModuleComManager::callInterface(std::string name, int code, void* in, void* out) {
std::lock_guard<std::mutex> lck(mtx);
std::lock_guard<std::recursive_mutex> lck(mtx);
if (interfaces.find(name) == interfaces.end()) {
flog::error("Tried to call unknown module interface: {0}", name);
return false;

View File

@@ -18,6 +18,6 @@ public:
bool callInterface(std::string name, int code, void* in, void* out);
private:
std::mutex mtx;
std::recursive_mutex mtx;
std::map<std::string, ModuleComInterface> interfaces;
};

View File

@@ -91,9 +91,9 @@ namespace riff {
file.write((char*)&desc.hdr.size, sizeof(desc.hdr.size));
file.seekp(pos);
// If parent chunk, increment its size
// If parent chunk, increment its size by the size of the sub-chunk plus the size of its header)
if (!chunks.empty()) {
chunks.top().hdr.size += desc.hdr.size;
chunks.top().hdr.size += desc.hdr.size + sizeof(ChunkHeader);
}
}