some tweaks and default optimisation to support freedv
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 15 Jun 2015 22:00:49 +0000 (22:00 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Mon, 15 Jun 2015 22:00:49 +0000 (22:00 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@2192 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/CMakeLists.txt
codec2-dev/src/codec2_cohpsk.h
codec2-dev/src/cohpsk.c
codec2-dev/src/cohpsk_demod.c
codec2-dev/src/freedv_api.c
codec2-dev/src/freedv_api.h

index f74643f278faaa539dc14934f94dbb6d1ff1b73a..b64f4fd08a157465c233240c7a6b1b91fee5964b 100644 (file)
@@ -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.
index 8e242750ce892b8e840ca99a86507c779add20e8..2b578601691c6d924555c0f70c103a042342246a 100644 (file)
@@ -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
index cf5b5731aa5c888c8ff6466e207ae5536d3d1ca1..65ed6f537fcace7a8ef20b9e2b08c3ec57bc6b46 100644 (file)
@@ -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);        
index c5375d56c370be2b190a06498bfba9fb119b3eb8..eb75543929ce33cf3074734039ebb7cdfc6b2d63 100644 (file)
@@ -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) {
index d4fbc43885db868ed849118f1effacd2c9d9be99..efb69192bfba95dc3096e62cd172223ebe8c17d1 100644 (file)
@@ -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);
 
index bf4003b4eb205a631a26347168546bc832f5f42e..70463ea576771c058e119952ee0f16956fe82c67 100644 (file)
@@ -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;