aboutsummaryrefslogtreecommitdiffstats
path: root/src/fuenf
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/fuenf
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/fuenf')
-rw-r--r--src/fuenf/dsp.c6
-rw-r--r--src/fuenf/fuenf.c9
2 files changed, 7 insertions, 8 deletions
diff --git a/src/fuenf/dsp.c b/src/fuenf/dsp.c
index b3f10f8..7985fb9 100644
--- a/src/fuenf/dsp.c
+++ b/src/fuenf/dsp.c
@@ -595,15 +595,17 @@ void sender_send(sender_t *sender, sample_t *samples, uint8_t *power, int length
fuenf_t *fuenf = (fuenf_t *) sender;
sample_t *orig_samples = samples;
int orig_length = length;
- int count;
+ int count, input_num;
sample_t *spl;
int pos;
int i;
/* speak through */
if (fuenf->state == FUENF_STATE_DURCHSAGE && fuenf->callref) {
- jitter_load(&fuenf->sender.dejitter, samples, length);
memset(power, 1, length);
+ input_num = samplerate_upsample_input_num(&sender->srstate, length);
+ jitter_load(&sender->dejitter, samples, input_num);
+ samplerate_upsample(&sender->srstate, samples, input_num, samples, length);
} else {
/* send if something has to be sent. else turn transmitter off */
while ((count = encode(fuenf, samples, length))) {
diff --git a/src/fuenf/fuenf.c b/src/fuenf/fuenf.c
index 4a3eb90..4466094 100644
--- a/src/fuenf/fuenf.c
+++ b/src/fuenf/fuenf.c
@@ -390,7 +390,7 @@ void call_down_release(int callref, int cause)
}
/* Receive audio from call instance. */
-void call_down_audio(int callref, sample_t *samples, int count)
+void call_down_audio(int callref, uint16_t sequence, uint32_t timestamp, uint32_t ssrc, sample_t *samples, int count)
{
sender_t *sender;
fuenf_t *fuenf;
@@ -403,11 +403,8 @@ void call_down_audio(int callref, sample_t *samples, int count)
if (!sender)
return;
- if (fuenf->state == FUENF_STATE_DURCHSAGE) {
- sample_t up[(int)((double)count * fuenf->sender.srstate.factor + 0.5) + 10];
- count = samplerate_upsample(&fuenf->sender.srstate, samples, count, up);
- jitter_save(&fuenf->sender.dejitter, up, count);
- }
+ if (fuenf->state == FUENF_STATE_DURCHSAGE)
+ jitter_save(&fuenf->sender.dejitter, samples, count, 1, sequence, timestamp, ssrc);
}
void dump_info(void) {}