From patchwork Fri Mar 12 20:42:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Martin_Storsj=C3=B6?= X-Patchwork-Id: 26361 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 BA90344A78C for ; Fri, 12 Mar 2021 23:08:03 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7BF4568A86D; Fri, 12 Mar 2021 23:08:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f52.google.com (mail-lf1-f52.google.com [209.85.167.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B9D0468A7DE for ; Fri, 12 Mar 2021 23:07:56 +0200 (EET) Received: by mail-lf1-f52.google.com with SMTP id 18so47385263lff.6 for ; Fri, 12 Mar 2021 13:07:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=martin-st.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=0Y5QJeXpY5tI7qTxp1MJ3ArBf2TCKIEKqtplrZlsX0k=; b=wifzaehUihnfT13TsDjGiU9VCIruTLyS+H4/lcYsrzj+xUyHiiIrbZa3OyyDqLHZYe etV+Bn7ZGTZYuviLrMhjhHKBQA0/IDLFZPrkHDTUUi+1yF5I0nd7kf9UUhJps5whRU6T MD+fLcVy8wh8ZnpgOwQ0hSs9aCElsW56jhIhQaTHWbnZj4oYquUNY2Ie80LuU33DFffo 6MFdUcOrPRi+ZeIELgYpAu8zxsAUr+dkMfeNCpGa2Ds9dztQu5uf5nNLfY19628XT5yz UwlZO6mIcG+iM+jmANhikC7QT3tpEWG0FC9aMnvYHrk6tSNkMvdPwWE9seWo2YM1j+iZ Xx1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=0Y5QJeXpY5tI7qTxp1MJ3ArBf2TCKIEKqtplrZlsX0k=; b=TyKMimCzaEkMadir6UtULwyx7J51khZdqi+Vuv+TaOrL9h/wLYW8JVYoRBNJgLsBJ4 bz+//l6mWY+y6o5fyjZQlwX/caLy+MxNcFu1ukN2ijSExqhjz2xbXIqR/CoEwD4FFLbl C3ISvjG68zCFv8/CIlvCUmHEeFPwy/O78yXV5d+bbKu2jpN1jQkHTR4kRVXcBSgVlIB6 6Gd9VsYFjH3pwxUs54A6ETBa7+YNtnpCpBY7lf++3piX7PkjN5BiDLWxWkE/3RBmiMmR X4XHf7gd4NKENDTH7DGgfHJKwxWAui9Kdybb67AHdxIFCCP2FkUwBCNfSuLIpO+/Euaj 4+DA== X-Gm-Message-State: AOAM532CcaUo/6jyKvnenpk5SdWY4p6rWc9IcDiOQ33Zr8t2Cj0B2zUp G8yIMJ9i9DbwgSoNutAON9gW214YvscRBRJS X-Google-Smtp-Source: ABdhPJwwPSd5Ft9tJbP2yYYsmNWieVwF52J6zCLrtPp/yiE9Y6uoGzopoPGB9W+fwLGxZ+jbqXVWpQ== X-Received: by 2002:adf:fbce:: with SMTP id d14mr15293013wrs.44.1615581724354; Fri, 12 Mar 2021 12:42:04 -0800 (PST) Received: from localhost (host-96-177.parnet.fi. [77.234.96.177]) by smtp.gmail.com with ESMTPSA id n66sm3390578wmn.25.2021.03.12.12.42.03 for (version=TLS1 cipher=AES128-SHA bits=128/128); Fri, 12 Mar 2021 12:42:03 -0800 (PST) From: =?utf-8?q?Martin_Storsj=C3=B6?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 12 Mar 2021 22:42:02 +0200 Message-Id: <20210312204202.19486-1-martin@martin.st> X-Mailer: git-send-email 2.24.3 (Apple Git-128) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] nvenc: Use frameIntervalP instead of max_b_frames for offsetting output dts 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" If b-frames were enabled implicitly (if max_b_frames wasn't set by the caller at all, since a0949d0bcb0eee2f3fffcf9a4810c0295d14c0dc), we wouldn't offset dts at all, producing invalid pts/dts combinations (causing loud warnings by ffmpeg, or muxer errors if passed without an extra cleanup pass). Instead use frameIntervalP for offsetting, which should always be accurate. --- libavcodec/nvenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/nvenc.c b/libavcodec/nvenc.c index a061dee880..fbf55ebc9d 100644 --- a/libavcodec/nvenc.c +++ b/libavcodec/nvenc.c @@ -1921,7 +1921,7 @@ static int nvenc_set_timestamp(AVCodecContext *avctx, pkt->pts = params->outputTimeStamp; pkt->dts = timestamp_queue_dequeue(ctx->timestamp_list); - pkt->dts -= FFMAX(avctx->max_b_frames, 0) * FFMAX(avctx->ticks_per_frame, 1); + pkt->dts -= FFMAX(ctx->encode_config.frameIntervalP - 1, 0) * FFMAX(avctx->ticks_per_frame, 1); return 0; }