From patchwork Mon May 7 09:57:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 8819 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp2678259jad; Mon, 7 May 2018 02:58:02 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqzBZJEGrc1d+FwIQBOKPP2uW2+g2rEi0/b/1OnySrBAEjLKOmN3V9pUXh453hNdII99lUp X-Received: by 2002:a1c:6f57:: with SMTP id k84-v6mr321791wmc.142.1525687082546; Mon, 07 May 2018 02:58:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1525687082; cv=none; d=google.com; s=arc-20160816; b=ILydFtUuZM8nPBSBJlT0qDYOy+Kk/ZGYI7jWjqmM76Hy3g/J8osw7GH7ZybJX488El 2VAhUyoEP6vCxg1JW7oCmOboevLb6pfbNjEWR+gt6pr1DuY+RFkCPbHyAYIl1NpdaVxE vlf67VQeY6BiBn1KrElqH9mY2kevudumXGXLSGBQNeiM5q9qFR2ZL7sYpp0BsWuXCFUm nXmMMptWvfjvCSBjA4ToiXG5GJp2XvVxPMEbK2WvWFxMdwCN59Qb0DhHH2y5dnRYnh7e bgmD75IHIQgvbv9QHiT7qE90Jo5CPZunSOXm0YEJWYTEE5s8ZBaEUpJBeRE6hyR+1RBa 4iZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to :arc-authentication-results; bh=gCdt2LWFs0Vz8XEAqttIisoKKL1+MKc4rHFNkiqZozw=; b=r5I7qR0OqfwEq3RJBBoVuPL9CqvF2F1/L+YJtR1PQyJsF2bKVeCuVJOX8vM+EkHHwT lvEqXmH+4qC6DN7/lHGg8QvyXYiKfkKzSwSaTuPqMu3lARgSIyAaulhffTPhsnflYYlX 5QtizuDbqzNibQ+VPtBT+qFkoUD9iFMpaSZlGVEXBmXOO/zeeE9HuvHj1TYTeYHflJNS m1/3/GqePOryo6NQDin5Vd566J2A/teg0JOlznKBYxtj55gUTNTolDP8YvvjGl+Ekx6L 1b4NqoOPpjh35KVSfkCyDVFXDtGEtuNc8/hlPdY/mAMUtRV4Ruxo5taCYUm5hT7N95Y1 tCLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=iaze3SvT; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g25-v6si12568039wrc.180.2018.05.07.02.58.00; Mon, 07 May 2018 02:58:02 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=iaze3SvT; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1DB7768A4D3; Mon, 7 May 2018 12:57:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a1i318.smtp2go.com (a1i318.smtp2go.com [43.228.185.62]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 694A868A2C6 for ; Mon, 7 May 2018 12:57:17 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1525687977; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=NGuFLS6L4n4uNfWGBqJD2grXpubGGQn+xDL1wtfaTYM=; b=iaze3SvT Bi3Gv2lgRkJjRwmQGE1h88De41j8tnWBOqDDKYzmo0HlCyRiS5PVwp4e/lFOFVCPvhfrKrZnR/9BK OtJ2sL/p9GTLYXwoNfegF6mCB4m1X8dftUo3Eylufe2RQsaFdYWlNr6cILRG0+yicXoaW53i+GDFy 0PejQ0Pmw+loV27TI5u/eUgp//dX7MpVa3jt8BuQpWVqY07NoDRfN6/sZaHTkNf6UFBSg5gkksCwG wcpZM/slE09Z3j0D053sjc4aPUmPLT4i6RVWK1dEVXiszU+fWxWlgtFY1ATmv2EQQ91ZlYPqd8BJB MGowJmc77GB4QMSGSm3sXJMqrw==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 7 May 2018 15:27:36 +0530 Message-Id: <1525687056-5741-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <20180506202937.GL20131@michaelspb> References: <20180506202937.GL20131@michaelspb> X-Smtpcorp-Track: 1fFcttRyIu_8HI.8GuYEYIaF Feedback-ID: 337386m:337386asVRLGB:337386sy_ZvfAcHM:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH v2 1/3] avformat/utils: function to get the formatted ntp time X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Vishwanath Dixit MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Vishwanath Dixit 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 | 22 ++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/libavformat/internal.h b/libavformat/internal.h index 3582682..0b8120b 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_get_formatted_ntp_time(uint64_t ntp_time_us); + +/** * 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..4001292 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -4637,6 +4637,28 @@ uint64_t ff_ntp_time(void) 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) { const char *p;