From: drowe67 Date: Mon, 15 Jun 2015 22:00:49 +0000 (+0000) Subject: some tweaks and default optimisation to support freedv X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=821100a94306d919707bca41c7202709ba966eda;p=freetel-svn-tracking.git some tweaks and default optimisation to support freedv git-svn-id: https://svn.code.sf.net/p/freetel/code@2192 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/CMakeLists.txt b/codec2-dev/CMakeLists.txt index f74643f2..b64f4fd0 100644 --- a/codec2-dev/CMakeLists.txt +++ b/codec2-dev/CMakeLists.txt @@ -48,7 +48,7 @@ message(STATUS "codec2 version: ${CODEC2_VERSION}") # Set default build type if(NOT CMAKE_BUILD_TYPE) - set(CMAKE_BUILD_TYPE "Debug") + set(CMAKE_BUILD_TYPE "Release") endif() # Set default C++ flags. diff --git a/codec2-dev/src/codec2_cohpsk.h b/codec2-dev/src/codec2_cohpsk.h index 8e242750..2b578601 100644 --- a/codec2-dev/src/codec2_cohpsk.h +++ b/codec2-dev/src/codec2_cohpsk.h @@ -46,7 +46,7 @@ struct COHPSK *cohpsk_create(void); void cohpsk_destroy(struct COHPSK *coh); void cohpsk_mod(struct COHPSK *cohpsk, COMP tx_fdm[], int tx_bits[]); void cohpsk_clip(COMP tx_fdm[]); -void cohpsk_demod(struct COHPSK *cohpsk, float rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin_frame); +void cohpsk_demod(struct COHPSK *cohpsk, float rx_bits[], int *sync, COMP rx_fdm[], int *nin_frame); void cohpsk_get_demod_stats(struct COHPSK *cohpsk, struct MODEM_STATS *stats); #endif diff --git a/codec2-dev/src/cohpsk.c b/codec2-dev/src/cohpsk.c index cf5b5731..65ed6f53 100644 --- a/codec2-dev/src/cohpsk.c +++ b/codec2-dev/src/cohpsk.c @@ -928,7 +928,7 @@ void rate_Fs_rx_processing(struct COHPSK *coh, COMP ch_symb[][COHPSK_NC*ND], COM \*---------------------------------------------------------------------------*/ -void cohpsk_demod(struct COHPSK *coh, float rx_bits[], int *reliable_sync_bit, COMP rx_fdm[], int *nin_frame) +void cohpsk_demod(struct COHPSK *coh, float rx_bits[], int *sync_good, COMP rx_fdm[], int *nin_frame) { COMP ch_symb[NSW*NSYMROWPILOT][COHPSK_NC*ND]; int i, j, sync, anext_sync, next_sync, nin, r, c; @@ -1036,10 +1036,10 @@ void cohpsk_demod(struct COHPSK *coh, float rx_bits[], int *reliable_sync_bit, C /* if we are in sync complete demodulation with symbol rate processing */ - *reliable_sync_bit = 0; + *sync_good = 0; if ((next_sync == 1) || (sync == 1)) { qpsk_symbols_to_bits(coh, rx_bits, coh->ct_symb_ff_buf); - *reliable_sync_bit = 1; + *sync_good = 1; } sync = sync_state_machine(coh, sync, next_sync); diff --git a/codec2-dev/src/cohpsk_demod.c b/codec2-dev/src/cohpsk_demod.c index c5375d56..eb755439 100644 --- a/codec2-dev/src/cohpsk_demod.c +++ b/codec2-dev/src/cohpsk_demod.c @@ -49,7 +49,7 @@ int main(int argc, char *argv[]) float rx_bits[COHPSK_BITS_PER_FRAME]; COMP rx_fdm[COHPSK_MAX_SAMPLES_PER_FRAME]; short rx_fdm_scaled[COHPSK_MAX_SAMPLES_PER_FRAME]; - int frames, reliable_sync_bit, nin_frame; + int frames, sync, nin_frame; float *rx_amp_log; float *rx_phi_log; COMP *rx_symb_log; @@ -114,9 +114,9 @@ int main(int argc, char *argv[]) rx_fdm[i].imag = 0.0; } - cohpsk_demod(cohpsk, rx_bits, &reliable_sync_bit, rx_fdm, &nin_frame); + cohpsk_demod(cohpsk, rx_bits, &sync, rx_fdm, &nin_frame); - if (reliable_sync_bit) { + if (sync) { fwrite(rx_bits, sizeof(float), COHPSK_BITS_PER_FRAME, fout); if (oct) { diff --git a/codec2-dev/src/freedv_api.c b/codec2-dev/src/freedv_api.c index d4fbc438..efb69192 100644 --- a/codec2-dev/src/freedv_api.c +++ b/codec2-dev/src/freedv_api.c @@ -435,7 +435,7 @@ int freedv_floatrx(struct freedv *f, short speech_out[], float demod_in[]) { int freedv_comprx(struct freedv *f, short speech_out[], COMP demod_in[]) { assert(f != NULL); int bits_per_codec_frame, bytes_per_codec_frame, bits_per_fdmdv_frame; - int reliable_sync_bit, i, j, bit, byte, nin_prev, nout, k; + int sync, i, j, bit, byte, nin_prev, nout, k; int recd_codeword, codeword1, data_flag_index, n_ascii; short abit[1]; char ascii_out; @@ -449,12 +449,14 @@ int freedv_comprx(struct freedv *f, short speech_out[], COMP demod_in[]) { bytes_per_codec_frame = (bits_per_codec_frame + 7) / 8; if (f->mode == FREEDV_MODE_1600) { + int reliable_sync_bit; + bits_per_fdmdv_frame = fdmdv_bits_per_frame(f->fdmdv); nin_prev = f->nin; fdmdv_demod(f->fdmdv, f->fdmdv_bits, &reliable_sync_bit, demod_in, &f->nin); fdmdv_get_demod_stats(f->fdmdv, &f->stats); - f->reliable_sync_bit = reliable_sync_bit; + f->sync = f->fdmdv->sync; f->snr_est = f->stats.snr_est; if (f->stats.sync) { @@ -548,15 +550,14 @@ int freedv_comprx(struct freedv *f, short speech_out[], COMP demod_in[]) { if (f->mode == FREEDV_MODE_700) { float rx_bits[COHPSK_BITS_PER_FRAME]; - int reliable_sync_bit; + int sync; nin_prev = f->nin; - cohpsk_demod(f->cohpsk, rx_bits, &reliable_sync_bit, demod_in, &f->nin); - f->reliable_sync_bit = reliable_sync_bit; + cohpsk_demod(f->cohpsk, rx_bits, &sync, demod_in, &f->nin); + f->sync = sync; f->snr_est = 2.0; - fprintf(stderr, "%d\n", reliable_sync_bit); - if (reliable_sync_bit) { + if (sync) { data_flag_index = codec2_get_spare_bit_index(f->codec2); diff --git a/codec2-dev/src/freedv_api.h b/codec2-dev/src/freedv_api.h index bf4003b4..70463ea5 100644 --- a/codec2-dev/src/freedv_api.h +++ b/codec2-dev/src/freedv_api.h @@ -64,7 +64,7 @@ struct freedv { int tx_sync_bit; int total_bit_errors; - int reliable_sync_bit; + int sync; float snr_est; float snr_thresh; int nin;