NXDN48 Voice Decoding is Good Now

NXDN48 Voice Decoding is Good Now

Just use squelch if using SDR++ or GQRX to feed it. RTL-SDR input mode and NXDN still makes tons of false positives, and doesn't work well at all. May just be a bad signal issue but still think the RTLSDR input uses wrong center freq/tuned freq/"optimizations", need to get back to that some time, maybe also implement squelch settings on rtl_fm mode.

Thanks to LouisErigHerve for his 'Improved NXDN Detection' update on his version, implemented it and works SO MUCH BETTER!

May still disable the if ((state->lastsynctype == 9) || (state->lastsynctype == 17)) condition in dsd_frame_sync.c if I think it leads to more consistent decoding vs false positives. USE SQUELCH!
This commit is contained in:
lwvmobile
2022-01-31 23:54:14 -05:00
committed by GitHub
parent 93ccc668d7
commit 1e95db0977
4 changed files with 134 additions and 36 deletions

View File

@@ -31,7 +31,7 @@ printFrameInfo (dsd_opts * opts, dsd_state * state)
level = (int) state->max / 164;
if (opts->verbose > 0)
{
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
if (state->nac != 0)
{
@@ -78,10 +78,10 @@ processFrame (dsd_opts * opts, dsd_state * state)
state->minref = state->min;
}
if ((state->synctype == 8) || (state->synctype == 9))
if ((state->synctype == 8) || (state->synctype == 9)) //lets make this NOT do this...maybe...
{
state->rf_mod = 2;
state->nac = 0;
//state->rf_mod = 2; //wrong type of modulation HERE HERE
//state->nac = 0;
state->lastsrc = 0;
state->lasttg = 0;
if (opts->errorbars == 1)
@@ -89,7 +89,7 @@ processFrame (dsd_opts * opts, dsd_state * state)
if (opts->verbose > 0)
{
level = (int) state->max / 164;
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
}
state->nac = 0;
@@ -103,8 +103,8 @@ processFrame (dsd_opts * opts, dsd_state * state)
}
else if ((state->synctype == 16) || (state->synctype == 17))
{
state->rf_mod = 2;
state->nac = 0;
//state->rf_mod = 2;
//state->nac = 0;
state->lastsrc = 0;
state->lasttg = 0;
if (opts->errorbars == 1)
@@ -112,7 +112,7 @@ processFrame (dsd_opts * opts, dsd_state * state)
if (opts->verbose > 0)
{
level = (int) state->max / 164;
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
}
state->nac = 0;
@@ -134,7 +134,7 @@ processFrame (dsd_opts * opts, dsd_state * state)
if (opts->verbose > 0)
{
level = (int) state->max / 164;
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
}
state->nac = 0;
@@ -156,7 +156,7 @@ processFrame (dsd_opts * opts, dsd_state * state)
if (opts->verbose > 0)
{
level = (int) state->max / 164;
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
}
state->nac = 0;
@@ -179,7 +179,7 @@ processFrame (dsd_opts * opts, dsd_state * state)
if (opts->verbose > 0)
{
level = (int) state->max / 164;
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
}
if ((state->synctype == 11) || (state->synctype == 12))
@@ -233,7 +233,7 @@ processFrame (dsd_opts * opts, dsd_state * state)
if (opts->verbose > 0)
{
level = (int) state->max / 164;
//printf ("inlvl: %2i%% ", level);
printf ("inlvl: %2i%% ", level);
}
}
if ((opts->mbe_out_dir[0] != 0) && (opts->mbe_out_f == NULL))