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:
22
README.md
22
README.md
@@ -4,19 +4,6 @@
|
||||
|
||||

|
||||
|
||||
-------------------------------------------------------------------------
|
||||
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;
|
||||
|
@@ -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" "$@"
|
||||
|
@@ -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
BIN
qt-dab-6.9.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
@@ -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 |
BIN
res/read_me/Qt_DAB_6.9.2.png
Normal file
BIN
res/read_me/Qt_DAB_6.9.2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 133 KiB |
@@ -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;
|
||||
|
@@ -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)
|
||||
|
@@ -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;
|
||||
|
@@ -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");
|
||||
|
@@ -187,7 +187,7 @@ QString theAddress = QHostAddress (s). toString ();
|
||||
nameOfDevice -> setText ("RTLSDR");
|
||||
}
|
||||
else {
|
||||
theState -> setText ("not supported device");
|
||||
theState -> setText ("unsupported device");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -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];
|
||||
|
||||
|
@@ -67,6 +67,7 @@ struct {
|
||||
int auto_gain;
|
||||
} settings;
|
||||
|
||||
float convTable [256];
|
||||
private slots:
|
||||
void setConnection ();
|
||||
void wantConnect ();
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user