From patchwork Tue Sep 3 01:02:28 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 14867 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 1B771449F2B for ; Tue, 3 Sep 2019 04:03:29 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 063FB687FE4; Tue, 3 Sep 2019 04:03:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f195.google.com (mail-oi1-f195.google.com [209.85.167.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F01EC687FE3 for ; Tue, 3 Sep 2019 04:03:26 +0300 (EEST) Received: by mail-oi1-f195.google.com with SMTP id k22so11487997oiw.11 for ; Mon, 02 Sep 2019 18:03:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ygp4xoK/lB/GlICbOx/DUnzOI/SgK5EH4+MseJj1/V0=; b=tS+5lNTQQL2d/j2qlnqQrDDEGhthA8b3T2896qv0gW9DOmivqPAPi29xM1928nIeZg MehvR2TkG/liOrNo+Iz6KlMVtJLAoDLxRcdPp5WQt75y1GRAZNQI8T2nUGfM0x4MNmHu xX2zrYt8zzsJDy++wPM1laetq/TDTe32vBI5x49Nx6UwMqs2YwDnfx7EgPHsxvAPCfvV 8AQCc6M3MPOxeA06Q5+sHgBJCwFuOHXoY7QKcDOpUXXUmQcEUPM/51iFqH2wWB+dRJFB pwX5sgO5k8Vt4jShkUSfFyuChDozFWyQ8wEnShClViAIpq307JAEPZkS4+ipsCgpCWid dP/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=ygp4xoK/lB/GlICbOx/DUnzOI/SgK5EH4+MseJj1/V0=; b=MYubzSBBiXyuiTIH1bJBDjlX/zkuLvKC3Oof3ZW0oir3FWg76ajiDvK8OsHyr0DCPF YK3rApNa72G/iQSmMaPjPFCto+LZTs8hTCjubQAdGlFj+Kyh/hgPS3eYEEfBtTbSHYBV kLLuzJuDDSpXDdVQ3kXFpdAMM1k9Hp0+WnAJHzS8uGWSfAWwEAfFnXN27ch2ytjZi8La VYpCYxw8OYtTbEWws7WRLz/AaDbm+/UtUPcU18vt75JcpdoJj3Y03eIlgrZoVXTeC/0s IWRZ+UMJLgz4STmzJ1GMkHnYm5mm7LqKm/tXUAAFmyz2LbLHHfFXDQhZNrcytznhL76I C/NA== X-Gm-Message-State: APjAAAXRx+YLpiKQW6MzRUe3TWgg0ea8qGkPGa/BaNhdlzjJ1IzgBkUD ul1h2wWDuBPK408WRKkxyZi+5R9VP9k= X-Google-Smtp-Source: APXvYqyW27L+Ggfzmgw04MS7x6SvrgG0Y8WnJ3Pc+tDIRaJY2y4L3VHFl1lP07Xx+WNtKdt5zuO4UA== X-Received: by 2002:aca:d506:: with SMTP id m6mr5283932oig.104.1567472605226; Mon, 02 Sep 2019 18:03:25 -0700 (PDT) Received: from tmm1-imac.lan (ip184-189-221-177.sb.sd.cox.net. [184.189.221.177]) by smtp.gmail.com with ESMTPSA id a21sm4299633oie.9.2019.09.02.18.03.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 02 Sep 2019 18:03:24 -0700 (PDT) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Mon, 2 Sep 2019 18:02:28 -0700 Message-Id: <20190903010230.96236-24-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190903010230.96236-1-ffmpeg@tmm1.net> References: <20190903010230.96236-1-ffmpeg@tmm1.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 23/25] avcodec/v4l2_buffers: use correct timebase for encoder/decoder/filter 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: lorusak@gmail.com, Aman Gupta , jorge.ramirez.ortiz@gmail.com, Aman Gupta Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta Signed-off-by: Aman Gupta --- libavcodec/v4l2_buffers.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/libavcodec/v4l2_buffers.c b/libavcodec/v4l2_buffers.c index 389b5dea8d..d8cec06cb3 100644 --- a/libavcodec/v4l2_buffers.c +++ b/libavcodec/v4l2_buffers.c @@ -55,40 +55,41 @@ static inline AVCodecContext *logger(V4L2Buffer *buf) return buf_to_m2mctx(buf)->avctx; } +static inline AVRational v4l2_get_timebase(V4L2Buffer *avbuf) +{ + V4L2m2mContext *s = buf_to_m2mctx(avbuf); + + if (s->filterctx) + return s->filterctx->inputs[0]->time_base; + if (s->avctx->pkt_timebase.num) + return s->avctx->pkt_timebase; + return s->avctx->time_base; +} + static inline void v4l2_set_pts(V4L2Buffer *out, int64_t pts) { - V4L2m2mContext *s = buf_to_m2mctx(out); AVRational v4l2_timebase = { 1, USEC_PER_SEC }; - AVRational timebase; int64_t v4l2_pts; if (pts == AV_NOPTS_VALUE) pts = 0; - timebase = s->filterctx ? s->filterctx->inputs[0]->time_base - : s->avctx->time_base; - /* convert pts to v4l2 timebase */ - v4l2_pts = av_rescale_q(pts, timebase, v4l2_timebase); + v4l2_pts = av_rescale_q(pts, v4l2_get_timebase(out), v4l2_timebase); out->buf.timestamp.tv_usec = v4l2_pts % USEC_PER_SEC; out->buf.timestamp.tv_sec = v4l2_pts / USEC_PER_SEC; } static inline int64_t v4l2_get_pts(V4L2Buffer *avbuf) { - V4L2m2mContext *s = buf_to_m2mctx(avbuf); AVRational v4l2_timebase = { 1, USEC_PER_SEC }; - AVRational timebase; int64_t v4l2_pts; - timebase = s->filterctx ? s->filterctx->inputs[0]->time_base - : s->avctx->time_base; - /* convert pts back to encoder timebase */ v4l2_pts = (int64_t)avbuf->buf.timestamp.tv_sec * USEC_PER_SEC + avbuf->buf.timestamp.tv_usec; - return av_rescale_q(v4l2_pts, v4l2_timebase, timebase); + return av_rescale_q(v4l2_pts, v4l2_timebase, v4l2_get_timebase(avbuf)); } static enum AVColorPrimaries v4l2_get_color_primaries(V4L2Buffer *buf)