From d91af2153a370d650f1851faad274868e7d66fc1 Mon Sep 17 00:00:00 2001 From: TERMSTRAANGE Date: Tue, 23 Dec 2025 18:20:32 +0200 Subject: [PATCH] Fix integer out of bounds issue Convert data to int16 type during operation. As an alternative, data could be initially loaded as `int16` as opposed to default `uint8` as defined by `np.memmap` which is used to load the samples. --- calibratesdr/dabplus/dab.py | 2 +- calibratesdr/utils.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/calibratesdr/dabplus/dab.py b/calibratesdr/dabplus/dab.py index 16965ef..f1479bf 100644 --- a/calibratesdr/dabplus/dab.py +++ b/calibratesdr/dabplus/dab.py @@ -5,7 +5,7 @@ def get_ppm(data, samplerate = 2048000, show_graph = False, verbose=False): adc_offset = -127 - data_slice = (adc_offset + data[0:: 2]) + 1j * (adc_offset + data[1:: 2]) + data_slice = (data[0::2].astype(np.int16) + adc_offset) + 1j * (data[1::2].astype(np.int16) + adc_offset) signal = np.abs(data_slice) diff --git a/calibratesdr/utils.py b/calibratesdr/utils.py index bec6d79..4249e16 100644 --- a/calibratesdr/utils.py +++ b/calibratesdr/utils.py @@ -66,8 +66,8 @@ def get_fft(data, samplerate = 2048000): window = samplerate for slice in range(0, int(len(data) // (window * 2)) * window * 2, window * 2): - data_slice = (adc_offset + data[slice: slice + window * 2: 2]) +\ - 1j * (adc_offset + data[slice + 1: slice + window * 2: 2]) + data_slice = (adc_offset + data[slice: slice + window * 2: 2].astype(np.int16)) +\ + 1j * (adc_offset + data[slice + 1: slice + window * 2: 2].astype(np.int16)) norm_fft = (1.0 / window) * fftshift(fft(data_slice))