From: drowe67 Date: Fri, 11 Dec 2015 21:49:49 +0000 (+0000) Subject: working on tx side X-Git-Url: http://git.whiteaudio.com/gitweb/?a=commitdiff_plain;h=35c96685369aa02df6ed28d26631b842e38f81b6;p=freetel-svn-tracking.git working on tx side git-svn-id: https://svn.code.sf.net/p/freetel/code@2519 01035d8c-6547-0410-b346-abe4f91aad63 --- diff --git a/freebeacon/freebeacon.c b/freebeacon/freebeacon.c index 9bdf1c28..581e23a6 100644 --- a/freebeacon/freebeacon.c +++ b/freebeacon/freebeacon.c @@ -233,7 +233,7 @@ SNDFILE *openPlayFile(char fileName[], int *sfFs) int main(int argc, char *argv[]) { struct freedv *f; - PaStreamParameters inputParameters; + PaStreamParameters inputParameters, outputParameters; const PaDeviceInfo *deviceInfo = NULL; PaStream *stream = NULL; PaError err; @@ -331,7 +331,7 @@ int main(int argc, char *argv[]) { txsrc = src_new(SRC_SINC_FASTEST, 1, &src_error); assert(txsrc != NULL); playsrc = src_new(SRC_SINC_FASTEST, 1, &src_error); assert(playsrc != NULL); - /* work out how many input channels this device supports */ + /* Open Port Audio device */ deviceInfo = Pa_GetDeviceInfo(devNum); if (deviceInfo == NULL) { @@ -343,7 +343,7 @@ int main(int argc, char *argv[]) { else inputChannels = 2; - /* open device */ + /* input device */ inputParameters.device = devNum; inputParameters.channelCount = inputChannels; @@ -351,6 +351,19 @@ int main(int argc, char *argv[]) { inputParameters.suggestedLatency = Pa_GetDeviceInfo( inputParameters.device )->defaultHighInputLatency; inputParameters.hostApiSpecificStreamInfo = NULL; + /* output device */ + + if (deviceInfo->maxOutputChannels == 1) + outputChannels = 1; + else + outputChannels = 2; + + outputParameters.device = devNum; + outputParameters.channelCount = outputChannels; + outputParameters.sampleFormat = paInt16; + outputParameters.suggestedLatency = Pa_GetDeviceInfo( outputParameters.device )->defaultHighOutputLatency; + outputParameters.hostApiSpecificStreamInfo = NULL; + fprintf(stderr, "Ctrl-C to exit\n"); fprintf(stderr, "trigger string: %s txFileName: %s\n", triggerString, txFileName); fprintf(stderr, "Starting PortAudio on devNum: %d\n", devNum); @@ -358,7 +371,7 @@ int main(int argc, char *argv[]) { err = Pa_OpenStream( &stream, &inputParameters, - NULL, + &outputParameters, SAMPLE_RATE, 0, /* let the driver decide */ paClipOff, @@ -429,8 +442,10 @@ int main(int argc, char *argv[]) { unsigned int nsf = freedv_get_n_speech_samples(f)*sfFs/FS; short insf_short[nsf]; unsigned int n = sf_read_short(sfPlayFile, insf_short, nsf); - n8k = resample(playsrc, speech_in, insf_short, SAMPLE_RATE, sfFs, freedv_get_n_speech_samples(f), nsf); - + n8k = resample(playsrc, speech_in, insf_short, FS, sfFs, freedv_get_n_speech_samples(f), nsf); + + //fwrite(speech_in, sizeof(short), freedv_get_n_nom_modem_samples(f), ftmp); + if (n != nsf) { /* end of file - this signals state machine we've finished */ sf_close(sfPlayFile); @@ -439,8 +454,11 @@ int main(int argc, char *argv[]) { } freedv_tx(f, mod_out, speech_in); + //fwrite(mod_out, sizeof(short), freedv_get_n_nom_modem_samples(f), ftmp); int n48k = resample(txsrc, out48k_short, mod_out, SAMPLE_RATE, FS, N48, freedv_get_n_nom_modem_samples(f)); + printf("n48k: %d N48: %d n_nom: %d\n", n48k, N48, freedv_get_n_nom_modem_samples(f)); + fwrite(out48k_short, sizeof(short), n48k, ftmp); for(j=0; j