arancormonk
4e64ef1c11
rtl_sdr_fm: add runtime SIMD dispatch for widen/rotate paths, selecting AVX2/SSE2/NEON via CPUID/XGETBV (x86) or getauxval (ARM) with scalar fallbacks. Replace compile-time guards with lazy-initialized function-pointer wrappers so binaries run optimally across CPUs without changing call sites.
2025-09-03 23:06:55 -04:00
arancormonk
c764cf0eda
rtl_sdr_fm: replace USB→demod double-buffer/condvar handoff with a lock-free SPSC ring; enqueue widened blocks and drop oldest on overflow to keep the callback non-blocking. Demod now reads ring blocks; ring is initialized/cleaned up, reducing wakeups and latency.
2025-09-03 22:45:18 -04:00
arancormonk
8b4fa81711
rtl_sdr_fm: consume HB cascade output in-place to avoid the final memcpy. Track the current buffer and assign lowpassed to the last stage’s output, preserving correctness while reducing memory traffic.
2025-09-03 22:38:50 -04:00
arancormonk
106aae1814
rtl_sdr_fm: fuse interleaved complex half-band decimation to avoid deinterleave/reinterleave in full_demod, reducing memory traffic and copies. Maintain per‑stage histories and equivalent output while improving throughput.
2025-09-03 22:35:34 -04:00
arancormonk
391048a45a
rtl_sdr_fm: vectorize rotate+widen path: add AVX2/NEON implementations for widen_rotate90_u8_to_s16_bias127 with scalar tail fallback. This applies the 90° rotation and bias-127 widening in vectors to reduce callback CPU without changing behavior.
2025-09-03 22:23:05 -04:00
arancormonk
1b9c3aa659
rtl_sdr_fm: add residual-CFO FLL and optional Gardner timing correction before discriminator (TED disabled by default and applied only to non-FM unless forced), with linear interpolation, nominal 1/sps advance, and env-tunable gains.
2025-09-03 22:18:20 -04:00
arancormonk
e9b12b8bc6
rtl_sdr_fm: add polyphase rational resampler (L/M) enabled by default at 48 kHz (override via DSD_FME_RESAMP), integrate post-demod and update output.rate while keeping legacy upsampler as fallback. Implement tap design with L-phase gain compensation.
2025-09-03 22:02:19 -04:00
arancormonk
9e9ae95219
rtl_sdr_fm: use fast atan2 discriminator for analog mode to reduce quantization noise
2025-09-03 21:33:04 -04:00
arancormonk
86d91512bb
rtl_sdr_fm: add AVX2 widening, optional combined rotate+widen, and fixed‑point linear upsampler with env flags; preserve legacy behavior by default. Fix decoding by matching legacy upsample length (NM) with tail fill and reproducing unsigned rotate semantics.
2025-09-03 21:20:41 -04:00
arancormonk
0b00832b1f
rtl_sdr_fm: enable env-gated intra-block multithreading with a tiny 2-thread pool and preallocated buffers. Parallelize HB I/Q decimation and linear upsampler; add debug log when enabled.
2025-09-03 20:52:06 -04:00
arancormonk
2655fccdea
rtl_sdr_fm: ring signaling and atomic annotations
2025-09-03 20:30:32 -04:00
arancormonk
ac8f17bf20
rtl_sdr_fm: guard and document bandwidth_multiplier behavior
2025-09-03 20:23:52 -04:00
arancormonk
0cb38d2c25
rtl_sdr_fm: SIMD optimize USB byte→int16 widening in callback
2025-09-03 20:20:43 -04:00
arancormonk
6fc327c3b6
rtl_sdr_fm: avoid sqrt in RMS utility (use power-domain)
2025-09-03 20:15:27 -04:00
arancormonk
00e7c51a21
rtl_sdr_fm: add a light post-demod audio low-pass filter
2025-09-03 19:19:25 -04:00
arancormonk
e2402d0328
rtl_sdr_fm: correct deemphasis coefficient derivation and make it configurable
2025-09-03 19:08:22 -04:00
arancormonk
402cef34a9
rtl_sdr_fm: improve decimation filters (half-band FIR cascade)
2025-09-03 18:53:44 -04:00
arancormonk
29be104345
rtl_sdr_fm: replace sample duplication with simple resampling (linear interpolation)
2025-09-03 18:30:38 -04:00
arancormonk
f3ec024000
rtl_sdr_fm: replace DC block with leaky integrator high-pass (IIR)
2025-09-03 18:18:00 -04:00
arancormonk
412a4dc3b1
rtl_sdr_fm: add saturating arithmetic for decimation and volume scaling
2025-09-03 18:05:28 -04:00
arancormonk
2eedcc125b
rtl_sdr_fm: fix deemphasis state race
2025-09-03 18:01:06 -04:00
arancormonk
9b399f31da
rtl_sdr_fm: enable vectorization and alignment for DSP arrays
2025-09-03 16:25:15 -04:00
arancormonk
2ec3f9a263
rtl_sdr_fm: hoist divisions and use integer scalers in hot loops
2025-09-03 16:14:26 -04:00
arancormonk
0decc5934c
rtl_sdr_fm: add batch operations and thread scheduling
2025-09-03 15:58:33 -04:00
arancormonk
7dd9cd7566
rtl_sdr_fm: add batched consumer API
2025-09-03 15:51:45 -04:00
arancormonk
30766b34bd
rtl_sdr_fm: fix timespec normalization in timed wait
2025-09-03 15:21:50 -04:00
arancormonk
e700e418be
rtl_sdr_fm: make RMS squelch incremental and decimated
2025-09-03 15:17:07 -04:00
arancormonk
c6d3e4cea0
rtl_sdr_fm: removed the obsolete rwlock and lock sites
2025-09-03 15:08:19 -04:00
arancormonk
62a9372d61
rtl_sdr: make async buffer params explicit and safe
2025-09-03 15:03:38 -04:00
arancormonk
cc200ea82c
rtl_sdr: make RMS squelch sqrt-free
2025-09-03 14:48:33 -04:00
arancormonk
03c6b28de3
rtl_sdr_fm: initialize async buffer length and consider buffer count
2025-09-03 14:36:26 -04:00
arancormonk
3fe14f3b1d
rtl_sdr_fm: double-buffer the I/Q handoff and remove memcpy/locks between callback and demod
2025-09-03 14:30:32 -04:00
arancormonk
3adcf5f449
rtl_sdr_fm: replace std::queue + locks with a single-producer single-consumer ring buffer
2025-09-03 13:21:47 -04:00
arancormonk
b81e1e6d22
rtl_sdr_fm: fix atan2/LUT discriminator — use precise π, quadrant-correct LUT saturation, clamp ±π at wrap, and mutex-protect LUT free.
2025-09-03 10:38:52 -04:00
lwvmobile
9acd8c981e
Merge pull request #307 from arancormonk/fix/nxdn-cac-temp-buffer-overflow
...
Fix NXDN CAC decoder temp buffer overflow in nxdn_deperm_cac causing segfaults under -O2/-O3
2025-09-02 22:10:42 -04:00
lwvmobile
9353c489aa
Merge pull request #306 from arancormonk/fix/p25p2-tdma-voice-vector-oob
...
Fix OOB writes in ez.cpp HB/HBS vectors causing P25p2 TDMA voice segfault
2025-09-02 21:22:54 -04:00
arancormonk
bc95dc1a1d
Fix NXDN CAC decoder temp buffer overflow in nxdn_deperm_cac causing segfaults under -O2/-O3.
2025-09-02 15:53:26 -04:00
arancormonk
1ecd32e017
Fix OOB writes in ez.cpp HB/HBS vectors causing P25p2 TDMA voice segfault
2025-09-02 15:07:51 -04:00
lwvmobile
6ef823347b
Fix Bug with -F switch requiring an argument;
...
Bug was introduced in commitc 888dfc1d6569c42aa45ca86aad00ed630410ddd ;
2025-08-30 04:31:21 -04:00
lwvmobile
bd75c1ab83
MBE: Prepare for changes to P25p1 ESS in SDRTrunk .mbe files (version, ks application); #298
...
MBE: Make tweaks to audio and wav file handling, allow writing to static wav files even if audio out device is NULL (writeSynthesizedVoiceMS);
DSTAR: Fix Issue with DSTAR where double writes would occur in single static .wav files;
2025-08-23 20:31:32 -04:00
lwvmobile
b3b943d330
Update Docs;
2025-08-22 14:27:13 -04:00
lwvmobile
a5151686ec
Add Generic Static AMBE Keystream Support; #303
...
Adding a new method to allow a user to enter a generic keystream len and static keystream via a string that is loaded into a bit array to xor against ambe frames;
This method is intended to be used to allow
2025-08-22 14:02:09 -04:00
lwvmobile
24c1dd97df
DMR: Add 16-bit Anytone BP Support; #303
...
Reset static_ks_counter as various places in code;
Remove the static_ks_counter reset from KWD SCR link control and tweak SO bits;
Fix Forced KS application to work in both slots;
Allow Static Wav File or Per Call Wav File in SDRTrunk MBE format playback; #298
Same as above for .amb, .dmb, and .imb format playback;
Update Usage and Docs;
2025-08-20 23:12:57 -04:00
lwvmobile
6f171620dc
DMR: Reorganize TYT and KEN encrytion modes, putting them into the proper files; #302 #303
2025-08-19 19:18:01 -04:00
lwvmobile
7428a87d80
WAV: Fix Issues with Per Call;
...
Fix Per Call Issue introduced with commit re-enabling single static wav file where single channel audio decode types would not write to per call temp wav files and be deleted after event history cycled them;
Fix Issue with YSF where double writes would occur in .wav files;
Fix Issue with M17 where incorrect rate audio would write to static .wav file by converting to stereo output;
Seperate Per Call and Create Method to Allow EDACS Analog Calls to be written to static wav file by downsampling and stereo interleaving audio to proper spec;
Issues were introduced in commit # c7b25c60af
2025-08-19 02:35:17 -04:00
lwvmobile
79084f26c6
DMR: Fix Kenwood Scrambler SVC OPT muting call when key is forced; #303
2025-08-17 21:17:14 -04:00
lwvmobile
d5cd4b4273
DMR: Fix Kenwood Scrambler Flag in FLC #303 ;
2025-08-17 21:11:34 -04:00
lwvmobile
bafd74b225
DMR: Fix Wformat Warning; #303
2025-08-17 20:06:34 -04:00
lwvmobile
8df8ce85f2
DMR: Add 15-bit scrambler method for Kenwood Radios; #303
2025-08-17 18:57:32 -04:00
lwvmobile
a5b9984d78
TYT EP: Fix User Key to Input Register; #302
...
Bytes used as input register for TYT EP are loaded by byte reverse order, was undetected on some key patterns like all F's or all A's, but found out on 1234... patterns;
2025-08-17 15:24:22 -04:00