From d9fb221f34b3f25f641cca10e9b88dc23c25fe68 Mon Sep 17 00:00:00 2001 From: DevBench Date: Tue, 3 Feb 2026 22:59:13 +0000 Subject: [PATCH] Fix DAB audio pipeline using ffmpeg for resampling --- Dockerfile.hotfix | 30 ++++++++++++++++++++++++++ docker/scripts/install-dependencies.sh | 2 +- owrx/dab/dablin.py | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 Dockerfile.hotfix diff --git a/Dockerfile.hotfix b/Dockerfile.hotfix new file mode 100644 index 00000000..238e73b4 --- /dev/null +++ b/Dockerfile.hotfix @@ -0,0 +1,30 @@ +# Stage 1: Build dablin from source +FROM debian:bookworm-slim AS builder + +RUN apt-get update && apt-get install -y \ + git cmake make g++ \ + pkg-config libncurses-dev libsdl2-dev \ + libfaad-dev libmpg123-dev libfftw3-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN git clone https://github.com/Opendigitalradio/dablin.git /src/dablin +WORKDIR /src/dablin +RUN mkdir build && cd build && cmake .. && make + +# Stage 2: Final image (based on openwebrx base to ensure compatibility or full?) +# Using jketterl/openwebrx:latest as base +FROM jketterl/openwebrx:latest + +# Install sox and runtime deps for dablin +# libfaad2 is required. libmpg123-0 is likely required for new dablin. +RUN apt-get update && apt-get install -y sox ffmpeg libfaad2 libmpg123-0 libsdl2-2.0-0 && rm -rf /var/lib/apt/lists/* + +# Copy new dablin binary +COPY --from=builder /src/dablin/build/src/dablin /usr/local/bin/dablin + +# Patch files +COPY owrx/dab/dablin.py /opt/openwebrx/owrx/dab/dablin.py +COPY csdr/chain/dablin.py /opt/openwebrx/csdr/chain/dablin.py + +# Bytecode compile +RUN python3 -m py_compile /opt/openwebrx/owrx/dab/dablin.py /opt/openwebrx/csdr/chain/dablin.py diff --git a/docker/scripts/install-dependencies.sh b/docker/scripts/install-dependencies.sh index c10f97f1..257c06b0 100755 --- a/docker/scripts/install-dependencies.sh +++ b/docker/scripts/install-dependencies.sh @@ -21,7 +21,7 @@ function cmakebuild() { cd /tmp -STATIC_PACKAGES="libfftw3-single3 libfftw3-double3 python3 python3-setuptools python3-paho-mqtt netcat-openbsd libsndfile1 liblapack3 libusb-1.0-0 libqt5core5a libreadline8 libgfortran5 libgomp1 libasound2 libudev1 ca-certificates libpulse0 libfaad2 libopus0 libboost-program-options1.74.0 libboost-log1.74.0 libcurl4 libncurses6 libliquid1 libconfig++9v5" +STATIC_PACKAGES="libfftw3-single3 libfftw3-double3 python3 python3-setuptools python3-paho-mqtt netcat-openbsd libsndfile1 liblapack3 libusb-1.0-0 libqt5core5a libreadline8 libgfortran5 libgomp1 libasound2 libudev1 ca-certificates libpulse0 libfaad2 libopus0 libboost-program-options1.74.0 libboost-log1.74.0 libcurl4 libncurses6 libliquid1 libconfig++9v5 sox" BUILD_PACKAGES="wget git libsndfile1-dev libfftw3-dev cmake make gcc g++ liblapack-dev texinfo gfortran libusb-1.0-0-dev qtbase5-dev qtmultimedia5-dev qttools5-dev libqt5serialport5-dev qttools5-dev-tools asciidoctor asciidoc libasound2-dev libudev-dev libhamlib-dev patch xsltproc qt5-qmake libfaad-dev libopus-dev libboost-dev libboost-program-options-dev libboost-log-dev libboost-regex-dev libpulse-dev libcurl4-openssl-dev libncurses-dev xz-utils libliquid-dev libconfig++-dev autoconf automake" apt-get update apt-get -y install auto-apt-proxy diff --git a/owrx/dab/dablin.py b/owrx/dab/dablin.py index ad7d2641..61e91728 100644 --- a/owrx/dab/dablin.py +++ b/owrx/dab/dablin.py @@ -12,7 +12,7 @@ class DablinModule(ExecModule): ) def _buildArgs(self): - return ["dablin", "-p", "-s", "{:#06x}".format(self.serviceId)] + return ["bash", "-c", "dablin -u -s {:#06x} | ffmpeg -v error -i pipe:0 -f f32le -ar 48000 -ac 2 pipe:1".format(self.serviceId)] def setDabServiceId(self, serviceId: int) -> None: self.serviceId = serviceId