diff options
Diffstat (limited to 'libavformat/rtpenc_xiph.c')
-rw-r--r-- | libavformat/rtpenc_xiph.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavformat/rtpenc_xiph.c b/libavformat/rtpenc_xiph.c index 2167bdc99f..5b171c36a2 100644 --- a/libavformat/rtpenc_xiph.c +++ b/libavformat/rtpenc_xiph.c @@ -32,6 +32,7 @@ void ff_rtp_send_xiph(AVFormatContext *s1, const uint8_t *buff, int size) { RTPMuxContext *s = s1->priv_data; + AVStream *st = s1->streams[0]; int max_pkt_size, xdt, frag; uint8_t *q; @@ -77,8 +78,10 @@ void ff_rtp_send_xiph(AVFormatContext *s1, const uint8_t *buff, int size) assert(s->num_frames <= s->max_frames_per_packet); if (s->num_frames > 0 && (remaining < 0 || - s->num_frames == s->max_frames_per_packet)) { - // send previous packets now; no room for new data + s->num_frames == s->max_frames_per_packet || + av_compare_ts(s->cur_timestamp - s->timestamp, st->time_base, + s1->max_delay, AV_TIME_BASE_Q) >= 0)) { + // send previous packets now; no room for new data, or too much delay ff_rtp_send_data(s1, s->buf, s->buf_ptr - s->buf, 0); s->num_frames = 0; } |