|
|
@ -283,12 +283,17 @@ static void t38_pcm_player(struct media_player *mp) { |
|
|
|
|
|
|
|
|
ilog(LOG_DEBUG, "Generated %i T.38 PCM samples", num); |
|
|
ilog(LOG_DEBUG, "Generated %i T.38 PCM samples", num); |
|
|
|
|
|
|
|
|
// this reschedules our player as well |
|
|
|
|
|
media_player_add_packet(tg->pcm_player, (char *) smp, num * 2, num * 1000000 / 8000, tg->pts); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// release gateway lock as the media player may trigger a lock on the SSRC objects |
|
|
|
|
|
// and this is the wrong lock order |
|
|
|
|
|
struct media_player *pcm_player = media_player_get(tg->pcm_player); |
|
|
|
|
|
unsigned long long pts = tg->pts; |
|
|
tg->pts += num; |
|
|
tg->pts += num; |
|
|
|
|
|
|
|
|
mutex_unlock(&tg->lock); |
|
|
mutex_unlock(&tg->lock); |
|
|
|
|
|
|
|
|
|
|
|
// this reschedules our player as well |
|
|
|
|
|
media_player_add_packet(pcm_player, (char *) smp, num * 2, num * 1000000 / 8000, pts); |
|
|
|
|
|
media_player_put(&pcm_player); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|