|
|
|
@ -271,6 +271,7 @@ static bool t38_pcm_player(struct media_player *mp) {
|
|
|
|
|
int16_t smp[80];
|
|
|
|
|
int num = t38_gateway_tx(tg->gw, smp, 80);
|
|
|
|
|
if (num <= 0) {
|
|
|
|
|
ilog(LOG_DEBUG, "No T.38 PCM samples generated");
|
|
|
|
|
// use a fixed interval of 10 ms
|
|
|
|
|
timeval_add_usec(&mp->next_run, 10000);
|
|
|
|
|
timerthread_obj_schedule_abs(&mp->tt_obj, &mp->next_run);
|
|
|
|
@ -286,6 +287,12 @@ static bool t38_pcm_player(struct media_player *mp) {
|
|
|
|
|
unsigned long long pts = tg->pts;
|
|
|
|
|
tg->pts += num;
|
|
|
|
|
|
|
|
|
|
// handle fill-in
|
|
|
|
|
if (timeval_diff(&rtpe_now, &tg->last_rx_ts) > 30000) {
|
|
|
|
|
ilog(LOG_DEBUG, "Adding T.38 fill-in samples");
|
|
|
|
|
t38_gateway_rx_fillin(tg->gw, 80);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mutex_unlock(&tg->lock);
|
|
|
|
|
|
|
|
|
|
// this reschedules our player as well
|
|
|
|
@ -518,6 +525,8 @@ int t38_gateway_input_samples(struct t38_gateway *tg, int16_t amp[], int len) {
|
|
|
|
|
ilog(LOG_WARN | LOG_FLAG_LIMIT, "%i PCM samples were not processed by the T.38 gateway",
|
|
|
|
|
left);
|
|
|
|
|
|
|
|
|
|
tg->last_rx_ts = rtpe_now;
|
|
|
|
|
|
|
|
|
|
mutex_unlock(&tg->lock);
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|