From: drowe67 Date: Tue, 29 Nov 2016 02:45:38 +0000 (+0000) Subject: added unsigned u8 input mode X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=eb742b684f502762bc3177866144f45feceace3d;p=freetel-svn-tracking.git added unsigned u8 input mode git-svn-id: https://svn.code.sf.net/p/freetel/code@2907 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/codec2-dev/src/fsk_demod.c b/codec2-dev/src/fsk_demod.c index 96f287c8..6db47a3d 100644 --- a/codec2-dev/src/fsk_demod.c +++ b/codec2-dev/src/fsk_demod.c @@ -48,14 +48,15 @@ int main(int argc,char *argv[]){ int i,j,Ndft; int soft_dec_mode = 0; stats_loop = 0; - int complex_input = 1; + int complex_input = 1, bytes_per_sample = 2; if(argc<7){ fprintf(stderr,"usage: %s (2|4|2X|4X|2XS) P SampleFreq SymbolFreq InputModemRawFile OutputOneBitPerCharFile [S] [C]\n",argv[0]); fprintf(stderr, "2 - 2FSK low bit rate\n4 - 4FSK low bit rate\n2X - 2FSK high bit rate\n4 - 4FSK high bit rate\n2XS - high bit rate soft decision output\n\n"); fprintf(stderr, "P - timing estimator window size, see README_fsk\n"); fprintf(stderr, "S - dump demod stats to stderr for plotting with octave/fskdemodgui.py\n"); - fprintf(stderr, "C - complex (two sample) input\n"); + fprintf(stderr, "C - complex (two sample s16) input\n"); + fprintf(stderr, "CU8 - complex (two sample u8) input\n"); exit(1); } @@ -116,6 +117,10 @@ int main(int argc,char *argv[]){ if(strcmp(argv[7],"C")==0){ complex_input = 2; } + if(strcmp(argv[7],"CU8")==0){ + complex_input = 2; + bytes_per_sample = 1; + } } if(argc>8){ if(strcmp(argv[8],"S")==0){ @@ -128,6 +133,10 @@ int main(int argc,char *argv[]){ if(strcmp(argv[8],"C")==0){ complex_input = 2; } + if(strcmp(argv[7],"CU8")==0){ + complex_input = 2; + bytes_per_sample = 1; + } } /* allocate buffers for processing */ @@ -136,22 +145,37 @@ int main(int argc,char *argv[]){ }else{ bitbuf = (uint8_t*)malloc(sizeof(uint8_t)*fsk->Nbits); } - rawbuf = (int16_t*)malloc(sizeof(int16_t)*(fsk->N+fsk->Ts*2)*complex_input); + rawbuf = (int16_t*)malloc(bytes_per_sample*(fsk->N+fsk->Ts*2)*complex_input); modbuf = (COMP*)malloc(sizeof(COMP)*(fsk->N+fsk->Ts*2)); /* Demodulate! */ - while( fread(rawbuf,sizeof(int16_t)*complex_input,fsk_nin(fsk),fin) == fsk_nin(fsk) ){ - if (complex_input == 1) { + while( fread(rawbuf,bytes_per_sample*complex_input,fsk_nin(fsk),fin) == fsk_nin(fsk) ){ + + /* convert input to a buffer of floats. Note scaling isn't really necessary for FSK */ + + if (complex_input == 1) { + /* S16 real input */ for(i=0;i