mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-29 12:52:28 -04:00
decode_fullaplist updated. the decoding threshold is now adjusted in function of the number of codewords passed
This commit is contained in:
parent
cbfb6dd250
commit
5a3dd69331
@ -681,8 +681,7 @@ int q65_decode_fullaplist(q65_codec_ds *codec,
|
|||||||
int k;
|
int k;
|
||||||
int nK, nN, nM;
|
int nK, nN, nM;
|
||||||
|
|
||||||
float llh;
|
float llh, maxllh, llh_threshold;
|
||||||
float maxllh = Q65_LLH_THRESHOLD-1; // set to a value less than the threshold
|
|
||||||
int maxcw = -1; // index of the most likely codeword
|
int maxcw = -1; // index of the most likely codeword
|
||||||
const int *pCw;
|
const int *pCw;
|
||||||
|
|
||||||
@ -693,6 +692,12 @@ int q65_decode_fullaplist(q65_codec_ds *codec,
|
|||||||
nN = q65_get_codeword_length(codec);
|
nN = q65_get_codeword_length(codec);
|
||||||
nM = q65_get_alphabet_size(codec);
|
nM = q65_get_alphabet_size(codec);
|
||||||
|
|
||||||
|
// we adjust the llh threshold in order to mantain the
|
||||||
|
// same false decode rate independently from the size
|
||||||
|
// of the list
|
||||||
|
llh_threshold = Q65_LLH_THRESHOLD + logf(1.0f*nCodewords/3);
|
||||||
|
maxllh = llh_threshold; // at least one llh should be larger than the threshold
|
||||||
|
|
||||||
// compute codewords log likelihoods and find max
|
// compute codewords log likelihoods and find max
|
||||||
pCw = pCodewords; // start from the first codeword
|
pCw = pCodewords; // start from the first codeword
|
||||||
for (k=0;k<nCodewords;k++) {
|
for (k=0;k<nCodewords;k++) {
|
||||||
@ -719,9 +724,6 @@ int q65_decode_fullaplist(q65_codec_ds *codec,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// helper functions -------------------------------------------------------------
|
// helper functions -------------------------------------------------------------
|
||||||
|
|
||||||
int _q65_get_message_length(const qracode *pCode)
|
int _q65_get_message_length(const qracode *pCode)
|
||||||
@ -874,5 +876,3 @@ static void _q65_crc12(int *y, int *x, int sz)
|
|||||||
y[0] = sr&0x3F;
|
y[0] = sr&0x3F;
|
||||||
y[1] = (sr>>6);
|
y[1] = (sr>>6);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
// Verify loglikelihood after successful decoding
|
// Verify loglikelihood after successful decoding
|
||||||
#define Q65_CHECKLLH
|
#define Q65_CHECKLLH
|
||||||
// Max codeword list size in q65_decode_fullaplist
|
// Max codeword list size in q65_decode_fullaplist
|
||||||
#define Q65_FULLAPLIST_SIZE 64
|
#define Q65_FULLAPLIST_SIZE 256
|
||||||
|
|
||||||
// maximum number of weights for the fast-fading metric evaluation
|
// maximum number of weights for the fast-fading metric evaluation
|
||||||
#define Q65_FASTFADING_MAXWEIGTHS 65
|
#define Q65_FASTFADING_MAXWEIGTHS 65
|
||||||
|
Loading…
x
Reference in New Issue
Block a user