diff --git a/libavformat/internal.h b/libavformat/internal.h index 685b550673..743ee981d8 100644 --- a/libavformat/internal.h +++ b/libavformat/internal.h @@ -37,4 +37,7 @@ void ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, void av_read_frame_flush(AVFormatContext *s); +/** Gets the current time since NTP epoch in microseconds. */ +uint64_t ff_ntp_time(void); + #endif /* AVFORMAT_INTERNAL_H */ diff --git a/libavformat/rtpenc.c b/libavformat/rtpenc.c index 9a3eee96d3..633ce2995c 100644 --- a/libavformat/rtpenc.c +++ b/libavformat/rtpenc.c @@ -21,6 +21,7 @@ #include "avformat.h" #include "mpegts.h" +#include "internal.h" #include @@ -29,13 +30,6 @@ //#define DEBUG #define RTCP_SR_SIZE 28 -#define NTP_OFFSET 2208988800ULL -#define NTP_OFFSET_US (NTP_OFFSET * 1000000ULL) - -static uint64_t ntp_time(void) -{ - return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US; -} static int is_supported(enum CodecID id) { @@ -91,7 +85,7 @@ static int rtp_write_header(AVFormatContext *s1) s->cur_timestamp = 0; s->ssrc = 0; /* FIXME: was random(), what should this be? */ s->first_packet = 1; - s->first_rtcp_ntp_time = ntp_time(); + s->first_rtcp_ntp_time = ff_ntp_time(); max_packet_size = url_fget_max_packet_size(s1->pb); if (max_packet_size <= 12) @@ -346,8 +340,8 @@ static int rtp_write_packet(AVFormatContext *s1, AVPacket *pkt) rtcp_bytes = ((s->octet_count - s->last_octet_count) * RTCP_TX_RATIO_NUM) / RTCP_TX_RATIO_DEN; if (s->first_packet || ((rtcp_bytes >= RTCP_SR_SIZE) && - (ntp_time() - s->last_rtcp_ntp_time > 5000000))) { - rtcp_send_sr(s1, ntp_time()); + (ff_ntp_time() - s->last_rtcp_ntp_time > 5000000))) { + rtcp_send_sr(s1, ff_ntp_time()); s->last_octet_count = s->octet_count; s->first_packet = 0; } diff --git a/libavformat/utils.c b/libavformat/utils.c index 2b579ca67d..b2ecf13bb1 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -3073,6 +3073,14 @@ int64_t av_gettime(void) return (int64_t)tv.tv_sec * 1000000 + tv.tv_usec; } +#define NTP_OFFSET 2208988800ULL +#define NTP_OFFSET_US (NTP_OFFSET * 1000000ULL) + +uint64_t ff_ntp_time(void) +{ + return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US; +} + int64_t parse_date(const char *datestr, int duration) { const char *p;