mirror of
https://github.com/gqrx-sdr/gqrx.git
synced 2024-09-21 10:47:10 +00:00
Switch to post-demod resampler. Closes bug #24.
This commit is contained in:
parent
93a928d119
commit
a2d7b4705a
@ -53,7 +53,7 @@ rx_filter::rx_filter(double sample_rate, double center, double low, double high,
|
||||
d_taps = gr_firdes::complex_band_pass(1.0, d_sample_rate, -d_high, -d_low, d_trans_width);
|
||||
|
||||
/* create band pass filter */
|
||||
d_bpf = gr_make_freq_xlating_fir_filter_ccc(2, d_taps, d_center, d_sample_rate);
|
||||
d_bpf = gr_make_freq_xlating_fir_filter_ccc(1, d_taps, d_center, d_sample_rate);
|
||||
|
||||
/* connect filter */
|
||||
connect(self(), 0, d_bpf, 0);
|
||||
|
30
receiver.cc
30
receiver.cc
@ -63,8 +63,9 @@ receiver::receiver(const std::string input_device, const std::string audio_devic
|
||||
sql = gr_make_simple_squelch_cc(-100.0, 0.001);
|
||||
meter = make_rx_meter_c(false);
|
||||
demod_ssb = gr_make_complex_to_real(1);
|
||||
demod_fm = make_rx_demod_fm(48000.0, 48000.0, 5000.0, 50.0e-6);
|
||||
demod_am = make_rx_demod_am(48000.0, 48000.0, true);
|
||||
demod_fm = make_rx_demod_fm(d_bandwidth, d_bandwidth, 5000.0, 50.0e-6);
|
||||
demod_am = make_rx_demod_am(d_bandwidth, d_bandwidth, true);
|
||||
audio_rr = make_resampler_ff(d_bandwidth, d_audio_rate);
|
||||
audio_gain = gr_make_multiply_const_ff(0.1);
|
||||
audio_snk = audio_make_sink(d_audio_rate, audio_device, true);
|
||||
wav_sink = gr_make_wavfile_sink("/tmp/gqrx.wav", 1, 48000, 16);
|
||||
@ -76,8 +77,9 @@ receiver::receiver(const std::string input_device, const std::string audio_devic
|
||||
tb->connect(sql, 0, bb_gain, 0);
|
||||
tb->connect(bb_gain, 0, agc, 0);
|
||||
tb->connect(agc, 0, demod_fm, 0);
|
||||
tb->connect(demod_fm, 0, wav_sink, 0);
|
||||
tb->connect(demod_fm, 0, audio_gain, 0);
|
||||
tb->connect(demod_fm, 0, audio_rr, 0);
|
||||
tb->connect(audio_rr, 0, wav_sink, 0);
|
||||
tb->connect(audio_rr, 0, audio_gain, 0);
|
||||
tb->connect(audio_gain, 0, audio_snk, 0);
|
||||
|
||||
/* close wav file; this will disable writing */
|
||||
@ -361,20 +363,17 @@ receiver::status receiver::set_demod(demod rx_demod)
|
||||
|
||||
case DEMOD_SSB:
|
||||
tb->disconnect(agc, 0, demod_ssb, 0);
|
||||
tb->disconnect(demod_ssb, 0, audio_gain, 0);
|
||||
tb->disconnect(demod_ssb, 0, wav_sink, 0);
|
||||
tb->disconnect(demod_ssb, 0, audio_rr, 0);
|
||||
break;
|
||||
|
||||
case DEMOD_AM:
|
||||
tb->disconnect(agc, 0, demod_am, 0);
|
||||
tb->disconnect(demod_am, 0, audio_gain, 0);
|
||||
tb->disconnect(demod_am, 0, wav_sink, 0);
|
||||
tb->disconnect(demod_am, 0, audio_rr, 0);
|
||||
break;
|
||||
|
||||
case DEMOD_FM:
|
||||
tb->disconnect(agc, 0, demod_fm, 0);
|
||||
tb->disconnect(demod_fm, 0, audio_gain, 0);
|
||||
tb->disconnect(demod_fm, 0, wav_sink, 0);
|
||||
tb->disconnect(demod_fm, 0, audio_rr, 0);
|
||||
break;
|
||||
|
||||
|
||||
@ -386,29 +385,26 @@ receiver::status receiver::set_demod(demod rx_demod)
|
||||
case DEMOD_SSB:
|
||||
d_demod = rx_demod;
|
||||
tb->connect(agc, 0, demod_ssb, 0);
|
||||
tb->connect(demod_ssb, 0, audio_gain, 0);
|
||||
tb->connect(demod_ssb, 0, wav_sink, 0);
|
||||
tb->connect(demod_ssb, 0, audio_rr, 0);
|
||||
break;
|
||||
|
||||
case DEMOD_AM:
|
||||
d_demod = rx_demod;
|
||||
tb->connect(agc, 0, demod_am, 0);
|
||||
tb->connect(demod_am, 0, audio_gain, 0);
|
||||
tb->connect(demod_am, 0, wav_sink, 0);
|
||||
tb->connect(demod_am, 0, audio_rr, 0);
|
||||
break;
|
||||
|
||||
case DEMOD_FM:
|
||||
d_demod = DEMOD_FM;
|
||||
tb->connect(agc, 0, demod_fm, 0);
|
||||
tb->connect(demod_fm, 0, audio_gain, 0);
|
||||
tb->connect(demod_fm, 0, wav_sink, 0);
|
||||
tb->connect(demod_fm, 0, audio_rr, 0);
|
||||
break;
|
||||
|
||||
default:
|
||||
/* use FMN */
|
||||
d_demod = DEMOD_FM;
|
||||
tb->connect(agc, 0, demod_fm, 0);
|
||||
tb->connect(demod_fm, 0, audio_gain, 0);
|
||||
tb->connect(demod_fm, 0, audio_rr, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -34,6 +34,7 @@
|
||||
#include <dsp/rx_demod_fm.h>
|
||||
#include <dsp/rx_demod_am.h>
|
||||
#include <dsp/rx_fft.h>
|
||||
#include <dsp/resampler_ff.h>
|
||||
|
||||
|
||||
/*! \defgroup DSP Digital signal processing library based on GNU Radio */
|
||||
@ -146,6 +147,7 @@ private:
|
||||
gr_complex_to_real_sptr demod_ssb; /*! SSB demodulator. */
|
||||
rx_demod_fm_sptr demod_fm; /*! FM demodulator. */
|
||||
rx_demod_am_sptr demod_am; /*! AM demodulator. */
|
||||
resampler_ff_sptr audio_rr; /*! Audio resampler. */
|
||||
gr_multiply_const_ff_sptr audio_gain; /*! Audio gain block. */
|
||||
audio_sink::sptr audio_snk; /*! Audio sink. */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user