f4exb / dsdcc

Digital Speech Decoder (DSD) rewritten as a C++ library
286 stars 60 forks source link

data used prior to FEC in DSDYSF::procesVFRFrame #64

Open VE3RQX opened 2 months ago

VE3RQX commented 2 months ago

In DSDYSF::procesVFR(), there is a call to a function scrambleVFR() which is given a quantity ("seed") that is computed from data (the first 12 entries in m_vfrBitsRaw) that has not yet seen a FEC decoder.

scrambleVFR() has the property that a single bit error in that seed would ruin most of the 20ms VCH -- the Golay (23,12) decoders would likely be overwhelmed.

A quick test confirms this theory: we force an error by placing:

m_vfrBitsRaw[0] ^= 1;

on line 802 of ysf.cpp, just before the seed is computed. Rebuild. Then set a YSF radio to its "VW" mode -- I used a Yaesu FT5D -- and transmit: dsdcc produces mangled audio.

Remove that line and all is well.

github-actions[bot] commented 4 days ago

This issue is going to be closed due to inactivity