Commit Graph

4260 Commits

Author SHA1 Message Date
f4exb b09d15436d Debian build: removed sqlite3 from dependencies 2018-05-05 05:54:04 +02:00
f4exb 3f1389dc81 Removed sqlite3 dependency 2018-05-05 05:28:34 +02:00
f4exb 359af254f0 SSB modulator: fixed issue #167: typo in remove Tx registration method 2018-05-03 00:28:27 +02:00
f4exb 17aa15c4d0 Unified the even/odd integer halfband filters 2018-05-02 14:00:03 +02:00
f4exb 1db2da3b60 NFM demod: fixed squelch 2018-05-02 01:22:34 +02:00
f4exb c7db2a3ca7 Bumped plugins version 2018-05-02 00:29:18 +02:00
f4exb 058f3d5af8 RTLSDR: optimized decimator 2018-05-02 00:24:50 +02:00
f4exb 19c32b4354 Removed 24/16 bit differentiation on Decimator instantiation where possible 2018-05-01 23:57:12 +02:00
f4exb 4924e3edbd Down channelizer optimization: use even/odd technique halfband filter 2018-05-01 22:02:30 +02:00
f4exb a81e2f297a Benchmarking: added int to float decimation 2018-05-01 19:49:47 +02:00
f4exb efa168ec77 Floating point to floating point decimator optimization using the even/odd algorithm 2018-04-30 11:08:08 +02:00
f4exb 48cc6df8a7 Floating point to integer decimator optimization using the even/odd algorithm 2018-04-29 22:56:34 +02:00
f4exb 1213ad2a71 Simplified float halfband filters with unique class for floating point 2018-04-29 11:48:46 +02:00
f4exb 9c49be1313 Removed intrinsics completely from IntHalfbandFilterEO2 2018-04-29 11:38:42 +02:00
f4exb d735025c6c With global adoption of even/odd decimators the accu type must be 32 not 64 bits 2018-04-29 10:38:25 +02:00
f4exb 2252dcb06a Do not use intrinsics at all for IntHalfbandFilterEO1 2018-04-29 10:37:36 +02:00
f4exb b23d1f6a63 Optimization: always use the even/odd decimators 2018-04-28 05:08:01 +02:00
f4exb 27623709f0 Rewrite of decimator ifdefs 2018-04-28 03:04:34 +02:00
f4exb 33e171bd9b Moving average: fixed initialization 2018-04-27 20:40:17 +02:00
f4exb 8d565f8187 SSB mod: fixed span slider aspect and bulky low/high cut slider group 2018-04-27 07:09:37 +02:00
f4exb 34ff36926e SSB demod: fixed span slider aspect 2018-04-27 06:59:36 +02:00
f4exb 45aa323cf6 SSB demod: make the filter sliders less bulky with only one scale on the high cutoff 2018-04-27 06:41:48 +02:00
f4exb 2427c885f7 Benchmarking: added option to deactivate SIMD for decimators 2018-04-26 22:45:47 +02:00
f4exb ddfcccab22 Benchmarking: use info level message instead of debug to show results 2018-04-25 18:06:47 +02:00
f4exb 17ea5f29b3 Benchmarking: added float->float decimators and corresponding benchmark test 2018-04-25 18:01:01 +02:00
f4exb b03e9c59cb Benchmarking: implemented decimator float to int test 2018-04-25 01:44:54 +02:00
f4exb 698f5bd172 Benchmarking: added actual decimator test 2018-04-23 18:24:45 +02:00
f4exb 375db9ae21 Added a benchmark framework 2018-04-23 16:43:18 +02:00
f4exb 2efa7ab594 DSD demod: allow use of audio rates that are integer multiples of 8k other than 48k (x2,3,4,5) 2018-04-23 01:04:47 +02:00
f4exb 114e70b595 Revert "MainWindow: call cleanup code on aboutToQuit signal"
This reverts commit a71ba63b49.
2018-04-22 22:58:11 +02:00
f4exb 486468afe0 Updated Debian changelog and DSD demod doc 2018-04-22 18:49:58 +02:00
f4exb 06cd90e354 AM demod: use buffered delay squelch 2018-04-22 10:23:11 +02:00
f4exb 7e6267f41c SSB demod: use delay line to squeeze squelch tail 2018-04-22 09:37:34 +02:00
f4exb 4670cbaa33 Merge branch 'master' into dev 2018-04-22 07:48:13 +02:00
f4exb e206d65283
Merge pull request #162 from jigpu/spelling-fixes
Spelling fixes
2018-04-22 07:45:20 +02:00
f4exb a099b05fb6
Merge pull request #164 from jigpu/memleak-fixes
Memleak fixes
2018-04-22 07:40:58 +02:00
f4exb 808336c96b
Merge pull request #163 from jigpu/sanitizer-fixes
Sanitizer fixes
2018-04-22 07:39:19 +02:00
Jason Gerecke 1eaae0de30 BFM demod: Delete the SpectrumVis when destroying BFMDemodGUI
Take care of a pair of memory leaks that occur when the BFM demod GUI
is closed.

==786== 19,952 (24 direct, 19,928 indirect) bytes in 1 blocks are definitely lost in loss record 7,065 of 7,081
==786==    at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334)
==786==    by 0x54C82ED: allocate (new_allocator.h:111)
==786==    by 0x54C82ED: allocate (alloc_traits.h:436)
==786==    by 0x54C82ED: _M_get_node (stl_list.h:383)
==786==    by 0x54C82ED: _M_create_node<FFTWEngine::Plan* const&> (stl_list.h:572)
==786==    by 0x54C82ED: _M_insert<FFTWEngine::Plan* const&> (stl_list.h:1801)
==786==    by 0x54C82ED: push_back (stl_list.h:1118)
==786==    by 0x54C82ED: FFTWEngine::configure(int, bool) (fftwengine.cpp:35)
==786==    by 0x4F4590B: SpectrumVis::handleConfigure(int, int, FFTWindow::Function) (spectrumvis.cpp:206)
==786==    by 0x4F459EE: SpectrumVis::handleMessage(Message const&) (spectrumvis.cpp:170)
==786==    by 0x548346C: BasebandSampleSink::handleInputMessages() (basebandsamplesink.cpp:21)
==786==    by 0x69E1615: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQt5Core.so.5.10.1)
==786==    by 0x5497D4B: MessageQueue::push(Message*, bool) (messagequeue.cpp:52)
==786==    by 0x33F9D61A: BFMDemodGUI::BFMDemodGUI(PluginAPI*, DeviceUISet*, BasebandSampleSink*, QWidget*) (bfmdemodgui.cpp:352)
==786==    by 0x33F9D985: BFMDemodGUI::create(PluginAPI*, DeviceUISet*, BasebandSampleSink*) (bfmdemodgui.cpp:50)
==786==    by 0x33FB035D: non-virtual thunk to BFMPlugin::createRxChannelGUI(DeviceUISet*, BasebandSampleSink*) (bfmplugin.cpp:57)
==786==    by 0x4F47F19: DeviceUISet::loadRxChannelSettings(Preset const*, PluginAPI*) (deviceuiset.cpp:201)
==786==    by 0x4EA51EA: MainWindow::loadPresetSettings(Preset const*, int) (mainwindow.cpp:575)
==786==    by 0x4EAC81B: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:176)
==786==    by 0x10A49B: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==786==    by 0x109B38: main (main.cpp:131)
==786==
==786== 54,096 (112 direct, 53,984 indirect) bytes in 1 blocks are definitely lost in loss record 7,075 of 7,081
==786==    at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334)
==786==    by 0x69E9162: QObject::QObject(QObject*) (in /usr/lib/libQt5Core.so.5.10.1)
==786==    by 0x5497BEE: MessageQueue::MessageQueue(QObject*) (messagequeue.cpp:26)
==786==    by 0x54834FF: BasebandSampleSink::BasebandSampleSink() (basebandsamplesink.cpp:6)
==786==    by 0x4F45A29: SpectrumVis::SpectrumVis(float, GLSpectrum*) (spectrumvis.cpp:26)
==786==    by 0x33F9D53C: BFMDemodGUI::BFMDemodGUI(PluginAPI*, DeviceUISet*, BasebandSampleSink*, QWidget*) (bfmdemodgui.cpp:342)
==786==    by 0x33F9D985: BFMDemodGUI::create(PluginAPI*, DeviceUISet*, BasebandSampleSink*) (bfmdemodgui.cpp:50)
==786==    by 0x33FB035D: non-virtual thunk to BFMPlugin::createRxChannelGUI(DeviceUISet*, BasebandSampleSink*) (bfmplugin.cpp:57)
==786==    by 0x4F47F19: DeviceUISet::loadRxChannelSettings(Preset const*, PluginAPI*) (deviceuiset.cpp:201)
==786==    by 0x4EA51EA: MainWindow::loadPresetSettings(Preset const*, int) (mainwindow.cpp:575)
==786==    by 0x4EAC81B: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:176)
==786==    by 0x10A49B: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==786==    by 0x109B38: main (main.cpp:131)
2018-04-21 18:56:21 -07:00
Jason Gerecke a71ba63b49 MainWindow: call cleanup code on aboutToQuit signal
Address the two largest leaks detected by valgrind when simply opening
and closing sdrangel with the 'X' button rather than the 'Exit' menu
item.

==11533== 18,016 (24 direct, 17,992 indirect) bytes in 1 blocks are definitely lost in loss record 6,991 of 7,005
==11533==    at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334)
==11533==    by 0x54C82ED: allocate (new_allocator.h:111)
==11533==    by 0x54C82ED: allocate (alloc_traits.h:436)
==11533==    by 0x54C82ED: _M_get_node (stl_list.h:383)
==11533==    by 0x54C82ED: _M_create_node<FFTWEngine::Plan* const&> (stl_list.h:572)
==11533==    by 0x54C82ED: _M_insert<FFTWEngine::Plan* const&> (stl_list.h:1801)
==11533==    by 0x54C82ED: push_back (stl_list.h:1118)
==11533==    by 0x54C82ED: FFTWEngine::configure(int, bool) (fftwengine.cpp:35)
==11533==    by 0x4F4590B: SpectrumVis::handleConfigure(int, int, FFTWindow::Function) (spectrumvis.cpp:206)
==11533==    by 0x4F45B94: SpectrumVis::SpectrumVis(float, GLSpectrum*) (spectrumvis.cpp:29)
==11533==    by 0x4F46349: DeviceUISet::DeviceUISet(int, bool, QTimer&) (deviceuiset.cpp:39)
==11533==    by 0x4EA890E: MainWindow::addSourceDevice(int) (mainwindow.cpp:240)
==11533==    by 0x4EAC7F3: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:171)
==11533==    by 0x10A3B3: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==11533==    by 0x109A78: main (main.cpp:130)
==11533==
==11533== 54,096 (112 direct, 53,984 indirect) bytes in 1 blocks are definitely lost in loss record 6,999 of 7,005
==11533==    at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334)
==11533==    by 0x69E9162: QObject::QObject(QObject*) (in /usr/lib/libQt5Core.so.5.10.1)
==11533==    by 0x54834E6: BasebandSampleSink::BasebandSampleSink() (basebandsamplesink.cpp:6)
==11533==    by 0x4F45A29: SpectrumVis::SpectrumVis(float, GLSpectrum*) (spectrumvis.cpp:26)
==11533==    by 0x4F46349: DeviceUISet::DeviceUISet(int, bool, QTimer&) (deviceuiset.cpp:39)
==11533==    by 0x4EA890E: MainWindow::addSourceDevice(int) (mainwindow.cpp:240)
==11533==    by 0x4EAC7F3: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:171)
==11533==    by 0x10A3B3: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==11533==    by 0x109A78: main (main.cpp:130)
2018-04-21 18:56:06 -07:00
Jason Gerecke 141997475c BFM demod: RDS demod: Initialize RDSDemod array elements
The m_parms.tot_errs array is not initialized prior to its first use
in the RDSDemod::biphase function. ASAN does not pick up on this
directly, but instead reports it as follows (note that ASAN fills
memory with 0xBE and -1094795586 is 0xBEBEBEBE):

    ./plugins/channelrx/demodbfm/rdsdemod.cpp:159:95: runtime error: signed
    integer overflow: -1094795586 + -1094795586 cannot be represented in type
    'int'

The m_parms.subcarr_bb array does not appear to be read prior to
initialization, but we initialize it to zero anyway for the sake
of good hygiene.
2018-04-21 18:54:19 -07:00
Jason Gerecke bc4d7adce7 FileSourceGui: Prevent potential integer overflow in updateWithStreamTime
UBSan reports the following error when replaying an IQ stream:

    ./plugins/samplesource/filesource/filesourcegui.cpp:331:29: runtime
    error: signed integer overflow: 2704064 * 1000 cannot be represented
    in type 'int'

By rearranging the calculation, we can be sure that the calculation never
overflows.
2018-04-21 18:53:21 -07:00
Jason Gerecke 7c67b7de7c qrtplib: clear buffer fed to RTPSession::CreateCNAME
The RTPSession::CreateCNAME function checks to see if the buffer that
it is provided already has any data in it, and appends to it if so. The
RTPSession::InternalCreate function calls this function with an uninitialized
buffer, which results in indeterminate behavior. To ensure that the CNAME
is properly created, we clear the buffer before use.

==30323== Conditional jump or move depends on uninitialised value(s)
==30323==    at 0x4C30109: __strlen_sse2 (vg_replace_strmem.c:460)
==30323==    by 0x85647A4: qrtplib::RTPSession::CreateCNAME(unsigned char*, unsigned long*, bool) (rtpsession.cpp:1150)
==30323==    by 0x8564B35: qrtplib::RTPSession::InternalCreate(qrtplib::RTPSessionParams const&) (rtpsession.cpp:218)
==30323==    by 0x5499159: RTPSink::RTPSink(QUdpSocket*, int, bool) (rtpsink.cpp:48)
==30323==    by 0x5420B6A: AudioNetSink::AudioNetSink(QObject*, int, bool) (audionetsink.cpp:42)
==30323==    by 0x541F465: AudioOutput::start(int, int) (audiooutput.cpp:114)
==30323==    by 0x5412763: AudioDeviceManager::startAudioOutput(int) (audiodevicemanager.cpp:361)
==30323==    by 0x5412B0C: AudioDeviceManager::addAudioSink(AudioFifo*, MessageQueue*, int) (audiodevicemanager.cpp:229)
==30323==    by 0x33F96DE7: BFMDemod::BFMDemod(DeviceSourceAPI*) (bfmdemod.cpp:56)
==30323==    by 0x33FB03F2: non-virtual thunk to BFMPlugin::createRxChannelBS(DeviceSourceAPI*) (bfmplugin.cpp:62)
==30323==    by 0x4F47F25: DeviceUISet::loadRxChannelSettings(Preset const*, PluginAPI*) (deviceuiset.cpp:199)
==30323==    by 0x4EA51EA: MainWindow::loadPresetSettings(Preset const*, int) (mainwindow.cpp:575)
==30323==    by 0x4EAC81B: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:176)
==30323==    by 0x10A49B: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==30323==    by 0x109B38: main (main.cpp:131)
2018-04-21 18:52:20 -07:00
Jason Gerecke 8cf3469c87 Fix spelling errors in documentation 2018-04-21 18:45:09 -07:00
Jason Gerecke f6ea7b216e Fix spelling errors present in UI files 2018-04-21 18:44:54 -07:00
f4exb b4a77e08c8 DSD demod: symmetrical attack and decay for squelch like NFM 2018-04-21 17:22:07 +02:00
f4exb 84538f1acf DSD demod: use buffered squelch to start decoding at the very beginning of the transmission regardless of squelch gate length 2018-04-21 09:56:12 +02:00
f4exb 12f5f4e30c NFM demod: buffered squelch 2018-04-21 09:23:01 +02:00
f4exb 145d0cad38 LimeSuite: Windows build fixes 2018-04-20 19:07:18 +02:00
f4exb 685fa7947e Debian build: update on LimeSuite build 2018-04-20 13:09:35 +02:00
f4exb 20fbac5621 LimeSDR: updated documentation 2018-04-20 09:15:30 +02:00