[FFmpeg-devel] [PATCH 1/3] avformat/utils: function to get the formatted ntp time

Michael Niedermayer michael at niedermayer.cc
Sun May 6 23:29:37 EEST 2018


On Sun, May 06, 2018 at 06:04:35PM +0000, Dixit, Vishwanath wrote:
> 
> 
> On 4/28/18 6:38 AM, Michael Niedermayer wrote:
> > On Fri, Apr 27, 2018 at 08:00:23AM +0000, Dixit, Vishwanath wrote:
> >>
> >>
> >> On 4/27/18 5:15 AM, Michael Niedermayer wrote:
> >>> On Thu, Apr 26, 2018 at 11:05:59AM +0000, Dixit, Vishwanath wrote:
> >>>>
> >>>>
> >>>> On 4/26/18 1:04 AM, Michael Niedermayer wrote:
> >>>>> On Tue, Apr 24, 2018 at 02:46:56PM +0530, vdixit at akamai.com wrote:
> >>>>>> From: Vishwanath Dixit <vdixit at akamai.com>
> >>>>>>
> >>>>>> 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
> >>>>>> ---
> >>>>>>  libavformat/internal.h |  8 ++++++++
> >>>>>>  libavformat/utils.c    | 20 ++++++++++++++++++++
> >>>>>>  2 files changed, 28 insertions(+)
> >>>>>>
> >>>>>> diff --git a/libavformat/internal.h b/libavformat/internal.h
> >>>>>> index 3582682..e9f758f 100644
> >>>>>> --- a/libavformat/internal.h
> >>>>>> +++ b/libavformat/internal.h
> >>>>>> @@ -240,6 +240,14 @@ void ff_read_frame_flush(AVFormatContext *s);
> >>>>>>  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_time_ntp_format(uint64_t ntp_time);
> >>>>>> +
> >>>>>> +/**
> >>>>>>   * Append the media-specific SDP fragment for the media stream c
> >>>>>>   * to the buffer buff.
> >>>>>>   *
> >>>>>> diff --git a/libavformat/utils.c b/libavformat/utils.c
> >>>>>> index c25eab4..b59d426 100644
> >>>>>> --- a/libavformat/utils.c
> >>>>>> +++ b/libavformat/utils.c
> >>>>>> @@ -4637,6 +4637,26 @@ uint64_t ff_ntp_time(void)
> >>>>>>      return (av_gettime() / 1000) * 1000 + NTP_OFFSET_US;
> >>>>>>  }
> >>>>>>  
> >>>>>> +uint64_t ff_time_ntp_format(uint64_t ntp_time)
> >>>>>> +{
> >>>>>> +    uint64_t ntp_ts, frac_part;
> >>>>>> +    uint32_t sec, usec;
> >>>>>> +
> >>>>>> +    //current ntp time in seconds and micro seconds
> >>>>>
> >>>>>> +    sec = ntp_time / 1000000;
> >>>>>
> >>>>> This can be truncated
> >>>> Yes, but the truncated part is not getting discarded, as the following line is taking care of that. Please correct me if I have not understood what you have intended to say here.
> >>>
> >>> ok, correcting you then :)
> >>> sec is 32bit
> >>> not all values of "ntp_time / 1000000;" fit in 32bit
> >>> there is no check for this it just produces a wrong result
> >> Yes, you are right. But, I can use only the LS 32bits of the result in the following code. It is a limitation of 64-bit NTP time format and the issue is going to occur in 2036. Not sure how to handle it here. At most, I can print a warning message when the result gets truncated. Could you please suggest any alternative option?
> >
> > i cant make it work after 2036 as that seems what the design is limited at.
> > But the error can be detected and handled
> Yes, the error can be detected and one possible way I can think of handling that error, is to truncate LS bits instead of MS bits. But, this solution also will not be completely error free. Honestly, I am not able to find any useful ways of handling the error, apart from displaying a warning message. Request you to let me know if you have any solution in mind.

I dont know the oppinion of others, but a warning message seems usefull
in this case

thx

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Modern terrorism, a quick summary: Need oil, start war with country that
has oil, kill hundread thousand in war. Let country fall into chaos,
be surprised about raise of fundamantalists. Drop more bombs, kill more
people, be surprised about them taking revenge and drop even more bombs
and strip your own citizens of their rights and freedoms. to be continued
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20180506/cfb4bf71/attachment.sig>


More information about the ffmpeg-devel mailing list