1
0
mirror of https://github.com/JvanKatwijk/qt-dab.git synced 2025-10-06 00:02:40 +02:00

updated pictures

This commit is contained in:
Jan
2025-07-21 15:03:49 +02:00
parent 2371ba13f1
commit 820febee23
19 changed files with 80 additions and 92 deletions

View File

@@ -4,19 +4,6 @@
![6.9](/res/read_me/front-picture.png?raw=true)
-------------------------------------------------------------------------
Restructured source tree
--------------------------------------------------------------------------
Note that the sourcetree is now restructured. All sources are now
grouped in the directory sources. That one contains three main subdirectories
* main for the main program (as the name suggests)
* frontend for converting input samples into sequences of softbits (-127 .. 127)
* backend for the actual decoding of the softbits to either audio, data or both
Furthermore there are a few other subdirectories with support functions
--------------------------------------------------------------------------
About Qt-DAB
-------------------------------------------------------------------------
@@ -65,6 +52,11 @@ Thanks to Richard Huber, *Qt-DAB* can be compiled on the Mac as well.
is always visible. This main widget contains selectors
for controlling the visibility of (the) other widgets.
There is - on the surface - not much difference betweem the 6.9.2 and
6.9.3 version. An error that sometime caused problems with a data service
(insufficent data) to run.
Furthermore, the sourcetree was changed completely.
Features
=================================================================
@@ -98,7 +90,7 @@ The *main widget* (see picture) of Qt-DAB (always visible), contains settings fo
It shows - left half - a list of services (either from the currently selected channel or from the favourites), seleting a service is just by clicking on the name.
On the right half of the widget it shows the dynamic label, and the slides - if transmitted as part of the service - or a series of default slides.
* touching the *ensemble name* (NPO (8001) in the picture) makes the
* touching the *ensemble name* (5B Z-H/ZEELAND (805B) in the picture) makes the
*content table*, i.e. an overview of the content of the ensemble, visible with the possibility of storing the data in a ".csv" format. If the data is visible, touching will hide it;
* touching the small icon left on the top of the right half
will show (or hide) the *technical widget*,
@@ -108,7 +100,7 @@ a spectrum of the audio of the selected service;
* touching the icon showing a *speaker* controls muting the signal and shows
whether or not a signal should be audible.
* touching the *copyright symbol* shows (or, if visible, hides) a small widget with some acknowledgements for using external libraries;
* touching with the *right hand mouse button* the text of the dynamic label (NPO Radio 1- NOS Langs de lijn - NOS) shows a small menu to put the text on the clipboard;
* touching with the *right hand mouse button* the text of the dynamic label (JE HOORT ANDRE HAZES - N VRIEND) a small menu shows to put the text on the clipboard;
* the button labeled *scan* controls the visibility of a the scan handler widget;
* the button labeled *http* controls the http handler with which a map )with the transmitters) will be shown;
* the button labeled *spectrum* controls the visibility of the spectrum widget, a widget that contains views on and information of the DAB signal itself;

View File

@@ -4,4 +4,4 @@ HERE="$(dirname "$(readlink -f "${0}")")"
# Try to run using sudo, if this does not work ask the user for password
#sudo -n -E -- "/tmp/udev-rules-helper" || pkexec "/tmp/udev-rules-helper"
#rm "/tmp/udev-rules-helper"
exec "${HERE}/usr/bin/qt-dab-6.9.1" "$@"
exec "${HERE}/usr/bin/qt-dab-6.9.3" "$@"

View File

@@ -1,6 +1,6 @@
[Desktop Entry]
Name=Qt6_DAB-6.9.2
Exec=qt-dab-6.9.2
Name=Qt6_DAB-6.9.3
Exec=qt-dab-6.9.3
Icon=qt-dab-6.9
Type=Application
Categories=AudioVideo;

BIN
qt-dab-6.9.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -16,9 +16,9 @@ QMAKE_CXXFLAGS += -O3 -ffast-math
}
unix {
#QMAKE_CFLAGS += -O3 -ffast-math -pg
#QMAKE_CXXFLAGS += -O3 -ffast-math -pg
#QMAKE_LFLAGS += -O3 -ffast-math -pg
#QMAKE_CFLAGS += -O3 -ffast-math -g
#QMAKE_CXXFLAGS += -O3 -ffast-math -g
#QMAKE_LFLAGS += -O3 -ffast-math -g
QMAKE_CXXFLAGS += -ffast-math -flto
QMAKE_CFLAGS += -ffast-math -flto
QMAKE_LFLAGS += -ffast-math -flto

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -40,8 +40,6 @@
Dongles = QStringList();
dongleList. setStringList (Dongles);
selectorDisplay -> setModel (&dongleList);
connect (selectorDisplay, SIGNAL (clicked (QModelIndex)),
this, SLOT (selectDongle (QModelIndex)));
connect (selectorDisplay, &QListView::clicked,
this, rtl_dongeselect::selectDongle);
selectedItem = -1;

View File

@@ -43,25 +43,6 @@
#define GETPROCADDRESS dlsym
#endif
static
float convTable [] = {
-128 / 128.0 , -127 / 128.0 , -126 / 128.0 , -125 / 128.0 , -124 / 128.0 , -123 / 128.0 , -122 / 128.0 , -121 / 128.0 , -120 / 128.0 , -119 / 128.0 , -118 / 128.0 , -117 / 128.0 , -116 / 128.0 , -115 / 128.0 , -114 / 128.0 , -113 / 128.0
, -112 / 128.0 , -111 / 128.0 , -110 / 128.0 , -109 / 128.0 , -108 / 128.0 , -107 / 128.0 , -106 / 128.0 , -105 / 128.0 , -104 / 128.0 , -103 / 128.0 , -102 / 128.0 , -101 / 128.0 , -100 / 128.0 , -99 / 128.0 , -98 / 128.0 , -97 / 128.0
, -96 / 128.0 , -95 / 128.0 , -94 / 128.0 , -93 / 128.0 , -92 / 128.0 , -91 / 128.0 , -90 / 128.0 , -89 / 128.0 , -88 / 128.0 , -87 / 128.0 , -86 / 128.0 , -85 / 128.0 , -84 / 128.0 , -83 / 128.0 , -82 / 128.0 , -81 / 128.0
, -80 / 128.0 , -79 / 128.0 , -78 / 128.0 , -77 / 128.0 , -76 / 128.0 , -75 / 128.0 , -74 / 128.0 , -73 / 128.0 , -72 / 128.0 , -71 / 128.0 , -70 / 128.0 , -69 / 128.0 , -68 / 128.0 , -67 / 128.0 , -66 / 128.0 , -65 / 128.0
, -64 / 128.0 , -63 / 128.0 , -62 / 128.0 , -61 / 128.0 , -60 / 128.0 , -59 / 128.0 , -58 / 128.0 , -57 / 128.0 , -56 / 128.0 , -55 / 128.0 , -54 / 128.0 , -53 / 128.0 , -52 / 128.0 , -51 / 128.0 , -50 / 128.0 , -49 / 128.0
, -48 / 128.0 , -47 / 128.0 , -46 / 128.0 , -45 / 128.0 , -44 / 128.0 , -43 / 128.0 , -42 / 128.0 , -41 / 128.0 , -40 / 128.0 , -39 / 128.0 , -38 / 128.0 , -37 / 128.0 , -36 / 128.0 , -35 / 128.0 , -34 / 128.0 , -33 / 128.0
, -32 / 128.0 , -31 / 128.0 , -30 / 128.0 , -29 / 128.0 , -28 / 128.0 , -27 / 128.0 , -26 / 128.0 , -25 / 128.0 , -24 / 128.0 , -23 / 128.0 , -22 / 128.0 , -21 / 128.0 , -20 / 128.0 , -19 / 128.0 , -18 / 128.0 , -17 / 128.0
, -16 / 128.0 , -15 / 128.0 , -14 / 128.0 , -13 / 128.0 , -12 / 128.0 , -11 / 128.0 , -10 / 128.0 , -9 / 128.0 , -8 / 128.0 , -7 / 128.0 , -6 / 128.0 , -5 / 128.0 , -4 / 128.0 , -3 / 128.0 , -2 / 128.0 , -1 / 128.0
, 0 / 128.0 , 1 / 128.0 , 2 / 128.0 , 3 / 128.0 , 4 / 128.0 , 5 / 128.0 , 6 / 128.0 , 7 / 128.0 , 8 / 128.0 , 9 / 128.0 , 10 / 128.0 , 11 / 128.0 , 12 / 128.0 , 13 / 128.0 , 14 / 128.0 , 15 / 128.0
, 16 / 128.0 , 17 / 128.0 , 18 / 128.0 , 19 / 128.0 , 20 / 128.0 , 21 / 128.0 , 22 / 128.0 , 23 / 128.0 , 24 / 128.0 , 25 / 128.0 , 26 / 128.0 , 27 / 128.0 , 28 / 128.0 , 29 / 128.0 , 30 / 128.0 , 31 / 128.0
, 32 / 128.0 , 33 / 128.0 , 34 / 128.0 , 35 / 128.0 , 36 / 128.0 , 37 / 128.0 , 38 / 128.0 , 39 / 128.0 , 40 / 128.0 , 41 / 128.0 , 42 / 128.0 , 43 / 128.0 , 44 / 128.0 , 45 / 128.0 , 46 / 128.0 , 47 / 128.0
, 48 / 128.0 , 49 / 128.0 , 50 / 128.0 , 51 / 128.0 , 52 / 128.0 , 53 / 128.0 , 54 / 128.0 , 55 / 128.0 , 56 / 128.0 , 57 / 128.0 , 58 / 128.0 , 59 / 128.0 , 60 / 128.0 , 61 / 128.0 , 62 / 128.0 , 63 / 128.0
, 64 / 128.0 , 65 / 128.0 , 66 / 128.0 , 67 / 128.0 , 68 / 128.0 , 69 / 128.0 , 70 / 128.0 , 71 / 128.0 , 72 / 128.0 , 73 / 128.0 , 74 / 128.0 , 75 / 128.0 , 76 / 128.0 , 77 / 128.0 , 78 / 128.0 , 79 / 128.0
, 80 / 128.0 , 81 / 128.0 , 82 / 128.0 , 83 / 128.0 , 84 / 128.0 , 85 / 128.0 , 86 / 128.0 , 87 / 128.0 , 88 / 128.0 , 89 / 128.0 , 90 / 128.0 , 91 / 128.0 , 92 / 128.0 , 93 / 128.0 , 94 / 128.0 , 95 / 128.0
, 96 / 128.0 , 97 / 128.0 , 98 / 128.0 , 99 / 128.0 , 100 / 128.0 , 101 / 128.0 , 102 / 128.0 , 103 / 128.0 , 104 / 128.0 , 105 / 128.0 , 106 / 128.0 , 107 / 128.0 , 108 / 128.0 , 109 / 128.0 , 110 / 128.0 , 111 / 128.0
, 112 / 128.0 , 113 / 128.0 , 114 / 128.0 , 115 / 128.0 , 116 / 128.0 , 117 / 128.0 , 118 / 128.0 , 119 / 128.0 , 120 / 128.0 , 121 / 128.0 , 122 / 128.0 , 123 / 128.0 , 124 / 128.0 , 125 / 128.0 , 126 / 128.0 , 127 / 128.0 };
//
// Our wrapper is a simple classs
rtlsdrHandler::rtlsdrHandler (QSettings *s,
@@ -193,6 +174,8 @@ char manufac [256], product [256], serial [256];
gainControl -> currentText (). toInt ());
set_ppmCorrection (ppm_correction -> value());
for (int i = 0; i < 256; i ++)
convTable [i] = (-128.0 + i) / 128.0;
// and attach the buttons/sliders to the actions
connect (gainControl,
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 2)

View File

@@ -50,7 +50,7 @@ class logger;
typedef struct rtlsdr_dev rtlsdr_dev_t;
extern "C" {
typedef void (*rtlsdr_read_async_cb_t) (uint8_t *buf, uint32_t len, void *ctx);
typedef int (* pfnrtlsdr_open )(rtlsdr_dev_t **, uint32_t);
typedef int (* pfnrtlsdr_open )(rtlsdr_dev_t **, uint32_t);
typedef int (* pfnrtlsdr_close) (rtlsdr_dev_t *);
typedef int (* pfnrtlsdr_get_usb_strings) (rtlsdr_dev_t *, char *, char *, char *);
typedef int (* pfnrtlsdr_set_center_freq) (rtlsdr_dev_t *, uint32_t);
@@ -78,8 +78,8 @@ typedef int (* pfnrtlsdr_set_freq_correction)(rtlsdr_dev_t *, int);
typedef char *(* pfnrtlsdr_get_device_name)(int);
}
// This class is a simple wrapper around the
// rtlsdr library that is read in as dll (or .so file in linux)
// It does not do any processing
// rtlsdr library, the relevant functions of it
// are read in from the dll (or .so file in linux)
class rtlsdrHandler final:
public deviceHandler, public Ui_dabstickWidget {
Q_OBJECT
@@ -133,6 +133,7 @@ private:
LowPassFIR theFilter;
int currentDepth;
float convTable [256];
void reportOverflow (bool);
float m_dcI;
float m_dcQ;

View File

@@ -95,7 +95,7 @@ bool RspDuo_handler::restart (int freq) {
sdrplay_api_ErrT err;
chParams -> tunerParams. rfFreq. rfHz = (float)freq;
err =parent -> sdrplay_api_Update (chosenDevice -> dev,
err = parent -> sdrplay_api_Update (chosenDevice -> dev,
chosenDevice -> tuner,
sdrplay_api_Update_Tuner_Frf,
sdrplay_api_Update_Ext1_None);
@@ -161,13 +161,39 @@ bool RspDuo_handler::setTuner (int tuner) {
if (tuner == currentTuner)
return true;;
fprintf (stderr, "setTuner to %d (from %d)\n", tuner, currentTuner);
sdrplay_api_ErrT res =
parent -> sdrplay_api_SwapRspDuoActiveTuner (
chosenDevice -> dev,
&chosenDevice -> tuner,
sdrplay_api_RspDuo_AMPORT_1);
sdrplay_api_RspDuo_AMPORT_2);
if (res != sdrplay_api_Success) {
fprintf (stderr, "Swapping tuner failed\n");
QString error = "";
switch (res) {
case sdrplay_api_Fail:
error = "Command failed";
break;
case sdrplay_api_InvalidParam:
error = "NULL pointer or invalid operating mode";
break;
case sdrplay_api_OutOfRange:
error = "One or more parameters are set incorrectly";
break;
case sdrplay_api_HwError:
error = "Hw error occurred during tuner initialization";
break;
case sdrplay_api_RfUpdateError:
error = "Failed to update Rf frequency";
break;
case sdrplay_api_ServiceNotResponding:
error = "Communication with the service is broken";
break;
default:
error = "Unknown error";
break;
}
fprintf (stderr, "tuner switch error %s\n",
error. toLatin1 (). data ());
}
else {
fprintf (stderr, "Swapping tuner success\n");

View File

@@ -187,7 +187,7 @@ QString theAddress = QHostAddress (s). toString ();
nameOfDevice -> setText ("RTLSDR");
}
else {
theState -> setText ("not supported device");
theState -> setText ("unsupported device");
return;
}

View File

@@ -75,6 +75,8 @@
settings. batchSize = 4096;
settings. sample_bits = 16;
//
for (int i = 0; i < 256; i ++)
convTable [i] = (-128.0 + i) / 128.0;
connect (spyServer_connect, &QPushButton::clicked,
this, &spyServer_client_8::wantConnect);
#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 2)
@@ -345,25 +347,6 @@ void spyServer_client_8::connect_on () {
onConnect. store (true);
}
static
float convTable [] = {
-128 / 128.0 , -127 / 128.0 , -126 / 128.0 , -125 / 128.0 , -124 / 128.0 , -123 / 128.0 , -122 / 128.0 , -121 / 128.0 , -120 / 128.0 , -119 / 128.0 , -118 / 128.0 , -117 / 128.0 , -116 / 128.0 , -115 / 128.0 , -114 / 128.0 , -113 / 128.0
, -112 / 128.0 , -111 / 128.0 , -110 / 128.0 , -109 / 128.0 , -108 / 128.0 , -107 / 128.0 , -106 / 128.0 , -105 / 128.0 , -104 / 128.0 , -103 / 128.0 , -102 / 128.0 , -101 / 128.0 , -100 / 128.0 , -99 / 128.0 , -98 / 128.0 , -97 / 128.0
, -96 / 128.0 , -95 / 128.0 , -94 / 128.0 , -93 / 128.0 , -92 / 128.0 , -91 / 128.0 , -90 / 128.0 , -89 / 128.0 , -88 / 128.0 , -87 / 128.0 , -86 / 128.0 , -85 / 128.0 , -84 / 128.0 , -83 / 128.0 , -82 / 128.0 , -81 / 128.0
, -80 / 128.0 , -79 / 128.0 , -78 / 128.0 , -77 / 128.0 , -76 / 128.0 , -75 / 128.0 , -74 / 128.0 , -73 / 128.0 , -72 / 128.0 , -71 / 128.0 , -70 / 128.0 , -69 / 128.0 , -68 / 128.0 , -67 / 128.0 , -66 / 128.0 , -65 / 128.0
, -64 / 128.0 , -63 / 128.0 , -62 / 128.0 , -61 / 128.0 , -60 / 128.0 , -59 / 128.0 , -58 / 128.0 , -57 / 128.0 , -56 / 128.0 , -55 / 128.0 , -54 / 128.0 , -53 / 128.0 , -52 / 128.0 , -51 / 128.0 , -50 / 128.0 , -49 / 128.0
, -48 / 128.0 , -47 / 128.0 , -46 / 128.0 , -45 / 128.0 , -44 / 128.0 , -43 / 128.0 , -42 / 128.0 , -41 / 128.0 , -40 / 128.0 , -39 / 128.0 , -38 / 128.0 , -37 / 128.0 , -36 / 128.0 , -35 / 128.0 , -34 / 128.0 , -33 / 128.0
, -32 / 128.0 , -31 / 128.0 , -30 / 128.0 , -29 / 128.0 , -28 / 128.0 , -27 / 128.0 , -26 / 128.0 , -25 / 128.0 , -24 / 128.0 , -23 / 128.0 , -22 / 128.0 , -21 / 128.0 , -20 / 128.0 , -19 / 128.0 , -18 / 128.0 , -17 / 128.0
, -16 / 128.0 , -15 / 128.0 , -14 / 128.0 , -13 / 128.0 , -12 / 128.0 , -11 / 128.0 , -10 / 128.0 , -9 / 128.0 , -8 / 128.0 , -7 / 128.0 , -6 / 128.0 , -5 / 128.0 , -4 / 128.0 , -3 / 128.0 , -2 / 128.0 , -1 / 128.0
, 0 / 128.0 , 1 / 128.0 , 2 / 128.0 , 3 / 128.0 , 4 / 128.0 , 5 / 128.0 , 6 / 128.0 , 7 / 128.0 , 8 / 128.0 , 9 / 128.0 , 10 / 128.0 , 11 / 128.0 , 12 / 128.0 , 13 / 128.0 , 14 / 128.0 , 15 / 128.0
, 16 / 128.0 , 17 / 128.0 , 18 / 128.0 , 19 / 128.0 , 20 / 128.0 , 21 / 128.0 , 22 / 128.0 , 23 / 128.0 , 24 / 128.0 , 25 / 128.0 , 26 / 128.0 , 27 / 128.0 , 28 / 128.0 , 29 / 128.0 , 30 / 128.0 , 31 / 128.0
, 32 / 128.0 , 33 / 128.0 , 34 / 128.0 , 35 / 128.0 , 36 / 128.0 , 37 / 128.0 , 38 / 128.0 , 39 / 128.0 , 40 / 128.0 , 41 / 128.0 , 42 / 128.0 , 43 / 128.0 , 44 / 128.0 , 45 / 128.0 , 46 / 128.0 , 47 / 128.0
, 48 / 128.0 , 49 / 128.0 , 50 / 128.0 , 51 / 128.0 , 52 / 128.0 , 53 / 128.0 , 54 / 128.0 , 55 / 128.0 , 56 / 128.0 , 57 / 128.0 , 58 / 128.0 , 59 / 128.0 , 60 / 128.0 , 61 / 128.0 , 62 / 128.0 , 63 / 128.0
, 64 / 128.0 , 65 / 128.0 , 66 / 128.0 , 67 / 128.0 , 68 / 128.0 , 69 / 128.0 , 70 / 128.0 , 71 / 128.0 , 72 / 128.0 , 73 / 128.0 , 74 / 128.0 , 75 / 128.0 , 76 / 128.0 , 77 / 128.0 , 78 / 128.0 , 79 / 128.0
, 80 / 128.0 , 81 / 128.0 , 82 / 128.0 , 83 / 128.0 , 84 / 128.0 , 85 / 128.0 , 86 / 128.0 , 87 / 128.0 , 88 / 128.0 , 89 / 128.0 , 90 / 128.0 , 91 / 128.0 , 92 / 128.0 , 93 / 128.0 , 94 / 128.0 , 95 / 128.0
, 96 / 128.0 , 97 / 128.0 , 98 / 128.0 , 99 / 128.0 , 100 / 128.0 , 101 / 128.0 , 102 / 128.0 , 103 / 128.0 , 104 / 128.0 , 105 / 128.0 , 106 / 128.0 , 107 / 128.0 , 108 / 128.0 , 109 / 128.0 , 110 / 128.0 , 111 / 128.0
, 112 / 128.0 , 113 / 128.0 , 114 / 128.0 , 115 / 128.0 , 116 / 128.0 , 117 / 128.0 , 118 / 128.0 , 119 / 128.0 , 120 / 128.0 , 121 / 128.0 , 122 / 128.0 , 123 / 128.0 , 124 / 128.0 , 125 / 128.0 , 126 / 128.0 , 127 / 128.0 };
void spyServer_client_8::data_ready () {
uint8_t buffer_8 [settings. batchSize * 2];

View File

@@ -67,6 +67,7 @@ struct {
int auto_gain;
} settings;
float convTable [256];
private slots:
void setConnection ();
void wantConnect ();

View File

@@ -42,7 +42,7 @@
/**
* \class ficHandler
* We get in - through process_ficBlock - the FIC data
* in units of 768 bits.
* in units of 768 bits (i.e. FIC_BLOCKSIZE / 4)
* We follow the standard and apply convolution decoding and
* puncturing.
* The data is sent through to the fib processor
@@ -65,7 +65,7 @@ int16_t shiftRegister [9] = {1, 1, 1, 1, 1, 1, 1, 1, 1};
ficErrors = 0;
ficBits = 0;
for (int i = 0; i < 768; i ++) {
for (int i = 0; i < FIC_BLOCKSIZE / 4; i ++) {
PRBS [i] = shiftRegister [8] ^ shiftRegister [4];
for (int j = 8; j > 0; j --)
shiftRegister [j] = shiftRegister [j - 1];
@@ -234,7 +234,7 @@ int16_t inputCount = 0;
bitBuffer_out [i] ^= PRBS [i];
for (int i = 0; i < FIC_BLOCKSIZE / 4; i ++)
fibBits [ficno * 768 + i] = bitBuffer_out [i];
fibBits [ficno * FIC_BLOCKSIZE / 4 + i] = bitBuffer_out [i];
/**
* each of the fib blocks is protected by a crc
* (we know that there are three fib blocks each time we are here)

View File

@@ -67,8 +67,6 @@
#include <QScreen>
#include <QDomElement>
static float peakLeftDamped = 0;
static float peakRightDamped = 0;
#if defined (__MINGW32__) || defined (_WIN32)
#include <windows.h>
__int64 FileTimeToInt64 (FILETIME & ft) {
@@ -328,6 +326,10 @@ QString h;
else
theNewDisplay. hide ();
peakLeftDamped = 0;
peakRightDamped = 0;
audioTeller = 0; // counting audio frames
pauzeSlideTeller = 0; // counting pause slides
labelStyle = value_s (dabSettings_p, DAB_GENERAL, LABEL_COLOR,
LABEL_STYLE);
QFont font = serviceLabel -> font ();
@@ -1176,10 +1178,9 @@ void RadioInterface::newAudio (int amount, int rate,
if (!running. load ())
return;
static int teller = 0;
teller ++;
if (teller > 10) {
teller = 0;
audioTeller ++;
if (audioTeller > 10) {
audioTeller = 0;
if (!techWindow_p -> isHidden ())
techWindow_p -> showRate (rate, ps, sbr);
audiorateLabel -> setStyleSheet ("color:cyan");
@@ -1309,8 +1310,9 @@ void RadioInterface::TerminateProcess () {
stopFrameDumping ();
stopSourceDumping ();
stopAudioDumping ();
theOFDMHandler -> stop ();
if (soundOut_p)
if (!theOFDMHandler. isNull ())
theOFDMHandler -> stop ();
if (soundOut_p != nullptr)
delete soundOut_p;
theLogger. log (logger::LOG_RADIO_STOPS);
usleep (1000); // pending signals
@@ -3591,14 +3593,13 @@ int h = 3 * w / 4;
void RadioInterface::show_pauzeSlide () {
QPixmap p;
static int teller = 0;
QString slideName = ":res/radio-pictures/pauze-slide-%1.png";
pauzeTimer. stop ();
// int nr = rand () % 11;
slideName = slideName. arg (teller);
slideName = slideName. arg (pauzeSlideTeller);
if (p. load (slideName, "png")) {
QString tooltipText;
switch (teller) {
switch (pauzeSlideTeller) {
case 2:
tooltipText = "homebrew 60-ies";
break;
@@ -3630,7 +3631,7 @@ QString slideName = ":res/radio-pictures/pauze-slide-%1.png";
}
pauzeTimer. start (1 * 30 * 1000);
teller = (teller + 1) % 11;
pauzeSlideTeller = (pauzeSlideTeller + 1) % 11;
}
//////////////////////////////////////////////////////////////////////////
// Experimental: handling eti

View File

@@ -345,6 +345,10 @@ private:
size_t previous_idle_time;
size_t previous_total_time;
float peakLeftDamped;
float peakRightDamped;
int audioTeller;
int pauzeSlideTeller;
QPixmap fetchAnnouncement (int id);
QString convertTime (int, int, int, int, int);

View File

@@ -38,16 +38,16 @@ struct protectionProfile {
int16_t PI3;
int16_t PI4;
} profileTable [] = {
{32, 5, 3, 4, 17, 0, 5, 3, 2, -1},
{32, 4, 3, 3, 18, 0, 11, 6, 5, -1},
{32, 3, 3, 4, 14, 3, 15, 9, 6, 8},
{32, 2, 3, 4, 14, 3, 22, 13, 8, 13},
{32, 5, 3, 4, 17, 0, 5, 3, 2, -1},
{32, 4, 3, 3, 18, 0, 11, 6, 5, -1},
{32, 3, 3, 4, 14, 3, 15, 9, 6, 8},
{32, 2, 3, 4, 14, 3, 22, 13, 8, 13},
{32, 1, 3, 5, 13, 3, 24, 17, 12, 17},
{48, 5, 4, 3, 26, 3, 5, 4, 2, 3},
{48, 4, 3, 4, 26, 3, 9, 6, 4, 6},
{48, 3, 3, 4, 26, 3, 15, 10, 6, 9},
{48, 2, 3, 4, 26, 3, 24, 14, 8, 15},
{48, 5, 4, 3, 26, 3, 5, 4, 2, 3},
{48, 4, 3, 4, 26, 3, 9, 6, 4, 6},
{48, 3, 3, 4, 26, 3, 15, 10, 6, 9},
{48, 2, 3, 4, 26, 3, 24, 14, 8, 15},
{48, 1, 3, 5, 25, 3, 24, 18, 13, 18},
//
// Thanks to Pr2 who discovered that the tables for 56 were missing
@@ -134,7 +134,6 @@ int16_t findIndex (int16_t bitRate, int16_t protLevel) {
/**
* the table is based on chapter 11 of the DAB standard.
*
* \brief uep_deconvolve
*
* The bitRate and the protectionLevel determine the