From patchwork Tue May 16 23:41:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 41647 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp789603pzb; Tue, 16 May 2023 16:41:46 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5AAHc2E7wcgGYwCk0lrC1HTkV+cCexz476rDdpiDRs0YfmmG4VFzR+bjH3zJMJkaQzDGl/ X-Received: by 2002:aa7:c992:0:b0:504:b64d:759c with SMTP id c18-20020aa7c992000000b00504b64d759cmr557829edt.35.1684280506450; Tue, 16 May 2023 16:41:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684280506; cv=none; d=google.com; s=arc-20160816; b=OU6SaZtr4DhXEcCOmnoTj7O8l7FKSl8NzFNCuwMdyE5iZV3LQqge33w13sRoHLcRWb pHjaHhBCvilW9PE/oXzSbbwbNoNobzFgRBfzp1OodHhoTqjAyyCqO++m4jk0nChIurqB 3T5GuEK07EibxecazIoGMg2TIqjs+u5Q9DCFJoArFtkXoF68b2SzCXBdHITxiX1dOVC/ hkQls2iGYCplplO4FAZjsgSO8vi+8kVRYRvhpwcbf3leUgjvjeMG8Lj/Ivbf5lLHaSlG rtMWDgvk1+jsPmsJUr8Yvyw11ZjTPialFVNLbQVSBUtmZX36OKOMJni1q2+dMGMVc9W0 +wrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=Dy5RE2a6UT8m7kqY3g6d+AaWj54RXl7p3t3j/Og7n18=; b=daTus4kfdBkx9h0Q23FlQ7yX+5Rh0WSac5vOXaGyw0Gli5gL7KDz5j3PmtqFyGUe+0 HspESQVPwHdYiRbVBGxxI/3xzWL8sGVwagvfrUUS6oHw36yvsPe6X7dZ3yUTrPvSiKz3 e7iCqGM2juKXfuVHUBANiiHCCYVuzRoj5KNCAfIhpvUe38f/09pLSPl/J/TBWaCyUNwC qowcaJZEXUztvuIxuLsdi05IenWCgXjrMuZEvoCqnyr59qMeodf9aUrQr0ZZWyW0kovK TORZHtNU/rkPE9AGjEprHlyi4m4wJrA2oaSSqCMWbV2oJzbirMYhaUFNzCOicr2yUcs1 fLHA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=H4SKU5xb; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b10-20020aa7c6ca000000b0050bc6c657c7si13879100eds.466.2023.05.16.16.41.46; Tue, 16 May 2023 16:41:46 -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=@gmail.com header.s=20221208 header.b=H4SKU5xb; 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=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 261D168C051; Wed, 17 May 2023 02:41:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1374068BA65 for ; Wed, 17 May 2023 02:41:37 +0300 (EEST) Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-6ab13810d34so190019a34.0 for ; Tue, 16 May 2023 16:41:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684280495; x=1686872495; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=vzehwjDD6EHxL+DolCLZoIg79+fyzDHJLyWQBdyd+o8=; b=H4SKU5xbDr3iH5Zwc1XE8tEIexRMrgRqWPvUQubZ8+PN/AvquBFc0U1SUzqVbGpQEh Y0ajPKbeg7RcA+oONy3piyCSR90an5RksS91TL50UtJ8JfaSqaIBiRW16I3vBGILXUSl +t5QTRHy8z0X31suwmA/JLtqPSgV2ffKQ3LLkCeShd1KlovSc0Awnl/ID0w968dtiLhh 6LEPpIKDMOKYldQKYrAftN3960sQ/W2u1lATb47vw8tBdoXUaTeNYKLgfF2L6/ptflVp bF2CalHoD+M1/dOqjcMknaSvRQVprLwppuySZf+cgPg/fBfnu6slzS5cmo8xRmeeUY3t QlkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684280495; x=1686872495; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=vzehwjDD6EHxL+DolCLZoIg79+fyzDHJLyWQBdyd+o8=; b=g5JOEK47OF/0qTv7y9Ezs4NVVdeChP/+IuK4G16LjyX+HkH8x9ZhUULZ8osqhopzfo LKJrK2wrUouEGridqdz+ToxBGXz83Up30RQxYpTNvaycrUCwYpQ23ZOLwM0nGsefPpDN wNk3iGDvVmN1mtB2YyshhqJnRZMPWFWY+jGmNmPSAR5dJKKTPqMkbdHN2ErQu3WkjNUI vRO4R6poWMns9fXOkTz7vjBwuaM8C2CCkFGG06TRtH+JtE9k81z//7TBWYJRdRMHpwUk TdbpO9x9UbblRLgsEfyNpLNsBZf/pF5cYJZ+Bi5fPJAZUFj0n+28Do7jbdd1RPbU66ZK Fa0w== X-Gm-Message-State: AC+VfDweObgJeGrINBteFcsDxtIEcpfm5pWoL6JYoHU7RHC4ivQ2+P4p WtUoT6K/iPCmOYL7V6n+0pyZkqs0eI0= X-Received: by 2002:a05:6871:40f:b0:187:e4cf:b6ca with SMTP id d15-20020a056871040f00b00187e4cfb6camr20091305oag.23.1684280494970; Tue, 16 May 2023 16:41:34 -0700 (PDT) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id ea20-20020a056870071400b001964dc3dadesm7470598oab.45.2023.05.16.16.41.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 May 2023 16:41:34 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Tue, 16 May 2023 20:41:29 -0300 Message-Id: <20230516234129.1458-1-jamrial@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avcodec/libdav1d: export decoder frame delay X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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" X-TUID: dBTfA2bw3Ptg As this is an AV_CODEC_CAP_OTHER_THREADS decoder, threading is handled by the underlying library. In this case, the frame delay is calculated by libdav1d based on the values from avctx->thread_count and the private max_frame_delay option. Export said delay reported by the library in AVCodecContext.delay Signed-off-by: James Almer --- Now using the existing AVCodecContext field for this purpose instead of a private field that needs to be accessed through the AVOption API. libavcodec/libdav1d.c | 9 +++++++++ libavcodec/version.h | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/libavcodec/libdav1d.c b/libavcodec/libdav1d.c index 4c48f0099a..c15e98cbd1 100644 --- a/libavcodec/libdav1d.c +++ b/libavcodec/libdav1d.c @@ -276,6 +276,15 @@ static av_cold int libdav1d_init(AVCodecContext *c) if (res < 0) return AVERROR(ENOMEM); +#if FF_DAV1D_VERSION_AT_LEAST(6,7) + res = dav1d_get_frame_delay(&s); + if (res < 0) // Should not happen + return AVERROR_EXTERNAL; + + // When dav1d_get_frame_delay() returns 1, there's no delay whatsoever + c->delay = res > 1 ? res : 0; +#endif + return 0; } diff --git a/libavcodec/version.h b/libavcodec/version.h index da2264a097..2e28c23410 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #include "version_major.h" #define LIBAVCODEC_VERSION_MINOR 12 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \