mirror of
https://github.com/AlexandreRouma/SDRPlusPlus.git
synced 2024-12-29 12:27:13 +01:00
Merge pull request #1252 from AlexandreRouma/master
Merging back modern stuff into the new sinks branch
This commit is contained in:
commit
348bf75281
57
.github/workflows/build_all.yml
vendored
57
.github/workflows/build_all.yml
vendored
@ -96,11 +96,8 @@ jobs:
|
|||||||
- name: Update brew repositories
|
- name: Update brew repositories
|
||||||
run: brew update
|
run: brew update
|
||||||
|
|
||||||
- name: Fix stuff
|
|
||||||
run: rm -f /usr/local/bin/2to3* /usr/local/bin/idle3* /usr/local/bin/pydoc3* /usr/local/bin/python3* /usr/local/bin/python3-config* && brew reinstall gettext
|
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: brew install pkg-config libusb fftw glfw airspy airspyhf portaudio hackrf rtl-sdr libbladerf codec2 zstd autoconf automake libtool && pip3 install mako
|
run: brew install pkg-config libusb fftw glfw airspy airspyhf portaudio hackrf libbladerf codec2 zstd autoconf automake libtool && pip3 install mako
|
||||||
|
|
||||||
- name: Install volk
|
- name: Install volk
|
||||||
run: git clone --recursive https://github.com/gnuradio/volk && cd volk && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../
|
run: git clone --recursive https://github.com/gnuradio/volk && cd volk && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../
|
||||||
@ -109,7 +106,7 @@ jobs:
|
|||||||
run: wget https://www.sdrplay.com/software/SDRplay_RSP_API-MacOSX-3.07.3.pkg && sudo installer -pkg SDRplay_RSP_API-MacOSX-3.07.3.pkg -target /
|
run: wget https://www.sdrplay.com/software/SDRplay_RSP_API-MacOSX-3.07.3.pkg && sudo installer -pkg SDRplay_RSP_API-MacOSX-3.07.3.pkg -target /
|
||||||
|
|
||||||
- name: Install libiio
|
- name: Install libiio
|
||||||
run: git clone https://github.com/analogdevicesinc/libiio && cd libiio && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../
|
run: wget https://github.com/analogdevicesinc/libiio/archive/refs/tags/v0.25.zip && 7z x v0.25.zip && cd libiio-0.25 && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../
|
||||||
|
|
||||||
- name: Install libad9361
|
- name: Install libad9361
|
||||||
run: git clone https://github.com/analogdevicesinc/libad9361-iio && cd libad9361-iio && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../
|
run: git clone https://github.com/analogdevicesinc/libad9361-iio && cd libad9361-iio && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 && sudo make install && cd ../../
|
||||||
@ -120,6 +117,9 @@ jobs:
|
|||||||
- name: Install libperseus
|
- name: Install libperseus
|
||||||
run: git clone https://github.com/Microtelecom/libperseus-sdr && cd libperseus-sdr && autoreconf -i && ./configure --prefix=/usr/local && make && make install && cd ..
|
run: git clone https://github.com/Microtelecom/libperseus-sdr && cd libperseus-sdr && autoreconf -i && ./configure --prefix=/usr/local && make && make install && cd ..
|
||||||
|
|
||||||
|
- name: Install more recent librtlsdr
|
||||||
|
run: git clone https://github.com/osmocom/rtl-sdr && cd rtl-sdr && mkdir build && cd build && cmake -DCMAKE_BUILD_TYPE=Release .. && make -j3 LIBRARY_PATH=$(pkg-config --libs-only-L libusb-1.0 | sed 's/\-L//') && sudo make install && cd ../../
|
||||||
|
|
||||||
- name: Prepare CMake
|
- name: Prepare CMake
|
||||||
working-directory: ${{runner.workspace}}/build
|
working-directory: ${{runner.workspace}}/build
|
||||||
run: cmake $GITHUB_WORKSPACE -DOPT_BUILD_PLUTOSDR_SOURCE=ON -DOPT_BUILD_SOAPY_SOURCE=OFF -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_AUDIO_SINK=OFF -DOPT_BUILD_PORTAUDIO_SINK=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON -DOPT_BUILD_AUDIO_SOURCE=OFF -DUSE_BUNDLE_DEFAULTS=ON -DCMAKE_BUILD_TYPE=Release
|
run: cmake $GITHUB_WORKSPACE -DOPT_BUILD_PLUTOSDR_SOURCE=ON -DOPT_BUILD_SOAPY_SOURCE=OFF -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_AUDIO_SINK=OFF -DOPT_BUILD_PORTAUDIO_SINK=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON -DOPT_BUILD_AUDIO_SOURCE=OFF -DUSE_BUNDLE_DEFAULTS=ON -DCMAKE_BUILD_TYPE=Release
|
||||||
@ -182,6 +182,28 @@ jobs:
|
|||||||
name: sdrpp_debian_bullseye_amd64
|
name: sdrpp_debian_bullseye_amd64
|
||||||
path: ${{runner.workspace}}/sdrpp_debian_amd64.deb
|
path: ${{runner.workspace}}/sdrpp_debian_amd64.deb
|
||||||
|
|
||||||
|
build_debian_bookworm:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Create Docker Image
|
||||||
|
run: cd $GITHUB_WORKSPACE/docker_builds/debian_bookworm && docker build . --tag sdrpp_build
|
||||||
|
|
||||||
|
- name: Run Container
|
||||||
|
run: docker run --name build -v $GITHUB_WORKSPACE:/root/SDRPlusPlus --env BUILD_NO="-$GITHUB_RUN_NUMBER" sdrpp_build /root/do_build.sh
|
||||||
|
|
||||||
|
- name: Recover Deb Archive
|
||||||
|
working-directory: ${{runner.workspace}}
|
||||||
|
run: docker cp build:/root/SDRPlusPlus/sdrpp_debian_amd64.deb ./
|
||||||
|
|
||||||
|
- name: Save Deb Archive
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: sdrpp_debian_bookworm_amd64
|
||||||
|
path: ${{runner.workspace}}/sdrpp_debian_amd64.deb
|
||||||
|
|
||||||
build_debian_sid:
|
build_debian_sid:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
@ -204,28 +226,6 @@ jobs:
|
|||||||
name: sdrpp_debian_sid_amd64
|
name: sdrpp_debian_sid_amd64
|
||||||
path: ${{runner.workspace}}/sdrpp_debian_amd64.deb
|
path: ${{runner.workspace}}/sdrpp_debian_amd64.deb
|
||||||
|
|
||||||
# build_ubuntu_bionic:
|
|
||||||
# runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
# steps:
|
|
||||||
# - uses: actions/checkout@v3
|
|
||||||
|
|
||||||
# - name: Create Docker Image
|
|
||||||
# run: cd $GITHUB_WORKSPACE/docker_builds/ubuntu_bionic && docker build . --tag sdrpp_build
|
|
||||||
|
|
||||||
# - name: Run Container
|
|
||||||
# run: docker run --name build -v $GITHUB_WORKSPACE:/root/SDRPlusPlus --env BUILD_NO="-$GITHUB_RUN_NUMBER" sdrpp_build /root/do_build.sh
|
|
||||||
|
|
||||||
# - name: Recover Deb Archive
|
|
||||||
# working-directory: ${{runner.workspace}}
|
|
||||||
# run: docker cp build:/root/SDRPlusPlus/sdrpp_debian_amd64.deb ./
|
|
||||||
|
|
||||||
# - name: Save Deb Archive
|
|
||||||
# uses: actions/upload-artifact@v3
|
|
||||||
# with:
|
|
||||||
# name: sdrpp_ubuntu_bionic_amd64
|
|
||||||
# path: ${{runner.workspace}}/sdrpp_debian_amd64.deb
|
|
||||||
|
|
||||||
build_ubuntu_focal:
|
build_ubuntu_focal:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
@ -325,7 +325,7 @@ jobs:
|
|||||||
path: ${{runner.workspace}}/sdrpp.apk
|
path: ${{runner.workspace}}/sdrpp.apk
|
||||||
|
|
||||||
create_full_archive:
|
create_full_archive:
|
||||||
needs: ['build_windows', 'build_macos', 'build_debian_buster', 'build_debian_bullseye', 'build_debian_sid', 'build_ubuntu_focal', 'build_ubuntu_jammy', 'build_raspios_bullseye_armhf', 'build_android']
|
needs: ['build_windows', 'build_macos', 'build_debian_buster', 'build_debian_bullseye', 'build_debian_bookworm', 'build_debian_sid', 'build_ubuntu_focal', 'build_ubuntu_jammy', 'build_raspios_bullseye_armhf', 'build_android']
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@ -339,6 +339,7 @@ jobs:
|
|||||||
mv sdrpp_macos_intel/sdrpp_macos_intel.zip sdrpp_all/ &&
|
mv sdrpp_macos_intel/sdrpp_macos_intel.zip sdrpp_all/ &&
|
||||||
mv sdrpp_debian_buster_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_buster_amd64.deb &&
|
mv sdrpp_debian_buster_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_buster_amd64.deb &&
|
||||||
mv sdrpp_debian_bullseye_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_bullseye_amd64.deb &&
|
mv sdrpp_debian_bullseye_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_bullseye_amd64.deb &&
|
||||||
|
mv sdrpp_debian_bookworm_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_bookworm_amd64.deb &&
|
||||||
mv sdrpp_debian_sid_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_sid_amd64.deb &&
|
mv sdrpp_debian_sid_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_debian_sid_amd64.deb &&
|
||||||
mv sdrpp_ubuntu_focal_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_ubuntu_focal_amd64.deb &&
|
mv sdrpp_ubuntu_focal_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_ubuntu_focal_amd64.deb &&
|
||||||
mv sdrpp_ubuntu_jammy_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_ubuntu_jammy_amd64.deb &&
|
mv sdrpp_ubuntu_jammy_amd64/sdrpp_debian_amd64.deb sdrpp_all/sdrpp_ubuntu_jammy_amd64.deb &&
|
||||||
|
@ -108,7 +108,6 @@ elseif (ANDROID)
|
|||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(sdrpp_core PUBLIC
|
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/libvolk.so
|
||||||
/sdr-kit/${ANDROID_ABI}/lib/libfftw3f.so
|
/sdr-kit/${ANDROID_ABI}/lib/libfftw3f.so
|
||||||
/sdr-kit/${ANDROID_ABI}/lib/libzstd.so
|
/sdr-kit/${ANDROID_ABI}/lib/libzstd.so
|
||||||
|
@ -12,6 +12,7 @@ namespace sdrpp_credits {
|
|||||||
"Howard0su",
|
"Howard0su",
|
||||||
"John Donkersley",
|
"John Donkersley",
|
||||||
"Joshua Kimsey",
|
"Joshua Kimsey",
|
||||||
|
"Manawyrm",
|
||||||
"Martin Hauke",
|
"Martin Hauke",
|
||||||
"Marvin Sinister",
|
"Marvin Sinister",
|
||||||
"Maxime Biette",
|
"Maxime Biette",
|
||||||
@ -21,7 +22,6 @@ namespace sdrpp_credits {
|
|||||||
"Shuyuan Liu",
|
"Shuyuan Liu",
|
||||||
"Syne Ardwin (WI9SYN)",
|
"Syne Ardwin (WI9SYN)",
|
||||||
"Szymon Zakrent",
|
"Szymon Zakrent",
|
||||||
"Tobias Mädel",
|
|
||||||
"Youssef Touil",
|
"Youssef Touil",
|
||||||
"Zimm"
|
"Zimm"
|
||||||
};
|
};
|
||||||
|
@ -82,7 +82,7 @@ namespace dsp {
|
|||||||
|
|
||||||
inline float fastAmplitude() {
|
inline float fastAmplitude() {
|
||||||
float re_abs = fabsf(re);
|
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; }
|
if (re_abs > im_abs) { return re_abs + 0.4f * im_abs; }
|
||||||
return im_abs + 0.4f * re_abs;
|
return im_abs + 0.4f * re_abs;
|
||||||
}
|
}
|
||||||
|
@ -577,10 +577,22 @@ void MainWindow::draw() {
|
|||||||
// Handle scrollwheel
|
// Handle scrollwheel
|
||||||
int wheel = ImGui::GetIO().MouseWheel;
|
int wheel = ImGui::GetIO().MouseWheel;
|
||||||
if (wheel != 0 && (gui::waterfall.mouseInFFT || gui::waterfall.mouseInWaterfall)) {
|
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;
|
double nfreq;
|
||||||
if (vfo != NULL) {
|
if (vfo != NULL) {
|
||||||
nfreq = gui::waterfall.getCenterFrequency() + vfo->generalOffset + (vfo->snapInterval * wheel);
|
nfreq = gui::waterfall.getCenterFrequency() + vfo->generalOffset + (interval * wheel);
|
||||||
nfreq = roundl(nfreq / vfo->snapInterval) * vfo->snapInterval;
|
nfreq = roundl(nfreq / interval) * interval;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nfreq = gui::waterfall.getCenterFrequency() - (gui::waterfall.getViewBandwidth() * wheel / 20.0);
|
nfreq = gui::waterfall.getCenterFrequency() - (gui::waterfall.getViewBandwidth() * wheel / 20.0);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
#include <utils/flog.h>
|
#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) {
|
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()) {
|
if (interfaces.find(name) != interfaces.end()) {
|
||||||
flog::error("Tried creating module interface with an existing name: {0}", name);
|
flog::error("Tried creating module interface with an existing name: {0}", name);
|
||||||
return false;
|
return false;
|
||||||
@ -16,7 +16,7 @@ bool ModuleComManager::registerInterface(std::string moduleName, std::string nam
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ModuleComManager::unregisterInterface(std::string name) {
|
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()) {
|
if (interfaces.find(name) == interfaces.end()) {
|
||||||
flog::error("Tried to erase module interface with unknown name: {0}", name);
|
flog::error("Tried to erase module interface with unknown name: {0}", name);
|
||||||
return false;
|
return false;
|
||||||
@ -26,13 +26,13 @@ bool ModuleComManager::unregisterInterface(std::string name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ModuleComManager::interfaceExists(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; }
|
if (interfaces.find(name) == interfaces.end()) { return false; }
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ModuleComManager::getModuleName(std::string name) {
|
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()) {
|
if (interfaces.find(name) == interfaces.end()) {
|
||||||
flog::error("Tried to call unknown module interface: {0}", name);
|
flog::error("Tried to call unknown module interface: {0}", name);
|
||||||
return "";
|
return "";
|
||||||
@ -41,7 +41,7 @@ std::string ModuleComManager::getModuleName(std::string name) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool ModuleComManager::callInterface(std::string name, int code, void* in, void* out) {
|
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()) {
|
if (interfaces.find(name) == interfaces.end()) {
|
||||||
flog::error("Tried to call unknown module interface: {0}", name);
|
flog::error("Tried to call unknown module interface: {0}", name);
|
||||||
return false;
|
return false;
|
||||||
|
@ -18,6 +18,6 @@ public:
|
|||||||
bool callInterface(std::string name, int code, void* in, void* out);
|
bool callInterface(std::string name, int code, void* in, void* out);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::mutex mtx;
|
std::recursive_mutex mtx;
|
||||||
std::map<std::string, ModuleComInterface> interfaces;
|
std::map<std::string, ModuleComInterface> interfaces;
|
||||||
};
|
};
|
@ -91,9 +91,9 @@ namespace riff {
|
|||||||
file.write((char*)&desc.hdr.size, sizeof(desc.hdr.size));
|
file.write((char*)&desc.hdr.size, sizeof(desc.hdr.size));
|
||||||
file.seekp(pos);
|
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()) {
|
if (!chunks.empty()) {
|
||||||
chunks.top().hdr.size += desc.hdr.size;
|
chunks.top().hdr.size += desc.hdr.size + sizeof(ChunkHeader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
4
docker_builds/debian_bookworm/Dockerfile
Normal file
4
docker_builds/debian_bookworm/Dockerfile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
FROM debian:bookworm
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
COPY do_build.sh /root
|
||||||
|
RUN chmod +x /root/do_build.sh
|
35
docker_builds/debian_bookworm/do_build.sh
Normal file
35
docker_builds/debian_bookworm/do_build.sh
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
cd /root
|
||||||
|
|
||||||
|
# Install dependencies and tools
|
||||||
|
apt update
|
||||||
|
apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk2-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \
|
||||||
|
libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \
|
||||||
|
libcodec2-dev autoconf libtool xxd
|
||||||
|
|
||||||
|
# Install SDRPlay libraries
|
||||||
|
wget https://www.sdrplay.com/software/SDRplay_RSP_API-Linux-3.07.1.run
|
||||||
|
7z x ./SDRplay_RSP_API-Linux-3.07.1.run
|
||||||
|
7z x ./SDRplay_RSP_API-Linux-3.07.1
|
||||||
|
cp x86_64/libsdrplay_api.so.3.07 /usr/lib/libsdrplay_api.so
|
||||||
|
cp inc/* /usr/include/
|
||||||
|
|
||||||
|
# Install libperseus
|
||||||
|
git clone https://github.com/Microtelecom/libperseus-sdr
|
||||||
|
cd libperseus-sdr
|
||||||
|
autoreconf -i
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
make install
|
||||||
|
ldconfig
|
||||||
|
cd ..
|
||||||
|
|
||||||
|
cd SDRPlusPlus
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD_SDRPLAY_SOURCE=ON -DOPT_BUILD_NEW_PORTAUDIO_SINK=ON -DOPT_BUILD_M17_DECODER=ON -DOPT_BUILD_PERSEUS_SOURCE=ON
|
||||||
|
make VERBOSE=1 -j2
|
||||||
|
|
||||||
|
cd ..
|
||||||
|
sh make_debian_package.sh ./build 'libfftw3-dev, libglfw3-dev, libvolk2-dev, librtaudio-dev, libzstd-dev'
|
@ -4,7 +4,7 @@ cd /root
|
|||||||
|
|
||||||
# Install dependencies and tools
|
# Install dependencies and tools
|
||||||
apt update
|
apt update
|
||||||
apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk2-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \
|
apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \
|
||||||
libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \
|
libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget portaudio19-dev \
|
||||||
libcodec2-dev autoconf libtool xxd
|
libcodec2-dev autoconf libtool xxd
|
||||||
|
|
||||||
@ -32,4 +32,4 @@ cmake .. -DOPT_BUILD_BLADERF_SOURCE=ON -DOPT_BUILD_LIMESDR_SOURCE=ON -DOPT_BUILD
|
|||||||
make VERBOSE=1 -j2
|
make VERBOSE=1 -j2
|
||||||
|
|
||||||
cd ..
|
cd ..
|
||||||
sh make_debian_package.sh ./build 'libfftw3-dev, libglfw3-dev, libvolk2-dev, librtaudio-dev, libzstd-dev'
|
sh make_debian_package.sh ./build 'libfftw3-dev, libglfw3-dev, libvolk-dev, librtaudio-dev, libzstd-dev'
|
@ -81,7 +81,7 @@ bundle_find_full_path() {
|
|||||||
|
|
||||||
# Correct dep path
|
# Correct dep path
|
||||||
echo $RPATH/$RPATH_NEXT
|
echo $RPATH/$RPATH_NEXT
|
||||||
return
|
return -1
|
||||||
done
|
done
|
||||||
|
|
||||||
# Search other common paths
|
# Search other common paths
|
||||||
|
@ -6,3 +6,4 @@ file(GLOB SRC "src/*.cpp")
|
|||||||
include(${SDRPP_MODULE_CMAKE})
|
include(${SDRPP_MODULE_CMAKE})
|
||||||
|
|
||||||
target_include_directories(recorder PRIVATE "src/")
|
target_include_directories(recorder PRIVATE "src/")
|
||||||
|
target_include_directories(recorder PRIVATE "../../decoder_modules/radio/src")
|
@ -21,6 +21,7 @@
|
|||||||
#include <core.h>
|
#include <core.h>
|
||||||
#include <utils/optionlist.h>
|
#include <utils/optionlist.h>
|
||||||
#include <utils/wav.h>
|
#include <utils/wav.h>
|
||||||
|
#include <radio_interface.h>
|
||||||
|
|
||||||
#define CONCAT(a, b) ((std::string(a) + b).c_str())
|
#define CONCAT(a, b) ((std::string(a) + b).c_str())
|
||||||
|
|
||||||
@ -437,6 +438,17 @@ private:
|
|||||||
if (dbLvl.r > lvl.r) { lvl.r = dbLvl.r; }
|
if (dbLvl.r > lvl.r) { lvl.r = dbLvl.r; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::map<int, const char*> radioModeToString = {
|
||||||
|
{ RADIO_IFACE_MODE_NFM, "NFM" },
|
||||||
|
{ RADIO_IFACE_MODE_WFM, "WFM" },
|
||||||
|
{ RADIO_IFACE_MODE_AM, "AM" },
|
||||||
|
{ RADIO_IFACE_MODE_DSB, "DSB" },
|
||||||
|
{ RADIO_IFACE_MODE_USB, "USB" },
|
||||||
|
{ RADIO_IFACE_MODE_CW, "CW" },
|
||||||
|
{ RADIO_IFACE_MODE_LSB, "LSB" },
|
||||||
|
{ RADIO_IFACE_MODE_RAW, "RAW" }
|
||||||
|
};
|
||||||
|
|
||||||
std::string genFileName(std::string templ, std::string type, std::string name) {
|
std::string genFileName(std::string templ, std::string type, std::string name) {
|
||||||
// Get data
|
// Get data
|
||||||
time_t now = time(0);
|
time_t now = time(0);
|
||||||
@ -455,6 +467,7 @@ private:
|
|||||||
char dayStr[128];
|
char dayStr[128];
|
||||||
char monStr[128];
|
char monStr[128];
|
||||||
char yearStr[128];
|
char yearStr[128];
|
||||||
|
const char* modeStr = "Unknown";
|
||||||
sprintf(freqStr, "%.0lfHz", freq);
|
sprintf(freqStr, "%.0lfHz", freq);
|
||||||
sprintf(hourStr, "%02d", ltm->tm_hour);
|
sprintf(hourStr, "%02d", ltm->tm_hour);
|
||||||
sprintf(minStr, "%02d", ltm->tm_min);
|
sprintf(minStr, "%02d", ltm->tm_min);
|
||||||
@ -462,6 +475,11 @@ private:
|
|||||||
sprintf(dayStr, "%02d", ltm->tm_mday);
|
sprintf(dayStr, "%02d", ltm->tm_mday);
|
||||||
sprintf(monStr, "%02d", ltm->tm_mon + 1);
|
sprintf(monStr, "%02d", ltm->tm_mon + 1);
|
||||||
sprintf(yearStr, "%02d", ltm->tm_year + 1900);
|
sprintf(yearStr, "%02d", ltm->tm_year + 1900);
|
||||||
|
if (core::modComManager.getModuleName(name) == "radio") {
|
||||||
|
int mode;
|
||||||
|
core::modComManager.callInterface(name, RADIO_IFACE_CMD_GET_MODE, NULL, &mode);
|
||||||
|
modeStr = radioModeToString[mode];
|
||||||
|
}
|
||||||
|
|
||||||
// Replace in template
|
// Replace in template
|
||||||
templ = std::regex_replace(templ, std::regex("\\$t"), type);
|
templ = std::regex_replace(templ, std::regex("\\$t"), type);
|
||||||
@ -472,6 +490,7 @@ private:
|
|||||||
templ = std::regex_replace(templ, std::regex("\\$d"), dayStr);
|
templ = std::regex_replace(templ, std::regex("\\$d"), dayStr);
|
||||||
templ = std::regex_replace(templ, std::regex("\\$M"), monStr);
|
templ = std::regex_replace(templ, std::regex("\\$M"), monStr);
|
||||||
templ = std::regex_replace(templ, std::regex("\\$y"), yearStr);
|
templ = std::regex_replace(templ, std::regex("\\$y"), yearStr);
|
||||||
|
templ = std::regex_replace(templ, std::regex("\\$r"), modeStr);
|
||||||
return templ;
|
return templ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,6 +333,17 @@ private:
|
|||||||
_this->client->readAsync(1024, _this->dataBuf, dataHandler, _this, false);
|
_this->client->readAsync(1024, _this->dataBuf, dataHandler, _this, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::map<int, const char*> radioModeToString = {
|
||||||
|
{ RADIO_IFACE_MODE_NFM, "NFM" },
|
||||||
|
{ RADIO_IFACE_MODE_WFM, "WFM" },
|
||||||
|
{ RADIO_IFACE_MODE_AM, "AM" },
|
||||||
|
{ RADIO_IFACE_MODE_DSB, "DSB" },
|
||||||
|
{ RADIO_IFACE_MODE_USB, "USB" },
|
||||||
|
{ RADIO_IFACE_MODE_CW, "CW" },
|
||||||
|
{ RADIO_IFACE_MODE_LSB, "LSB" },
|
||||||
|
{ RADIO_IFACE_MODE_RAW, "RAW" }
|
||||||
|
};
|
||||||
|
|
||||||
void commandHandler(std::string cmd) {
|
void commandHandler(std::string cmd) {
|
||||||
std::string corr = "";
|
std::string corr = "";
|
||||||
std::vector<std::string> parts;
|
std::vector<std::string> parts;
|
||||||
@ -442,38 +453,18 @@ private:
|
|||||||
pos++;
|
pos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const std::string& newModeStr = parts[1];
|
||||||
float newBandwidth = std::atoi(parts[2].c_str());
|
float newBandwidth = std::atoi(parts[2].c_str());
|
||||||
|
|
||||||
int newMode;
|
auto it = std::find_if(radioModeToString.begin(), radioModeToString.end(), [&newModeStr](const auto& e) {
|
||||||
if (parts[1] == "FM") {
|
return e.second == newModeStr;
|
||||||
newMode = RADIO_IFACE_MODE_NFM;
|
});
|
||||||
}
|
if (it == radioModeToString.end()) {
|
||||||
else if (parts[1] == "WFM") {
|
|
||||||
newMode = RADIO_IFACE_MODE_WFM;
|
|
||||||
}
|
|
||||||
else if (parts[1] == "AM") {
|
|
||||||
newMode = RADIO_IFACE_MODE_AM;
|
|
||||||
}
|
|
||||||
else if (parts[1] == "DSB") {
|
|
||||||
newMode = RADIO_IFACE_MODE_DSB;
|
|
||||||
}
|
|
||||||
else if (parts[1] == "USB") {
|
|
||||||
newMode = RADIO_IFACE_MODE_USB;
|
|
||||||
}
|
|
||||||
else if (parts[1] == "CW") {
|
|
||||||
newMode = RADIO_IFACE_MODE_CW;
|
|
||||||
}
|
|
||||||
else if (parts[1] == "LSB") {
|
|
||||||
newMode = RADIO_IFACE_MODE_LSB;
|
|
||||||
}
|
|
||||||
else if (parts[1] == "RAW") {
|
|
||||||
newMode = RADIO_IFACE_MODE_RAW;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
resp = "RPRT 1\n";
|
resp = "RPRT 1\n";
|
||||||
client->write(resp.size(), (uint8_t*)resp.c_str());
|
client->write(resp.size(), (uint8_t*)resp.c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
int newMode = it->first;
|
||||||
|
|
||||||
// If tuning is enabled, set the mode and optionally the bandwidth
|
// If tuning is enabled, set the mode and optionally the bandwidth
|
||||||
if (!selectedVfo.empty() && core::modComManager.getModuleName(selectedVfo) == "radio" && tuningEnabled) {
|
if (!selectedVfo.empty() && core::modComManager.getModuleName(selectedVfo) == "radio" && tuningEnabled) {
|
||||||
@ -492,31 +483,9 @@ private:
|
|||||||
if (!selectedVfo.empty() && core::modComManager.getModuleName(selectedVfo) == "radio") {
|
if (!selectedVfo.empty() && core::modComManager.getModuleName(selectedVfo) == "radio") {
|
||||||
int mode;
|
int mode;
|
||||||
core::modComManager.callInterface(selectedVfo, RADIO_IFACE_CMD_GET_MODE, NULL, &mode);
|
core::modComManager.callInterface(selectedVfo, RADIO_IFACE_CMD_GET_MODE, NULL, &mode);
|
||||||
|
resp = std::string(radioModeToString[mode]) + "\n";
|
||||||
if (mode == RADIO_IFACE_MODE_NFM) {
|
|
||||||
resp = "FM\n";
|
|
||||||
}
|
|
||||||
else if (mode == RADIO_IFACE_MODE_WFM) {
|
|
||||||
resp = "WFM\n";
|
|
||||||
}
|
|
||||||
else if (mode == RADIO_IFACE_MODE_AM) {
|
|
||||||
resp = "AM\n";
|
|
||||||
}
|
|
||||||
else if (mode == RADIO_IFACE_MODE_DSB) {
|
|
||||||
resp = "DSB\n";
|
|
||||||
}
|
|
||||||
else if (mode == RADIO_IFACE_MODE_USB) {
|
|
||||||
resp = "USB\n";
|
|
||||||
}
|
|
||||||
else if (mode == RADIO_IFACE_MODE_CW) {
|
|
||||||
resp = "CW\n";
|
|
||||||
}
|
|
||||||
else if (mode == RADIO_IFACE_MODE_LSB) {
|
|
||||||
resp = "LSB\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
else if (!selectedVfo.empty()) {
|
||||||
if (!selectedVfo.empty()) {
|
|
||||||
resp += std::to_string((int)sigpath::vfoManager.getBandwidth(selectedVfo)) + "\n";
|
resp += std::to_string((int)sigpath::vfoManager.getBandwidth(selectedVfo)) + "\n";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
10
readme.md
10
readme.md
@ -76,7 +76,7 @@ The preferred IDE is [VS Code](https://code.visualstudio.com/) in order to have
|
|||||||
|
|
||||||
* [cmake](https://cmake.org)
|
* [cmake](https://cmake.org)
|
||||||
* [vcpkg](https://vcpkg.io)
|
* [vcpkg](https://vcpkg.io)
|
||||||
* [PothosSDR](https://github.com/pothosware/PothosSDR) (This will install libraries for most SDRs)
|
* [PothosSDR](https://github.com/pothosware/PothosSDR) (This will install libraries for most SDRs. You have to install it in `C:/Program Files/PothosSDR`)
|
||||||
* [RtAudio](https://www.music.mcgill.ca/~gary/rtaudio/) (You have to build and install it in `C:/Program Files (x86)/RtAudio/`)
|
* [RtAudio](https://www.music.mcgill.ca/~gary/rtaudio/) (You have to build and install it in `C:/Program Files (x86)/RtAudio/`)
|
||||||
|
|
||||||
After this, install the following dependencies using vcpkg:
|
After this, install the following dependencies using vcpkg:
|
||||||
@ -115,16 +115,16 @@ You will next need to edit the `root_dev/config.json` file to point to the modul
|
|||||||
From the top directory, you can simply run:
|
From the top directory, you can simply run:
|
||||||
|
|
||||||
```bat
|
```bat
|
||||||
./build/Release/sdrpp.exe -r root_dev -s
|
./build/Release/sdrpp.exe -r root_dev -c
|
||||||
```
|
```
|
||||||
|
|
||||||
Or, if you wish to run from the build directory e.g. `build/Release` and adapt the relative path to the `root_dev` folder:
|
Or, if you wish to run from the build directory e.g. `build/Release` and adapt the relative path to the `root_dev` folder:
|
||||||
|
|
||||||
```bat
|
```bat
|
||||||
./sdrpp.exe -r ../../root_dev -s
|
./sdrpp.exe -r ../../root_dev -c
|
||||||
```
|
```
|
||||||
|
|
||||||
The optional `-s` argument is for keeping the console active in order to see the error messages.
|
The optional `-c` argument is for keeping the console active in order to see the error messages.
|
||||||
|
|
||||||
Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command.
|
Because all the paths are relative, for the rest of the command line instructions we are going to assume you are running from the top directory using the former command.
|
||||||
As mentioned previously you need to edit `root_dev/config.json` to add the modules that were built. From the default configuration file you need to add the paths in the `modules` section. Add to this list all the modules you wish to use.
|
As mentioned previously you need to edit `root_dev/config.json` to add the modules that were built. From the default configuration file you need to add the paths in the `modules` section. Add to this list all the modules you wish to use.
|
||||||
@ -473,6 +473,7 @@ I will soon publish a contributing.md listing the code style to use.
|
|||||||
* [Howard0su](https://github.com/howard0su)
|
* [Howard0su](https://github.com/howard0su)
|
||||||
* John Donkersley
|
* John Donkersley
|
||||||
* [Joshua Kimsey](https://github.com/JoshuaKimsey)
|
* [Joshua Kimsey](https://github.com/JoshuaKimsey)
|
||||||
|
* [Manawyrm](https://github.com/Manawyrm)
|
||||||
* [Martin Hauke](https://github.com/mnhauke)
|
* [Martin Hauke](https://github.com/mnhauke)
|
||||||
* [Marvin Sinister](https://github.com/marvin-sinister)
|
* [Marvin Sinister](https://github.com/marvin-sinister)
|
||||||
* [Maxime Biette](https://github.com/mbiette)
|
* [Maxime Biette](https://github.com/mbiette)
|
||||||
@ -482,7 +483,6 @@ I will soon publish a contributing.md listing the code style to use.
|
|||||||
* [Shuyuan Liu](https://github.com/shuyuan-liu)
|
* [Shuyuan Liu](https://github.com/shuyuan-liu)
|
||||||
* [Syne Ardwin (WI9SYN)](https://esaille.me/)
|
* [Syne Ardwin (WI9SYN)](https://esaille.me/)
|
||||||
* [Szymon Zakrent](https://github.com/zakrent)
|
* [Szymon Zakrent](https://github.com/zakrent)
|
||||||
* [Tobias Mädel](https://github.com/Manawyrm)
|
|
||||||
* Youssef Touil
|
* Youssef Touil
|
||||||
* [Zimm](https://github.com/invader-zimm)
|
* [Zimm](https://github.com/invader-zimm)
|
||||||
|
|
||||||
|
@ -149,6 +149,12 @@
|
|||||||
"start": 28000000,
|
"start": 28000000,
|
||||||
"end": 29700000
|
"end": 29700000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "8m - Amateur",
|
||||||
|
"type": "amateur",
|
||||||
|
"start": 40660000,
|
||||||
|
"end": 40690000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "6m - Amateur",
|
"name": "6m - Amateur",
|
||||||
"type": "amateur",
|
"type": "amateur",
|
||||||
|
@ -115,7 +115,7 @@
|
|||||||
"end": 4995000
|
"end": 4995000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "60m - radiodiffusion",
|
"name": "60m - radiodiffusion",
|
||||||
"type": "broadcast",
|
"type": "broadcast",
|
||||||
"start": 5005000,
|
"start": 5005000,
|
||||||
"end": 5060000
|
"end": 5060000
|
||||||
@ -340,7 +340,7 @@
|
|||||||
"name": "11m - CB",
|
"name": "11m - CB",
|
||||||
"type": "amateur",
|
"type": "amateur",
|
||||||
"start": 26960000,
|
"start": 26960000,
|
||||||
"end": 27230000
|
"end": 27410000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "10m - Radioamateur",
|
"name": "10m - Radioamateur",
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"name": "Germany",
|
"name": "Germany",
|
||||||
"country_name": "Germany",
|
"country_name": "Germany",
|
||||||
"country_code": "DE",
|
"country_code": "DE",
|
||||||
"author_name": "Tobias Mädel",
|
"author_name": "Manawyrm",
|
||||||
"author_url": "https://tbspace.de",
|
"author_url": "https://tbspace.de",
|
||||||
"bands": [
|
"bands": [
|
||||||
{
|
{
|
||||||
|
3177
root/res/bandplans/netherlands.json
Normal file
3177
root/res/bandplans/netherlands.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -227,6 +227,18 @@
|
|||||||
"start": 144000000,
|
"start": 144000000,
|
||||||
"end": 148000000
|
"end": 148000000
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "MURS (lower)",
|
||||||
|
"type": "amateur",
|
||||||
|
"start": 151820000,
|
||||||
|
"end": 151940000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MURS (upper)",
|
||||||
|
"type": "amateur",
|
||||||
|
"start": 154570000,
|
||||||
|
"end": 154600000
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Marine",
|
"name": "Marine",
|
||||||
"type": "marine",
|
"type": "marine",
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e
|
|
||||||
|
|
||||||
[ $(id -u) = 0 ] && echo "Please do not run this script as root" && exit 100
|
|
||||||
|
|
||||||
echo "Installing dependencies"
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y build-essential cmake git libfftw3-dev libglfw3-dev libvolk1-dev libzstd-dev libsoapysdr-dev libairspyhf-dev libairspy-dev \
|
|
||||||
libiio-dev libad9361-dev librtaudio-dev libhackrf-dev librtlsdr-dev libbladerf-dev liblimesuite-dev p7zip-full wget
|
|
||||||
|
|
||||||
echo "Preparing build"
|
|
||||||
mkdir -p build
|
|
||||||
cd build
|
|
||||||
cmake .. -DOPT_BUILD_LIMESDR_SOURCE=ON
|
|
||||||
|
|
||||||
echo "Building"
|
|
||||||
make
|
|
||||||
|
|
||||||
echo "Installing"
|
|
||||||
sudo make install
|
|
||||||
|
|
||||||
echo "Done!"
|
|
@ -1,3 +1,4 @@
|
|||||||
|
#define NOMINMAX
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
#include <utils/flog.h>
|
#include <utils/flog.h>
|
||||||
#include <module.h>
|
#include <module.h>
|
||||||
@ -9,6 +10,8 @@
|
|||||||
#include <filesystem>
|
#include <filesystem>
|
||||||
#include <regex>
|
#include <regex>
|
||||||
#include <gui/tuner.h>
|
#include <gui/tuner.h>
|
||||||
|
#include <algorithm>
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
#define CONCAT(a, b) ((std::string(a) + b).c_str())
|
#define CONCAT(a, b) ((std::string(a) + b).c_str())
|
||||||
|
|
||||||
@ -121,6 +124,12 @@ private:
|
|||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
_this->reader = new WavReader(_this->fileSelect.path);
|
_this->reader = new WavReader(_this->fileSelect.path);
|
||||||
|
if (_this->reader->getSampleRate() == 0) {
|
||||||
|
_this->reader->close();
|
||||||
|
delete _this->reader;
|
||||||
|
_this->reader = NULL;
|
||||||
|
throw std::runtime_error("Sample rate may not be zero");
|
||||||
|
}
|
||||||
_this->sampleRate = _this->reader->getSampleRate();
|
_this->sampleRate = _this->reader->getSampleRate();
|
||||||
core::setInputSampleRate(_this->sampleRate);
|
core::setInputSampleRate(_this->sampleRate);
|
||||||
std::string filename = std::filesystem::path(_this->fileSelect.path).filename().string();
|
std::string filename = std::filesystem::path(_this->fileSelect.path).filename().string();
|
||||||
@ -130,7 +139,7 @@ private:
|
|||||||
//gui::freqSelect.maxFreq = _this->centerFreq + (_this->sampleRate/2);
|
//gui::freqSelect.maxFreq = _this->centerFreq + (_this->sampleRate/2);
|
||||||
//gui::freqSelect.limitFreq = true;
|
//gui::freqSelect.limitFreq = true;
|
||||||
}
|
}
|
||||||
catch (std::exception e) {
|
catch (std::exception& e) {
|
||||||
flog::error("Error: {0}", e.what());
|
flog::error("Error: {0}", e.what());
|
||||||
}
|
}
|
||||||
config.acquire();
|
config.acquire();
|
||||||
@ -144,8 +153,8 @@ private:
|
|||||||
|
|
||||||
static void worker(void* ctx) {
|
static void worker(void* ctx) {
|
||||||
FileSourceModule* _this = (FileSourceModule*)ctx;
|
FileSourceModule* _this = (FileSourceModule*)ctx;
|
||||||
double sampleRate = _this->reader->getSampleRate();
|
double sampleRate = std::max(_this->reader->getSampleRate(), (uint32_t)1);
|
||||||
int blockSize = sampleRate / 200.0f;
|
int blockSize = std::min((int)(sampleRate / 200.0f), (int)STREAM_BUFFER_SIZE);
|
||||||
int16_t* inBuf = new int16_t[blockSize * 2];
|
int16_t* inBuf = new int16_t[blockSize * 2];
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
@ -159,8 +168,8 @@ private:
|
|||||||
|
|
||||||
static void floatWorker(void* ctx) {
|
static void floatWorker(void* ctx) {
|
||||||
FileSourceModule* _this = (FileSourceModule*)ctx;
|
FileSourceModule* _this = (FileSourceModule*)ctx;
|
||||||
double sampleRate = _this->reader->getSampleRate();
|
double sampleRate = std::max(_this->reader->getSampleRate(), (uint32_t)1);
|
||||||
int blockSize = sampleRate / 200.0f;
|
int blockSize = std::min((int)(sampleRate / 200.0f), (int)STREAM_BUFFER_SIZE);
|
||||||
dsp::complex_t* inBuf = new dsp::complex_t[blockSize];
|
dsp::complex_t* inBuf = new dsp::complex_t[blockSize];
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
Loading…
Reference in New Issue
Block a user