Commit f09635f2 authored by Vishwanath Dixit's avatar Vishwanath Dixit Committed by Karthick Jeyapal

avformat/utils: function to get the formatted ntp time

This utility function creates 64-bit NTP time format as per the RFC
5905.
A simple explaination of 64-bit NTP time format is here
http://www.beaglesoft.com/Manual/page53.htm
parent 8a4dbd3e
...@@ -239,6 +239,14 @@ void ff_read_frame_flush(AVFormatContext *s); ...@@ -239,6 +239,14 @@ void ff_read_frame_flush(AVFormatContext *s);
/** Get the current time since NTP epoch in microseconds. */ /** Get the current time since NTP epoch in microseconds. */
uint64_t ff_ntp_time(void); uint64_t ff_ntp_time(void);
/**
* Get the NTP time stamp formatted as per the RFC-5905.
*
* @param ntp_time NTP time in micro seconds (since NTP epoch)
* @return the formatted NTP time stamp
*/
uint64_t ff_get_formatted_ntp_time(uint64_t ntp_time_us);
/** /**
* Append the media-specific SDP fragment for the media stream c * Append the media-specific SDP fragment for the media stream c
* to the buffer buff. * to the buffer buff.
......
...@@ -4644,6 +4644,28 @@ uint64_t ff_ntp_time(void) ...@@ -4644,6 +4644,28 @@ uint64_t ff_ntp_time(void)
return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US; return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US;
} }
uint64_t ff_get_formatted_ntp_time(uint64_t ntp_time_us)
{
uint64_t ntp_ts, frac_part, sec;
uint32_t usec;
//current ntp time in seconds and micro seconds
sec = ntp_time_us / 1000000;
usec = ntp_time_us % 1000000;
//encoding in ntp timestamp format
frac_part = usec * 0xFFFFFFFFULL;
frac_part /= 1000000;
if (sec > 0xFFFFFFFFULL)
av_log(NULL, AV_LOG_WARNING, "NTP time format roll over detected\n");
ntp_ts = sec << 32;
ntp_ts |= frac_part;
return ntp_ts;
}
int av_get_frame_filename2(char *buf, int buf_size, const char *path, int number, int flags) int av_get_frame_filename2(char *buf, int buf_size, const char *path, int number, int flags)
{ {
const char *p; const char *p;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment