\*---------------------------------------------------------------------------*/
+// short version
+
int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]) {
+
+float rxdata[FDMDV_MAX_SAMPLES_PER_FRAME];
+int i;
+
+ for(i=0; i<f->nin; i++) rxdata[i] = (float)demod_in[i]/FDMDV_SCALE;
+
+ return freedv_floatrx(f, speech_out, rxdata);
+
+}
+
+
+// float version
+
+int freedv_floatrx(struct freedv *f, short speech_out[], float demod_in[]) {
COMP rx_fdm[FDMDV_MAX_SAMPLES_PER_FRAME];
int bits_per_codec_frame, bytes_per_codec_frame, bits_per_fdmdv_frame;
int reliable_sync_bit, i, j, bit, byte, nin_prev, nout;
bits_per_fdmdv_frame = fdmdv_bits_per_frame(f->fdmdv);
for(i=0; i<f->nin; i++) {
- rx_fdm[i].real = (float)demod_in[i]/FDMDV_SCALE;
+ rx_fdm[i].real = demod_in[i];
rx_fdm[i].imag = 0;
}
void freedv_tx(struct freedv *f, short mod_out[], short speech_in[]);
int freedv_nin(struct freedv *f);
int freedv_rx(struct freedv *f, short speech_out[], short demod_in[]);
+int freedv_floatrx(struct freedv *f, short speech_out[], float demod_in[]);
#endif