aboutsummaryrefslogtreecommitdiffstats
path: root/src/radio/radio.c
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2022-07-31 07:55:14 +0200
committerAndreas Eversberg <jolly@eversberg.eu>2022-10-23 16:56:27 +0200
commit2b7efedc483362d3afc2ae71dfb716ac5427f600 (patch)
tree675898699f0cd411fee8af8435b5b13ad9784234 /src/radio/radio.c
parent4fc92eba45a9c197317bdea02d9811c784d77775 (diff)
Refactoring jitter buffer
Features are: * Packet based buffer * Random in, first out * Adaptive delay compensation (voice) * Fixed delay (data, optionally MODEM/FAX) * Interpolation of missing frames * Any sample size
Diffstat (limited to 'src/radio/radio.c')
-rw-r--r--src/radio/radio.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/radio/radio.c b/src/radio/radio.c
index 5354622..cf2c233 100644
--- a/src/radio/radio.c
+++ b/src/radio/radio.c
@@ -106,8 +106,8 @@ int radio_init(radio_t *radio, int buffer_size, int samplerate, double frequency
PDEBUG(DRADIO, DEBUG_ERROR, "Failed to open sound device!\n");
goto error;
}
- jitter_create(&radio->tx_dejitter[0], radio->tx_audio_samplerate / 5);
- jitter_create(&radio->tx_dejitter[1], radio->tx_audio_samplerate / 5);
+ jitter_create(&radio->tx_dejitter[0], "left", radio->tx_audio_samplerate, sizeof(sample_t), 0.050, 0.500, JITTER_FLAG_NONE);
+ jitter_create(&radio->tx_dejitter[1], "right", radio->tx_audio_samplerate, sizeof(sample_t), 0.050, 0.500, JITTER_FLAG_NONE);
radio->tx_audio_mode = AUDIO_MODE_AUDIODEV;
#else
rc = -ENOTSUP;
@@ -173,8 +173,8 @@ int radio_init(radio_t *radio, int buffer_size, int samplerate, double frequency
PDEBUG(DRADIO, DEBUG_ERROR, "Failed to open sound device!\n");
goto error;
}
- jitter_create(&radio->rx_dejitter[0], radio->rx_audio_samplerate / 5);
- jitter_create(&radio->rx_dejitter[1], radio->rx_audio_samplerate / 5);
+ jitter_create(&radio->rx_dejitter[0], "left", radio->rx_audio_samplerate, sizeof(sample_t), 0.050, 0.500, JITTER_FLAG_NONE);
+ jitter_create(&radio->rx_dejitter[1], "right", radio->rx_audio_samplerate, sizeof(sample_t), 0.050, 0.500, JITTER_FLAG_NONE);
radio->rx_audio_mode |= AUDIO_MODE_AUDIODEV;
#else
rc = -ENOTSUP;
@@ -494,10 +494,10 @@ int radio_tx(radio_t *radio, float *baseband, int signal_num)
else
return 0;
}
- jitter_save(&radio->tx_dejitter[0], audio_samples[0], rc);
+ jitter_save(&radio->tx_dejitter[0], audio_samples[0], rc, 0, 0, 0 ,0);
jitter_load(&radio->tx_dejitter[0], audio_samples[0], audio_num);
if (radio->tx_audio_channels == 2) {
- jitter_save(&radio->tx_dejitter[1], audio_samples[1], rc);
+ jitter_save(&radio->tx_dejitter[1], audio_samples[1], rc, 0, 0, 0 ,0);
jitter_load(&radio->tx_dejitter[1], audio_samples[1], audio_num);
}
break;
@@ -554,9 +554,10 @@ int radio_tx(radio_t *radio, float *baseband, int signal_num)
}
/* upsample */
- signal_num = samplerate_upsample(&radio->tx_resampler[0], audio_samples[0], audio_num, signal_samples[0]);
+ signal_num = samplerate_upsample_output_num(&radio->tx_resampler[0], audio_num);
+ samplerate_upsample(&radio->tx_resampler[0], audio_samples[0], audio_num, signal_samples[0], signal_num);
if (radio->stereo)
- samplerate_upsample(&radio->tx_resampler[1], audio_samples[1], audio_num, signal_samples[1]);
+ samplerate_upsample(&radio->tx_resampler[1], audio_samples[1], audio_num, signal_samples[1], signal_num);
/* prepare baseband */
memset(baseband, 0, sizeof(float) * 2 * signal_num);
@@ -727,9 +728,9 @@ int radio_rx(radio_t *radio, float *baseband, int signal_num)
wave_write(&radio->wave_rx_rec, samples, audio_num);
#ifdef HAVE_ALSA
if ((radio->rx_audio_mode & AUDIO_MODE_AUDIODEV)) {
- jitter_save(&radio->rx_dejitter[0], samples[0], audio_num);
+ jitter_save(&radio->rx_dejitter[0], samples[0], audio_num, 0, 0, 0 ,0);
if (radio->rx_audio_channels == 2)
- jitter_save(&radio->rx_dejitter[1], samples[1], audio_num);
+ jitter_save(&radio->rx_dejitter[1], samples[1], audio_num, 0, 0, 0 ,0);
audio_num = sound_get_tosend(radio->rx_sound, radio->signal_buffer_size);
jitter_load(&radio->rx_dejitter[0], samples[0], audio_num);
if (radio->rx_audio_channels == 2)