From patchwork Thu Mar 25 04:46:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alok Priyadarshi X-Patchwork-Id: 26596 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 7CB1D44BD54 for ; Thu, 25 Mar 2021 06:47:09 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4836E68A3C3; Thu, 25 Mar 2021 06:47:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f47.google.com (mail-pj1-f47.google.com [209.85.216.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 47EF368A255 for ; Thu, 25 Mar 2021 06:47:02 +0200 (EET) Received: by mail-pj1-f47.google.com with SMTP id kr3-20020a17090b4903b02900c096fc01deso404176pjb.4 for ; Wed, 24 Mar 2021 21:47:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KHxSTvmJrDPDF3WDF8v1tFdWfqfTk9gTxNP6e9DHLw4=; b=qI001qVnltcXzHSY66RSRsK3+6inHOGddyCY3NRJ733J8EQxyJ9mSub7Bn1WFbU+Rm n2LNASSnQfZp/B4UCAtS3yFebYKGRmmYqFZz+2XXZlfyHY370wKoCC4XtJ9SCJOdQgUm v9/DYPvaWzUdHZXKwH/cu4v2jkwjt/pronpj0FL8yNs+Jh4hDVLSy0qMoOuN31YoMKP3 Im7IRNzmeKtVa0ClXmhPmVk6VK4Gh/59P5v3wgw9b7+zmoFeGqBRhJiIyrtN+Gar5DoI MECI/E4hDDk8EZqolIc1RQJ2eHDOBCTkOL2P5FTWTB7U68yhYOOqFOUAyeUm6tYVrXCm kTjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=KHxSTvmJrDPDF3WDF8v1tFdWfqfTk9gTxNP6e9DHLw4=; b=tGhhnSZqvbfhMairEFSrCLR82bTWb5M526bz3japhafoJhAzr1KGZUvXptROomvnHv Sx2Aly6FY2OHHDB91nNdMUKxn7Lze+wfA6t9ktPK/+jzrcUIt7LoT8DQCs5nUW2gGCD0 wC0z7FRnUMaAU5Wu9yz36SN1z8qaX8gn7rHgKya4Es7HQJoCs3nEZbf8Vv6HvJFn3UsB uBiouMAC4HdA75g9NefLf0GhVC9IObgOrZpGiR3viA+vPsLshePNqKc7IU1bRDjlNLgM xImm4uH3UtY7XfrAJPkFvgz1Y6Co/h05pbUUsf7kQm0Ai/9yrBRh4a5aSJ8WslS3crCM vRAQ== X-Gm-Message-State: AOAM533eswhWDxwGMN0GSJH9Zhakt6+YvkfunriiQKp8Vssg1GAOvpnz dpbcE1Zs6QRYAyxynuwHklzN0GCGS3xMBA== X-Google-Smtp-Source: ABdhPJzmMS1XNljcmDi+ftEZAXcgmB5osBKOxLO8Ah3oMH5lLRGkjSQBpC76oFe1okPyy+o4jyQd5A== X-Received: by 2002:a17:90a:20c:: with SMTP id c12mr6852594pjc.224.1616647620106; Wed, 24 Mar 2021 21:47:00 -0700 (PDT) Received: from localhost.localdomain (c-73-223-72-238.hsd1.ca.comcast.net. [73.223.72.238]) by smtp.gmail.com with ESMTPSA id i7sm4109442pfq.184.2021.03.24.21.46.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 24 Mar 2021 21:46:59 -0700 (PDT) From: Alok Priyadarshi To: ffmpeg-devel@ffmpeg.org Date: Wed, 24 Mar 2021 21:46:36 -0700 Message-Id: <20210325044636.360896-1-alokpr@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/rtpdec: Fix prft wallclock 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: Alok Priyadarshi Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Timestamp difference is available in media timebase (1/90K) where as rtcp time is in the default microseconds timebase. This patch fixes the calculated prft wallclock time by rescaling the timestamp delta to the microseconds timebase. --- libavformat/rtpdec.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index b935dba1b8..21c1d01785 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -585,14 +585,19 @@ void ff_rtp_parse_set_crypto(RTPDemuxContext *s, const char *suite, } static int rtp_set_prft(RTPDemuxContext *s, AVPacket *pkt, uint32_t timestamp) { + int64_t rtcp_time, delta_timestamp, delta_time; + AVProducerReferenceTime *prft = (AVProducerReferenceTime *) av_packet_new_side_data( pkt, AV_PKT_DATA_PRFT, sizeof(AVProducerReferenceTime)); if (!prft) return AVERROR(ENOMEM); - prft->wallclock = ff_parse_ntp_time(s->last_rtcp_ntp_time) - NTP_OFFSET_US + - timestamp - s->last_rtcp_timestamp; + rtcp_time = ff_parse_ntp_time(s->last_rtcp_ntp_time) - NTP_OFFSET_US; + delta_timestamp = (int64_t)timestamp - (int64_t)s->last_rtcp_timestamp; + delta_time = av_rescale_q(delta_timestamp, s->st->time_base, AV_TIME_BASE_Q); + + prft->wallclock = rtcp_time + delta_time; prft->flags = 24; return 0; }