aboutsummaryrefslogtreecommitdiffstats
path: root/src/radio/radio.c
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2019-12-22 06:46:31 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2019-12-22 06:46:31 +0100
commit99a4bfc7f0f694341e3f366f03c7284cc9fed58b (patch)
treed486e580d79b5792de61456883428fa9a83b5da1 /src/radio/radio.c
parent90c47658c1ef69746b08a8127f7fcf5283aa0419 (diff)
osmoradio: Fix disabling of emphasis
Diffstat (limited to 'src/radio/radio.c')
-rw-r--r--src/radio/radio.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/src/radio/radio.c b/src/radio/radio.c
index ead2ae1..6ce6ab1 100644
--- a/src/radio/radio.c
+++ b/src/radio/radio.c
@@ -235,14 +235,17 @@ int radio_init(radio_t *radio, int latspl, int samplerate, const char *tx_wave_f
/* init filters (using signal sample rate) */
switch (radio->modulation) {
case MODULATION_FM:
- /* time constant */
- PDEBUG(DRADIO, DEBUG_INFO, "Using emphasis cut-off at %.0f Hz.\n", timeconstant2cutoff(time_constant_us));
- rc = init_emphasis(&radio->fm_emphasis[0], radio->signal_samplerate, timeconstant2cutoff(time_constant_us), DC_CUTOFF, radio->audio_bandwidth);
- if (rc < 0)
- goto error;
- rc = init_emphasis(&radio->fm_emphasis[1], radio->signal_samplerate, timeconstant2cutoff(time_constant_us), DC_CUTOFF, radio->audio_bandwidth);
- if (rc < 0)
- goto error;
+ if (time_constant_us > 0.0) {
+ radio->emphasis = 1;
+ /* time constant */
+ PDEBUG(DRADIO, DEBUG_INFO, "Using emphasis cut-off at %.0f Hz.\n", timeconstant2cutoff(time_constant_us));
+ rc = init_emphasis(&radio->fm_emphasis[0], radio->signal_samplerate, timeconstant2cutoff(time_constant_us), DC_CUTOFF, radio->audio_bandwidth);
+ if (rc < 0)
+ goto error;
+ rc = init_emphasis(&radio->fm_emphasis[1], radio->signal_samplerate, timeconstant2cutoff(time_constant_us), DC_CUTOFF, radio->audio_bandwidth);
+ if (rc < 0)
+ goto error;
+ }
rc = fm_mod_init(&radio->fm_mod, radio->signal_samplerate, 0.0, 1.0);
if (rc < 0)
goto error;
@@ -552,10 +555,12 @@ int radio_tx(radio_t *radio, float *baseband, int signal_num)
* and modulate */
switch (radio->modulation) {
case MODULATION_FM:
- pre_emphasis(&radio->fm_emphasis[0], signal_samples[0], signal_num);
+ if (radio->emphasis)
+ pre_emphasis(&radio->fm_emphasis[0], signal_samples[0], signal_num);
clipper_process(signal_samples[0], signal_num);
if (radio->stereo) {
- pre_emphasis(&radio->fm_emphasis[1], signal_samples[1], signal_num);
+ if (radio->emphasis)
+ pre_emphasis(&radio->fm_emphasis[1], signal_samples[1], signal_num);
clipper_process(signal_samples[1], signal_num);
/* add pilot tone */
double phasestep = radio->pilot_phasestep;
@@ -643,11 +648,13 @@ int radio_rx(radio_t *radio, float *baseband, int signal_num)
iir_process(&radio->rx_lp_sum, samples[0], signal_num);
iir_process(&radio->rx_lp_diff, samples[1], signal_num);
}
- dc_filter(&radio->fm_emphasis[0], samples[0], signal_num);
- de_emphasis(&radio->fm_emphasis[0], samples[0], signal_num);
- if (radio->stereo) {
- dc_filter(&radio->fm_emphasis[1], samples[1], signal_num);
- de_emphasis(&radio->fm_emphasis[1], samples[1], signal_num);
+ if (radio->emphasis) {
+ dc_filter(&radio->fm_emphasis[0], samples[0], signal_num);
+ de_emphasis(&radio->fm_emphasis[0], samples[0], signal_num);
+ if (radio->stereo) {
+ dc_filter(&radio->fm_emphasis[1], samples[1], signal_num);
+ de_emphasis(&radio->fm_emphasis[1], samples[1], signal_num);
+ }
}
break;
case MODULATION_AM_DSB: