1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2024-11-29 19:28:47 -05:00
sdrangel/plugins/channelrx/demoddatv
Jon Beniston b760c44101 Add support for building additional 3rd party libraries.
Update MacOS bundling to use macdeployqt rather than fixup_bundle, so all Qt dependencies are included.
Update building of some libraries on MacOS, so that library paths in dylibs are build paths, rather than install paths, so macdeployqt can find them.
2022-05-16 13:48:29 +01:00
..
ldpctool DATV demod: leandvb: more memory management fixes and code formatting 2021-03-22 02:06:26 +01:00
leansdr DATV demod: GUI: more accurate display of video thread active and MCOD detection. Correction of RRC=0.2 bug. Small optimizations in dvbs2.h match_frame 2021-03-31 05:03:10 +02:00
CMakeLists.txt Add support for building additional 3rd party libraries. 2022-05-16 13:48:29 +01:00
datvconstellation.h DATV demod: API updates and small fixes 2021-11-03 21:56:33 +01:00
datvdemod.cpp v7: API: added workspace handling for device, spectrum, feature and channel. Implements #1242 2022-05-13 22:24:48 +02:00
datvdemod.h v7: API: added workspace handling for device, spectrum, feature and channel. Implements #1242 2022-05-13 22:24:48 +02:00
datvdemodbaseband.cpp DATV Demod: request channel sample rate twice the symbol rate not the whole baseband 2021-03-31 03:25:00 +02:00
datvdemodbaseband.h Set label in AudioFifo to identify the controlling component in error messages. Use a signal to retrieve the channel index in device set appropriately 2022-03-18 21:53:53 +01:00
datvdemodgui.cpp Massive UI revamping (v7): Restored channel highlighted by cursor function. Part of #1213 2022-04-26 00:42:26 +02:00
datvdemodgui.h Massive UI revamping (v7): Fixed sizing of channel windows. Part of #1209 2022-04-24 12:28:56 +02:00
datvdemodgui.ui Massive UI revamping (v7): added channels 2022-04-12 16:20:45 +02:00
datvdemodplugin.cpp Updated main and plugin versions 2022-05-14 13:16:33 +02:00
datvdemodplugin.h Channel plugins: use specialized ChannelGUI superclass. Handle GUI lifecycle in MainWindow 2020-10-04 22:16:09 +02:00
datvdemodreport.cpp Rx plugins: refactoring of classes (2) 2019-12-04 07:20:05 +01:00
datvdemodreport.h Rx plugins: refactoring of classes (2) 2019-12-04 07:20:05 +01:00
datvdemodsettings.cpp Massive UI revamping (v7): persistent channel show/hide 2022-04-12 18:27:27 +02:00
datvdemodsettings.h Massive UI revamping (v7): persistent channel show/hide 2022-04-12 18:27:27 +02:00
datvdemodsink.cpp DATV demod: API updates and small fixes 2021-11-03 21:56:33 +01:00
datvdemodsink.h Set label in AudioFifo to identify the controlling component in error messages. Use a signal to retrieve the channel index in device set appropriately 2022-03-18 21:53:53 +01:00
datvdemodwebapiadapter.cpp REST API: config: added DATV demodulator 2019-08-11 12:47:51 +02:00
datvdemodwebapiadapter.h REST API: config: added DATV demodulator 2019-08-11 12:47:51 +02:00
datvdvbs2constellation.h DATV demod: leandvb: replace custom complex by std::complex 2021-03-29 06:00:41 +02:00
datvdvbs2ldpcdialog.cpp DATV: enhancement and fixes to DVBS2 external LDPC tool process. Implements #804 2021-03-10 07:47:26 +01:00
datvdvbs2ldpcdialog.h MSVC: removed wrong dll exports in plugins 2021-03-07 09:25:44 +01:00
datvdvbs2ldpcdialog.ui DATV demod: pushed LDPC tool trial limit to 50 2021-03-23 08:36:08 +01:00
datvgaugelabel.h DATV: Display MER 2021-02-22 19:29:16 +01:00
datvideorender.cpp DATV Demod - Make AVCodecs const 2022-02-06 09:48:27 +00:00
datvideorender.h DATV demod: API updates and small fixes 2021-11-03 21:56:33 +01:00
datvideostream.cpp DATV demod: FIFO status event: pass data by copy instead of reference 2021-04-12 00:31:47 +02:00
datvideostream.h DATV demod: FIFO status event: pass data by copy instead of reference 2021-04-12 00:31:47 +02:00
datvmeter.h DATV demod: de-couple MER and CNR GUIs from core 2021-11-03 21:56:33 +01:00
datvudpstream.cpp DATV demod: FIFO status event: pass data by copy instead of reference 2021-04-12 00:31:47 +02:00
datvudpstream.h DATV demod: FIFO status event: pass data by copy instead of reference 2021-04-12 00:31:47 +02:00
datvvideoplayer.h DATV demod: fixed compilation issue for Qt < 5.14 2021-04-12 11:41:21 +02:00
readme.md Fix typing errors in readme's 2022-05-15 12:39:57 +02:00

DATV demodulator plugin

Specific dependencies

  • ffmpeg
  • libavcodec-dev
  • libavformat-dev

LeanSDR framework from F4DAV is intensively used. It has been integrated in the source tree and modified to suit SDRangel specific needs.

Introduction

This plugin can be used to view digital amateur analog television transmissions a.k.a DATV. The only supported standard for now is DVB-S in various modulations. The standard modulation is QPSK but experimental configurations with other PSK modulations (BPSK, 8PSK, QAMn) can be selected.

The whole bandwidth available to the channel is used. That is it runs at the device sample rate possibly downsampled by a power of two in the source plugin.

⚠ Note that DVB-S2 support is experimental. You may need to move some settings back and forth to achieve constellation lock and decode. For example change mode or slightly move back and forth center frequency.

Interface

The top and bottom bars of the channel window are described here

DATV Demodulator plugin GUI

A: RF settings

DATV Demodulator plugin RF GUI

A.1: Channel frequency shift

This is the shift of channel center frequency from RF passband center frequency

A.2: RF bandwidth

Sets the bandwidth of the channel filter

A.3: Channel power

Power of signal received in the channel (dB)

B: DATV section

DATV Demodulator plugin DATV GUI

B.3: MER estimation

This gauge gives the MER estimation. The averaged value appears on the right.

B.4: CNR estimation

This gauge gives the CNR estimation. The averaged value appears on the right.

B.5: Output transport stream to UDP

Activate output of transport stream to UDP with 7 TS blocks per UDP frame

B.6: UDP address

This is the address of the TS UDP

B.7: UDP port

This is the port of the TS UDP

B.8: UDP streaming indicator

Indicator turns green if UDP data is streaming to destination

B.9: Video player enable and indicator

Use the checkbox to enable or disable the internal video player. The indicator next turns green if the video player thread is active.

Use this control to disable the video player if it causes too many crashes...

B.1: Symbol constellation

This is the constellation of the PSK or QAM synchronized signal. When the demodulation parameters are set correctly (modulation type, symbol rate and filtering) and signal is strong enough to recover symbol synchronization the purple dots appear close to the white crosses. White crosses represent the ideal symbols positions in the I/Q plane.

B.2a: DATV signal settings (all standards)

DATV Demodulator plugin DATV2 GUI

B.2a.1: DATV standard
  • DVB-S: DVB-S
  • DVB-S2: DVB-S2 and some DVB-S2X
B.2a.2: Modulation type

Depends on the standard.

  • DVB-S: Normally only QPSK and BPSK (later addition) are supported in the standard but amateur radio use has a little bit abused of the standard so PSK6, QAM16, QAM64 and QAM256 are also supported
  • DVB-S2: QPSK, PSK8, APSK16, APSK32, APSK64e (DVB-S2X)

The constellations are as follows:

  • BPSK: binary phase shift keying. Symbols are in π/4 and -3π/4 positions.
  • QPSK: quadrature phase shift keying. Symbols are in π/4, 3π/4, -3π/4 and -π/4 positions.
  • PSK8: 8 phase shift keying a.k.a. π/4 QPSK. Symbols are in 0, π/4, π/2, 3π/4, π, -3π/4, -π/2 and -π/4 positions
  • APSK16: amplitude and phase shift keying with 16 symbols
  • APSK32: amplitude and phase shift keying with 32 symbols
  • APSK64e: amplitude and phase shift keying with 64 symbols
  • QAM16: quadrature amplitude modulation with 16 symbols
  • QAM64: quadrature amplitude modulation with 64 symbols
  • QAM256: quadrature amplitude modulation with 256 symbols
B.2a.3: Symbol rate

This controls the expected symbol rate in symbols per second

B.2a.4: FEC rate

Dpends on the standard and modulation

  • DVB-S with all modulations: 1/2 , 2/3 , 3/4, 5/6 and 7/8.
  • DVB-S2 and QPSK: 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5, 5/6, 8/9, 9/10
  • DVB-S2 and PSK8: 3/5, 2/3, 3/4, 5/6, 8/9, 9/10
  • APSK16 (DVB-S2): 2/3, 3/4, 4/5, 5/6, 8/9, 9/10
  • APSK32 (DVB-S2): 3/4, 4/5, 5/6, 8/9, 9/10
  • APSK64E (DVB-S2): 4/5, 5/6
B.2a.5: Notch filter

LeanSDR feature: attempts to fix signal spectrum shape by eliminating peaks. This is the number of peaks to be tracked. It is safer to keep the 0 default (no notch).

B.2a.6: Fast lock (DVB-S only)

Faster signal decode but may yield more errors at startup.

B.2a.7: Allow drift (DVB-S only)

Small frequency drift compensation.

B.2a.8: Hard metric (DVB-S only)

Constellation hardening (LeanSDR feature).

B.2a.9: Viterbi (DVB-S only)

Viterbi decoding. Be aware that this is CPU intensive. Should be limited to FEC 1/2 , 2/3 and 3/4 in practice.

B.2a.10: Reset to defaults

Push this button when you are lost...

B.2a.11: Filter
  • FIR Linear
  • FIR Nearest
  • RRC (Root Raised Cosine).

When RRC is selected the additional controls for roll-off factor (%) and envelope excursion (dB) are effective. The lower the roll-off factor the steeper the sides of the filter. A higher value of the envelope excursion may help on weak signals.

Practically the RRC filter is mandatory for proper decoding of normal to weak signals. Strong signals may decode in any condition.

B.2a.12: Amount of data decoded

Amount data received in the video player. If the video player is disabled this is the amount of data sent via UDP. Automatically adjusts unit (kB, MB, ...)

B.2a.13: Stream speed

Current data flow in the video player. If the video player is disabled this is the flow sent via UDP.

B.2a.14: Buffer status

Gauge that shows percentage of video player buffer queue length

B.2b: DATV signal settings (DVB-S2 specific)

DATV Demodulator plugin DATV3 GUI

B.2b.3: MODCOD status

In addition to the controls a MODCOD status text appears on the right of the standard selector (1) that give the mode and code rate as retrieved from MODCOD information. When the MODCOD information has triggered the automatic mode and rate selection (2) and (4) the text background turns to green.

B.2b.2 and 4: Mode and rate selection

The mode and rate selection can be done manually but if a discrepancy in the number of bits per symbol appears compared to the MODCOD information then the MODCOD information takes precedence and the selection is changed automatically and the status background (3) turns to green.

B.2b.5: DVB-S specific controls

The controls specific to DVB-S are disabled and greyed out. These are: Fast Lock, Allow Drift, Hard Metric and Viterbi.

B.2b.6: DVB-S2 specific - Soft LDPC decoder

This is for experimenters only working in Linux. It can be used to decode signals lower that ~10 db MER which is the limit of LDPC hard decoding as explained next (B.2b.7). Video degrades progressively down to about 7.5 dB MER and drops below this limit.

Runs the ldpctool program for soft LDPC decoding. Frames are sent on its standard input and decoded frames retrieved from its standard output. Two processes executing ldpctool are spawned but so far it seems that only one is effectively used.

Right clicking on this control opens a dialog where you can choose:

  • The ldpctool executable. You have to use the ldpctool binary produced by the build of SDRangel.
  • The maximum of retries in LDPC decoding from 1 to 8.
B.2b.7: DVB-S2 specific - LDPC maximum number of bit flips allowed

May vary between 0 and 500. On strong signals (17 dB SNR or more) you may set it to 0 thus saving processing on occasional bit flips that will not cause significant degradation. When SNR decreases you may set it to a medium value of about 200 allowing bit flips corrections to take place and decoding of signals down to about 10dB MER. A higher value towards the maximum (500) will not make a significant difference and is allowed mostly for experimentation.

If you have enough processing power it is fine to always leave it at 200.

Comparatively:

  • with max = 0 you need ~15 dB MER which corresponds to ~16 dB CNR
  • with max = 200 you need ~10 dB MER which corresponds to ~13 dB CNR

C: DATV video stream

DATV Demodulator plugin video GUI

C.1: Image

The decoded video is displayed here

C.2: Stream information

C.3: Stream decoding status

These non clickable checkboxes report the decoding status (checked when OK):

  • data: reception on going
  • transport: transport stream detected
  • video: video data detected
  • decoding: video being decoded

C.4: Video mute

Toggle button to pause/run video decoding. This also indicates the video status:

  • Grey (no color): there is no video stream
  • Green: a video stream is present and successfully decoded
  • Red: a video stream is present but decoding fails

C.5: Audio mute

Toggle button to pause/run audio decoding. This also indicates the audio status:

  • Grey (no color): there is no audio stream
  • Green: an audio stream is present and successfully decoded
  • Red: an audio stream is present but decoding fails

In addition right clicking on the button will give you access to the audio device selection dialog

C.6: Audio volume

Show the audio volume on a 0 to 100 scale. The actual coefficient applied to the audio samples follows a logarithmic rule where 0 corresponds to 0.01, 50 to 0.1 and 100 to 1.0

C.7: Audio volume control

Use this slider to control the value (0 to 100) of the audio volume.