From patchwork Tue Feb 28 12:00:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40540 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1539781pzb; Tue, 28 Feb 2023 04:01:33 -0800 (PST) X-Google-Smtp-Source: AK7set85iXIN0EipsCQDBiuozJS5cRjbh64hcXFTWPLPSZszLJC1XHvdw/Vudsf1H/yeHqaEGKaa X-Received: by 2002:a05:6402:134b:b0:4ab:4c5e:b0ed with SMTP id y11-20020a056402134b00b004ab4c5eb0edmr3191819edw.21.1677585693514; Tue, 28 Feb 2023 04:01:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585693; cv=none; d=google.com; s=arc-20160816; b=sXqLcAFFqjez63atycBS5xdkyBh3eFRNsnfv6ppNhkTl16QteBG9hbftFd+3Ffdlg2 D28wmi4g+9SPDu/FV2lE3mLsffushTkcQqE8R3FoMouia5zoIVD8Z4EhoCGnoO2lGg6V 8gsSo7+4mqt2p7GE2ZiQx7YDzhQptPNra2EN1sr58LmIjuxmUV9wzen6UTmCFZWQRcxv aYNW7NqXrYTwH4Ocqx3/0PE/3EwOR1sdoaARDes5q4rcn72on89nfWvT4VWs4sK8LkVX IOSWgLvy/9ywVsADfaPn5Asynx1XzfQxehHnnOdZgEMRXVc4WLVtwrLJPQdX/IGrOSI6 CdRg== 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 :delivered-to; bh=OiD+DIxLBXMZ2c+lxVCJqQXdGlmBU1rICSqxGT8yop8=; b=YVKprbhpXbawBGwEUgaPBKpDR8xW+4P+uk4LYmRCrT7fMeiSYi85wsf6HCYpFPfbQj piChTyK4xLPb22HyYhxbzZJD6FqGrZKJkkk6bfI4ZCy1yL34RGz/mDb3Y6f8QmYSfKLU kCMXEPijKmMhw2QXj3U/8B3w76u/WjY3plLGfGwTITqwxHKSLLgNtfuMzXVcaGfwiyh/ 2YMnpYm5x4q9NeVDtDcSDdhL7D+Ifi6EsOQ/OK9moxqoVqf2XosuKXKCJo7Tq9wH5gDi jC6l/4LPE+K48o8DQLRE2VCIV1t9uifma92umqd6yssnj99dyG9RnKSJYFITo2WuS4VO McYw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r17-20020a056402035100b004ad8fc759f9si1141361edw.17.2023.02.28.04.01.32; Tue, 28 Feb 2023 04:01:33 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C905D68AA08; Tue, 28 Feb 2023 14:01:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88BB468A8F3 for ; Tue, 28 Feb 2023 14:01:22 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 9381D2406CA for ; Tue, 28 Feb 2023 13:01:21 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id VLCLsfHWgpWO for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B69392404EC for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 244253A02E1 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:00:57 +0100 Message-Id: <20230228120104.2347-1-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/8] lavu/frame: improve AVFrame.opaque[_ref] documentation 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: T+0gy7uimLxF Make them match each other, mention interaction with AV_CODEC_FLAG_COPY_OPAQUE. --- libavutil/frame.h | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/libavutil/frame.h b/libavutil/frame.h index 2580269549..4ed27cf43f 100644 --- a/libavutil/frame.h +++ b/libavutil/frame.h @@ -470,7 +470,18 @@ typedef struct AVFrame { int quality; /** - * for some private data of the user + * Frame owner's private data. + * + * This field may be set by the code that allocates/owns the frame data. + * It is then not touched by any library functions, except: + * - it is copied to other references by av_frame_copy_props() (and hence by + * av_frame_ref()); + * - it is set to NULL when the frame is cleared by av_frame_unref() + * - on the caller's explicit request. E.g. libavcodec encoders/decoders + * will copy this field to/from @ref AVPacket "AVPackets" if the caller sets + * @ref AV_CODEC_FLAG_COPY_OPAQUE. + * + * @see opaque_ref the reference-counted analogue */ void *opaque; @@ -678,13 +689,18 @@ typedef struct AVFrame { AVBufferRef *hw_frames_ctx; /** - * AVBufferRef for free use by the API user. FFmpeg will never check the - * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when - * the frame is unreferenced. av_frame_copy_props() calls create a new - * reference with av_buffer_ref() for the target frame's opaque_ref field. + * Frame owner's private data. + * + * This field may be set by the code that allocates/owns the frame data. + * It is then not touched by any library functions, except: + * - a new reference to the underlying buffer is propagated by + * av_frame_copy_props() (and hence by av_frame_ref()); + * - it is unreferenced in av_frame_unref(); + * - on the caller's explicit request. E.g. libavcodec encoders/decoders + * will propagate a new reference to/from @ref AVPacket "AVPackets" if the + * caller sets @ref AV_CODEC_FLAG_COPY_OPAQUE. * - * This is unrelated to the opaque field, although it serves a similar - * purpose. + * @see opaque the plain pointer analogue */ AVBufferRef *opaque_ref; From patchwork Tue Feb 28 12:00:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40546 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1541349pzb; Tue, 28 Feb 2023 04:02:25 -0800 (PST) X-Google-Smtp-Source: AK7set9af/vDMBe0/fffdX+kCOVUbnscN9jf0piEmIThV0K42vfL+hxWgxcdn9ERYwYxMedIH/fm X-Received: by 2002:a17:906:3106:b0:8b1:3483:e3d5 with SMTP id 6-20020a170906310600b008b13483e3d5mr2161925ejx.48.1677585745475; Tue, 28 Feb 2023 04:02:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585745; cv=none; d=google.com; s=arc-20160816; b=pLEKs5vuZA3XTkdWQBzZPvyhQNdzLDjvcFPpwrz6uxdzQj6zs3VcvkbhRwlQy438y5 BrTs5Fc3xpxGrOkjbdfLO97llJCuLlO3+sZ+n7+b/L7be9TMjEuyrcl7OhJAlPmiNjT5 LY9xEJkTxWxzpFKwc1eFixtVIzIlYhvhiKmArCvJldm21KDME4Ni3c5NKkNm6II+zQ3P xH9OK8Y0FKcvP09irlXNWMDh7mJ2BPmr+euLPOzCFVSb5KkBvjJwiVtdHktDOylY9N2U mndbIJVFFy7lr18ByrlhhZKX0bRKWVYLVHkSkh8C9yfPuKBWUhWTXLdIj9UNKxE5LHPx tMag== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=YL0BONVS0BKDg33zV3yOvnjUHiMqilxceB5ejhQhyNE=; b=BZP/ENKKX/xhA3Y/zJO2bPvYe7tCYfRh6QB9RqkXS0FhoztL3Ugj4gfHeJuuc7kfp+ ajgnlL72KkH+W355mBoMsj4LOh8amn3kG4+sF/Cn4/3kCnGCNRoaMVIAsbtcnaXTHdqJ wdVWi2LtKuIobRmRu21rlrGoIYrno30hIWirNTCma/NOVqaUJae/IBguSilBCZQdmfSD l1slkDMfuk5F4qBzm6GdSpNSk0R18jlBXiyrVy3a+LNkQQk7m24u7bZFNwODCI4Xx7vO JPwSC7Tfq0ZBkvJG07dRHpOKqCWRZOZQkclZnaGNGodZDSAdfzVmEYfJ8xdv4nQWr6Ns a4+A== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id s20-20020a056402165400b004aad0c7e385si2531292edx.270.2023.02.28.04.02.25; Tue, 28 Feb 2023 04:02:25 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BF2BF68AC78; Tue, 28 Feb 2023 14:01:35 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D66F568ABA5 for ; Tue, 28 Feb 2023 14:01:27 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 6A3CB2405B5 for ; Tue, 28 Feb 2023 13:01:24 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id KEpVaSmWaV7l for ; Tue, 28 Feb 2023 13:01:23 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id BB6B3240591 for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 31A813A0370 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:00:58 +0100 Message-Id: <20230228120104.2347-2-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/8] lavc/libvpxenc: drop frame_number 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: QuzqzopkYC0B It is not used, except to check whether the packet is valid before writing HDR metadata to the packet in storeframe(). However, that check serves no purpose, as the encoded packet is already treated as valid higher up in this function. --- libavcodec/libvpxenc.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 339d4d8146..eaa4ad8f25 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -63,7 +63,6 @@ struct FrameListData { uint32_t flags; /**< flags for this frame */ uint64_t sse[4]; int have_sse; /**< true if we have pending sse[] */ - uint64_t frame_number; struct FrameListData *next; }; @@ -84,7 +83,6 @@ typedef struct VPxEncoderContext { int deadline; //i.e., RT/GOOD/BEST uint64_t sse[4]; int have_sse; /**< true if we have pending sse[] */ - uint64_t frame_number; struct FrameListData *coded_frame_list; struct FrameListData *alpha_coded_frame_list; @@ -1220,9 +1218,8 @@ static inline void cx_pktcpy(struct FrameListData *dst, dst->sz = src->data.frame.sz; dst->buf = src->data.frame.buf; dst->have_sse = 0; - /* For alt-ref frame, don't store PSNR or increment frame_number */ + /* For alt-ref frame, don't store PSNR */ if (!(dst->flags & VPX_FRAME_IS_INVISIBLE)) { - dst->frame_number = ++ctx->frame_number; dst->have_sse = ctx->have_sse; if (ctx->have_sse) { /* associate last-seen SSE to the frame. */ @@ -1232,8 +1229,6 @@ static inline void cx_pktcpy(struct FrameListData *dst, memcpy(dst->sse, ctx->sse, sizeof(dst->sse)); ctx->have_sse = 0; } - } else { - dst->frame_number = -1; /* sanity marker */ } } @@ -1289,13 +1284,11 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, AV_WB64(side_data, 1); memcpy(side_data + 8, alpha_cx_frame->buf, alpha_cx_frame->sz); } - if (cx_frame->frame_number != -1) { if (ctx->hdr10_plus_fifo) { int err = copy_hdr10_plus_to_pkt(ctx->hdr10_plus_fifo, pkt); if (err < 0) return err; } - } return pkt->size; } From patchwork Tue Feb 28 12:00:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40543 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1540389pzb; Tue, 28 Feb 2023 04:01:53 -0800 (PST) X-Google-Smtp-Source: AK7set80SJOsJgukM0GnedwsctiCVJvh6AHzLxtX3i3d5RhG23OHKVYTzyAPZhUbY7b5+/JusMHN X-Received: by 2002:a05:6402:205c:b0:4ab:553:75d8 with SMTP id bc28-20020a056402205c00b004ab055375d8mr2951990edb.10.1677585713053; Tue, 28 Feb 2023 04:01:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585713; cv=none; d=google.com; s=arc-20160816; b=Cgz8P9Y+bttojeMXmN0hY3Aew44YpOMiHyP55U+t1s+YTVjx7rYOz48PpW11+TFzmH nxmdkJXYaowaqK8/s3uI6eEk0GqzwDeAqiGw9Bre5iLZlIqCyGbveHV2R0bv91DY1g+l BJHWN/MqVfWyNA0VEqG+3JwGk1YxoOzxDNee9dSqYwLGCOe76bwWtBrAEJPAZRswBgOA BDuyOJfwS4WIXsCacWjPSAZGXaViQOoJeYHwOPggxPM69ER5iKjFBhVMHc4hwXp9lJy9 7sRZdPTP0V20YMm2sDhgnrUWg55zBFHRVQ6XR8ZHwYBFmgdok24yFOsKL713l36zLEU+ zlsw== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=OqLlP8ji0DIG1l/4ZLU9FEvo7B0Z9QfWKXGCmE+I3js=; b=jpVmsVF5rQPVlP1jJCRVVaBD5v2/2YzN1yZTlUbrffIeiASJkn6XM0+aqG8B+rUqxn hFFkl5OqAec1LnsARNV8U/Fvt0n3XmPqcYP+cvw81BICNDtyrFsCMqPk4KSX6toaYK2y ml5M5ipTTA1QRU0i4vxCGZz+Gl0b62PcWB9NE4CkxJW0oH1XlcE9IHc4X8oDSWbV4w4I LohI8/SqhS5UfOeHWE5dCJNrtllXH4guVuj0dP6VIYsGi+QDF7vtKnNrq4Mj/pBRiqFd OxdeAzMJtY/3w982aus/EliCywhTkw+yEZv4GsjpYNm6w34KoOOHZIrzRQdNTjfqxzvV FP/g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r19-20020aa7c153000000b00499c322d3b9si11458353edp.377.2023.02.28.04.01.52; Tue, 28 Feb 2023 04:01:53 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BE55B68A92B; Tue, 28 Feb 2023 14:01:30 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 514ED6809C7 for ; Tue, 28 Feb 2023 14:01:23 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id EEC652404EE for ; Tue, 28 Feb 2023 13:01:22 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id f1lWT6tE8W78 for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B84BB2404F5 for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 3C9633A0376 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:00:59 +0100 Message-Id: <20230228120104.2347-3-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/8] lavc/libvpxenc: reindent 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: CtqSTsSQVQgo --- libavcodec/libvpxenc.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index eaa4ad8f25..abaa8c3513 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -1284,11 +1284,11 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, AV_WB64(side_data, 1); memcpy(side_data + 8, alpha_cx_frame->buf, alpha_cx_frame->sz); } - if (ctx->hdr10_plus_fifo) { - int err = copy_hdr10_plus_to_pkt(ctx->hdr10_plus_fifo, pkt); - if (err < 0) - return err; - } + if (ctx->hdr10_plus_fifo) { + int err = copy_hdr10_plus_to_pkt(ctx->hdr10_plus_fifo, pkt); + if (err < 0) + return err; + } return pkt->size; } From patchwork Tue Feb 28 12:01:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40544 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1540844pzb; Tue, 28 Feb 2023 04:02:09 -0800 (PST) X-Google-Smtp-Source: AK7set/QdZVG2khQgOo5x6kidYxBw/S+jm2MKb5CPnU9kPwSIvLDLU9t6OvLCfVUKFDff0Lhcgsm X-Received: by 2002:a17:907:1c98:b0:8e5:2b62:c3ac with SMTP id nb24-20020a1709071c9800b008e52b62c3acmr3071474ejc.77.1677585729481; Tue, 28 Feb 2023 04:02:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585729; cv=none; d=google.com; s=arc-20160816; b=0dKi9L3tmpZgxL7GBzgrXCSaj/asNMKVWQXFhUsztP5wTaqgFQd7s28kbCJXYr1ZG/ tgGB6IaZKjEuxf9BvTEI44sPjBeCtsy5cebm1kJHu51oXw2oMm8A9LSgTFdYQEyBRz0d s/ffP0/YJW69GMGUEIHkSF7J94imRB+AZDGAUjzQOCWLTLEeVGhgG6dibYGxacKyKpxR EEAEcGGGA+x5ZxM4+yNTZzFMgbpmn2HRSkiFmlBcJooMplmfjsQsWZq9Zx2EYwHU4Js9 0dJ2X/CaysWAYUbVb8Qqq/lFpG5Mnq1UKdaX6iWdiHFdNRX3IlqPvogkuSmuSkDYzEnO TbRQ== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=k/BMrjdyPdfvhiNck2m9uwaPGsu2K5X6MpfE2tRY834=; b=eC4dT+4a2dx0RzArTWru8j0sCoqT7emJKeuTLgDQLcFnS/5E56IdUYv6y0vzXn3omu gnm7MgRKy1UOUYZh02XxhprM6THx3WpRhBZ1iWKcPgrdPXHadObw+Oi6Wge0sSI1z6e7 5cfImEx6egTD9cOxVp5vgK+rkZgroHaQCjQ+8rsN6mhnDwDLe53Q9Vl6Kb8deTGojcZC TVCZb+HkwbZewzSklntn9RUaqqFkyxtCABzyZEY8tbUPfq9ltiSW9R7IACy3Qcue3Ihm YJS4JHoyAA9mRmaT4Yk5xuf29VasQI+Mdsv7PH+3J/CsEHdYzeQlmWtmYPFwbCBvR1DM 4BqA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ay7-20020a056402202700b004ada70cf9e2si11723571edb.58.2023.02.28.04.02.03; Tue, 28 Feb 2023 04:02:09 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D37E668A971; Tue, 28 Feb 2023 14:01:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 12BA868AA0F for ; Tue, 28 Feb 2023 14:01:24 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id C2D262404F5 for ; Tue, 28 Feb 2023 13:01:23 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id NlAtNN1lBIg3 for ; Tue, 28 Feb 2023 13:01:23 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B9D782404F8 for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 476B23A03E5 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:01:00 +0100 Message-Id: <20230228120104.2347-4-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/8] lavc/libvpxenc: rename hdr10_plus_fifo and related objects 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: Z175SymXGou0 This AVFifo is used to propagate HDR metadata from input frames to output packets, since libvpx does not allow passing through arbitrary user data. It will be extended to pass through other kinds of data in future commits, so give it a more generic name. --- libavcodec/libvpxenc.c | 51 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index abaa8c3513..77921badba 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -66,10 +66,10 @@ struct FrameListData { struct FrameListData *next; }; -typedef struct FrameHDR10Plus { +typedef struct FrameData { int64_t pts; AVBufferRef *hdr10_plus; -} FrameHDR10Plus; +} FrameData; typedef struct VPxEncoderContext { AVClass *class; @@ -130,7 +130,9 @@ typedef struct VPxEncoderContext { int corpus_complexity; int tpl_model; int min_gf_interval; - AVFifo *hdr10_plus_fifo; + + // This FIFO is used to propagate various properties from frames to packets. + AVFifo *fifo; /** * If the driver does not support ROI then warn the first time we * encounter a frame with ROI side data. @@ -327,32 +329,32 @@ static av_cold void free_frame_list(struct FrameListData *list) } } -static av_cold void free_hdr10_plus_fifo(AVFifo **fifo) +static av_cold void fifo_free(AVFifo **fifo) { - FrameHDR10Plus frame_hdr10_plus; - while (av_fifo_read(*fifo, &frame_hdr10_plus, 1) >= 0) - av_buffer_unref(&frame_hdr10_plus.hdr10_plus); + FrameData fd; + while (av_fifo_read(*fifo, &fd, 1) >= 0) + av_buffer_unref(&fd.hdr10_plus); av_fifo_freep2(fifo); } -static int copy_hdr10_plus_to_pkt(AVFifo *fifo, AVPacket *pkt) +static int frame_data_apply(AVFifo *fifo, AVPacket *pkt) { - FrameHDR10Plus frame_hdr10_plus; + FrameData fd; uint8_t *data; - if (!pkt || av_fifo_peek(fifo, &frame_hdr10_plus, 1, 0) < 0) + if (!pkt || av_fifo_peek(fifo, &fd, 1, 0) < 0) return 0; - if (!frame_hdr10_plus.hdr10_plus || frame_hdr10_plus.pts != pkt->pts) + if (!fd.hdr10_plus || fd.pts != pkt->pts) return 0; av_fifo_drain2(fifo, 1); - data = av_packet_new_side_data(pkt, AV_PKT_DATA_DYNAMIC_HDR10_PLUS, frame_hdr10_plus.hdr10_plus->size); + data = av_packet_new_side_data(pkt, AV_PKT_DATA_DYNAMIC_HDR10_PLUS, fd.hdr10_plus->size); if (!data) { - av_buffer_unref(&frame_hdr10_plus.hdr10_plus); + av_buffer_unref(&fd.hdr10_plus); return AVERROR(ENOMEM); } - memcpy(data, frame_hdr10_plus.hdr10_plus->data, frame_hdr10_plus.hdr10_plus->size); - av_buffer_unref(&frame_hdr10_plus.hdr10_plus); + memcpy(data, fd.hdr10_plus->data, fd.hdr10_plus->size); + av_buffer_unref(&fd.hdr10_plus); return 0; } @@ -447,8 +449,8 @@ static av_cold int vpx_free(AVCodecContext *avctx) av_freep(&avctx->stats_out); free_frame_list(ctx->coded_frame_list); free_frame_list(ctx->alpha_coded_frame_list); - if (ctx->hdr10_plus_fifo) - free_hdr10_plus_fifo(&ctx->hdr10_plus_fifo); + if (ctx->fifo) + fifo_free(&ctx->fifo); return 0; } @@ -919,9 +921,8 @@ static av_cold int vpx_init(AVCodecContext *avctx, // Keep HDR10+ if it has bit depth higher than 8 and // it has PQ trc (SMPTE2084). if (enccfg.g_bit_depth > 8 && avctx->color_trc == AVCOL_TRC_SMPTE2084) { - ctx->hdr10_plus_fifo = av_fifo_alloc2(1, sizeof(FrameHDR10Plus), - AV_FIFO_FLAG_AUTO_GROW); - if (!ctx->hdr10_plus_fifo) + ctx->fifo = av_fifo_alloc2(1, sizeof(FrameData), AV_FIFO_FLAG_AUTO_GROW); + if (!ctx->fifo) return AVERROR(ENOMEM); } } @@ -1284,8 +1285,8 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, AV_WB64(side_data, 1); memcpy(side_data + 8, alpha_cx_frame->buf, alpha_cx_frame->sz); } - if (ctx->hdr10_plus_fifo) { - int err = copy_hdr10_plus_to_pkt(ctx->hdr10_plus_fifo, pkt); + if (ctx->fifo) { + int err = frame_data_apply(ctx->fifo, pkt); if (err < 0) return err; } @@ -1702,18 +1703,18 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt, } } - if (ctx->hdr10_plus_fifo) { + if (ctx->fifo) { AVFrameSideData *hdr10_plus_metadata; // Add HDR10+ metadata to queue. hdr10_plus_metadata = av_frame_get_side_data(frame, AV_FRAME_DATA_DYNAMIC_HDR_PLUS); if (hdr10_plus_metadata) { int err; - struct FrameHDR10Plus data; + FrameData data; data.pts = frame->pts; data.hdr10_plus = av_buffer_ref(hdr10_plus_metadata->buf); if (!data.hdr10_plus) return AVERROR(ENOMEM); - err = av_fifo_write(ctx->hdr10_plus_fifo, &data, 1); + err = av_fifo_write(ctx->fifo, &data, 1); if (err < 0) { av_buffer_unref(&data.hdr10_plus); return err; From patchwork Tue Feb 28 12:01:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40541 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1540123pzb; Tue, 28 Feb 2023 04:01:44 -0800 (PST) X-Google-Smtp-Source: AK7set/2ktkanyJZGToBJsN7jpm7EJK55JO/u74kDRYSHufGnNU3HAnDNv0vVbFFUDiQfrHiw8gv X-Received: by 2002:a17:907:3da7:b0:7e0:eed0:8beb with SMTP id he39-20020a1709073da700b007e0eed08bebmr3017269ejc.41.1677585704696; Tue, 28 Feb 2023 04:01:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585704; cv=none; d=google.com; s=arc-20160816; b=A5d5y6Hjp62Q3ht1HvyL3kPF5dwJSt7+ibN8HnzLJFviYlD7uja8GBpGnFeksuudBe QPbsgVOtb93kSHR8qC9jq6dt58gKwxM8JJXzxkEe3O+6fahIRcSeOFo4hEdC76fZc7YQ Ye8A5pTQ906KQ87SPgPaDj/eE6qw9/zyaepHzxIuFnnVzIwx2mIMQe+3AvglG2FCJlxv e/ECeq+ionjGtqVMI967doguHct1EYgppa4sX/SbPsCPcH9wer6N00AGXnrvjUmQ3xCo VIDPaI9JtQkBBpxeaB4dvSvhHWPbARPILznE0Iz/Z6Qjcc8P288KUftxvsW8V8SfNacJ 5kpw== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=FaqtGuCptr+AnRSusN/uwDYzDhYW6M3XXH147h0Uc7g=; b=sFo3AHS8M+Dhd6hXfpNDex+FLKXG1dA5YOyZZYm9/I9jmgdtputOoVQYgcT8uZ5oMx Y9DIIuWAVrRQIQjBNLUlYnpJgglokWxC1OC0jwGQP0vAMccTAAYdWR54dLIN9Ii3eWrz +AXVRixLq1bLdECRlTAropQ5qus4MhVP6bJMar8SCoykq+sd+cCc6YEqWs6uRnGdyyjv O7kQlvaJZkjtAS4/96VhM69FsIptqhtO8EHM4/4Hkil4jcS+QKhbU3IIZFDcpBLpC7Np X2C3/tQkdoXOAQ9Mv7uTN8rqN4PbaPAm8OK2HrPfHtIb4lJ+MNiOT5m1kuDstDbG5AEL Fb9w== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v1-20020aa7dbc1000000b004ad15704e7csi11588957edt.376.2023.02.28.04.01.42; Tue, 28 Feb 2023 04:01:44 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D760968AAB6; Tue, 28 Feb 2023 14:01:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A08D868A92B for ; Tue, 28 Feb 2023 14:01:22 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 664ED2404EC for ; Tue, 28 Feb 2023 13:01:22 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id MuBGUExm5MGs for ; Tue, 28 Feb 2023 13:01:21 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id B77C12404EE for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 5358C3A0404 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:01:01 +0100 Message-Id: <20230228120104.2347-5-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/8] lavc/libvpxenc: handle frame durations and AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE 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: m1/HnBCDOY9r --- libavcodec/libvpxenc.c | 139 +++++++++++++++++++++++++++++------------ libavcodec/version.h | 2 +- 2 files changed, 100 insertions(+), 41 deletions(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 77921badba..af16e53deb 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -68,6 +68,14 @@ struct FrameListData { typedef struct FrameData { int64_t pts; + int64_t duration; + +#if FF_API_REORDERED_OPAQUE + int64_t reordered_opaque; +#endif + void *frame_opaque; + AVBufferRef *frame_opaque_ref; + AVBufferRef *hdr10_plus; } FrameData; @@ -329,32 +337,101 @@ static av_cold void free_frame_list(struct FrameListData *list) } } +static void frame_data_uninit(FrameData *fd) +{ + av_buffer_unref(&fd->frame_opaque_ref); + av_buffer_unref(&fd->hdr10_plus); +} + static av_cold void fifo_free(AVFifo **fifo) { FrameData fd; while (av_fifo_read(*fifo, &fd, 1) >= 0) - av_buffer_unref(&fd.hdr10_plus); + frame_data_uninit(&fd); av_fifo_freep2(fifo); } -static int frame_data_apply(AVFifo *fifo, AVPacket *pkt) +static int frame_data_submit(AVCodecContext *avctx, AVFifo *fifo, + const AVFrame *frame) +{ + VPxContext *ctx = avctx->priv_data; + const struct vpx_codec_enc_cfg *enccfg = ctx->encoder.config.enc; + + FrameData fd = { .pts = frame->pts }; + + AVFrameSideData *av_uninit(sd); + int ret; + +#if CONFIG_LIBVPX_VP9_ENCODER + // Keep HDR10+ if it has bit depth higher than 8 and + // it has PQ trc (SMPTE2084). + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DYNAMIC_HDR_PLUS); + if (avctx->codec_id == AV_CODEC_ID_VP9 && sd && + enccfg->g_bit_depth > 8 && avctx->color_trc == AVCOL_TRC_SMPTE2084) { + fd.hdr10_plus = av_buffer_ref(sd->buf); + if (!fd.hdr10_plus) + return AVERROR(ENOMEM); + } +#endif + + fd.duration = frame->duration; + fd.frame_opaque = frame->opaque; + if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE && frame->opaque_ref) { + ret = av_buffer_replace(&fd.frame_opaque_ref, frame->opaque_ref); + if (ret < 0) + goto fail; + } +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS + fd.reordered_opaque = frame->reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + + ret = av_fifo_write(fifo, &fd, 1); + if (ret < 0) + goto fail; + + return 0; +fail: + frame_data_uninit(&fd); + return ret; +} + +static int frame_data_apply(AVCodecContext *avctx, AVFifo *fifo, AVPacket *pkt) { FrameData fd; uint8_t *data; if (!pkt || av_fifo_peek(fifo, &fd, 1, 0) < 0) return 0; - if (!fd.hdr10_plus || fd.pts != pkt->pts) + if (fd.pts != pkt->pts) return 0; av_fifo_drain2(fifo, 1); - data = av_packet_new_side_data(pkt, AV_PKT_DATA_DYNAMIC_HDR10_PLUS, fd.hdr10_plus->size); - if (!data) { +#if FF_API_REORDERED_OPAQUE +FF_DISABLE_DEPRECATION_WARNINGS + avctx->reordered_opaque = fd.reordered_opaque; +FF_ENABLE_DEPRECATION_WARNINGS +#endif + + pkt->duration = fd.duration; + if (avctx->flags & AV_CODEC_FLAG_COPY_OPAQUE) { + pkt->opaque = fd.frame_opaque; + pkt->opaque_ref = fd.frame_opaque_ref; + fd.frame_opaque_ref = NULL; + } + av_buffer_unref(&fd.frame_opaque_ref); + + if (fd.hdr10_plus) { + data = av_packet_new_side_data(pkt, AV_PKT_DATA_DYNAMIC_HDR10_PLUS, fd.hdr10_plus->size); + if (!data) { + av_buffer_unref(&fd.hdr10_plus); + return AVERROR(ENOMEM); + } + + memcpy(data, fd.hdr10_plus->data, fd.hdr10_plus->size); av_buffer_unref(&fd.hdr10_plus); - return AVERROR(ENOMEM); } - memcpy(data, fd.hdr10_plus->data, fd.hdr10_plus->size); - av_buffer_unref(&fd.hdr10_plus); return 0; } @@ -914,17 +991,14 @@ static av_cold int vpx_init(AVCodecContext *avctx, return AVERROR(EINVAL); } + ctx->fifo = av_fifo_alloc2(1, sizeof(FrameData), AV_FIFO_FLAG_AUTO_GROW); + if (!ctx->fifo) + return AVERROR(ENOMEM); + #if CONFIG_LIBVPX_VP9_ENCODER if (avctx->codec_id == AV_CODEC_ID_VP9) { if (set_pix_fmt(avctx, codec_caps, &enccfg, &flags, &img_fmt)) return AVERROR(EINVAL); - // Keep HDR10+ if it has bit depth higher than 8 and - // it has PQ trc (SMPTE2084). - if (enccfg.g_bit_depth > 8 && avctx->color_trc == AVCOL_TRC_SMPTE2084) { - ctx->fifo = av_fifo_alloc2(1, sizeof(FrameData), AV_FIFO_FLAG_AUTO_GROW); - if (!ctx->fifo) - return AVERROR(ENOMEM); - } } #endif @@ -1285,11 +1359,9 @@ static int storeframe(AVCodecContext *avctx, struct FrameListData *cx_frame, AV_WB64(side_data, 1); memcpy(side_data + 8, alpha_cx_frame->buf, alpha_cx_frame->sz); } - if (ctx->fifo) { - int err = frame_data_apply(ctx->fifo, pkt); - if (err < 0) - return err; - } + ret = frame_data_apply(avctx, ctx->fifo, pkt); + if (ret < 0) + return ret; return pkt->size; } @@ -1703,24 +1775,9 @@ static int vpx_encode(AVCodecContext *avctx, AVPacket *pkt, } } - if (ctx->fifo) { - AVFrameSideData *hdr10_plus_metadata; - // Add HDR10+ metadata to queue. - hdr10_plus_metadata = av_frame_get_side_data(frame, AV_FRAME_DATA_DYNAMIC_HDR_PLUS); - if (hdr10_plus_metadata) { - int err; - FrameData data; - data.pts = frame->pts; - data.hdr10_plus = av_buffer_ref(hdr10_plus_metadata->buf); - if (!data.hdr10_plus) - return AVERROR(ENOMEM); - err = av_fifo_write(ctx->fifo, &data, 1); - if (err < 0) { - av_buffer_unref(&data.hdr10_plus); - return err; - } - } - } + res = frame_data_submit(avctx, ctx->fifo, frame); + if (res < 0) + return res; } // this is for encoding with preset temporal layering patterns defined in @@ -1953,7 +2010,8 @@ const FFCodec ff_libvpx_vp8_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_VP8, .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | - AV_CODEC_CAP_OTHER_THREADS, + AV_CODEC_CAP_OTHER_THREADS | + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .priv_data_size = sizeof(VPxContext), .init = vp8_init, FF_CODEC_ENCODE_CB(vpx_encode), @@ -1986,7 +2044,8 @@ FFCodec ff_libvpx_vp9_encoder = { .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_VP9, .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | - AV_CODEC_CAP_OTHER_THREADS, + AV_CODEC_CAP_OTHER_THREADS | + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, .p.profiles = NULL_IF_CONFIG_SMALL(ff_vp9_profiles), .p.priv_class = &class_vp9, .p.wrapper_name = "libvpx", diff --git a/libavcodec/version.h b/libavcodec/version.h index 06631ffa8c..789d9047c2 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -30,7 +30,7 @@ #include "version_major.h" #define LIBAVCODEC_VERSION_MINOR 4 -#define LIBAVCODEC_VERSION_MICRO 100 +#define LIBAVCODEC_VERSION_MICRO 101 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ LIBAVCODEC_VERSION_MINOR, \ From patchwork Tue Feb 28 12:01:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40545 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1541049pzb; Tue, 28 Feb 2023 04:02:16 -0800 (PST) X-Google-Smtp-Source: AK7set9s0of1JjAxgJuVbttFpq6Iw2LQdHxsjC83EDGRk788EyxkGDSI2gE3R6UcUefhzNdHXh9e X-Received: by 2002:a17:906:2b01:b0:870:baa6:6762 with SMTP id a1-20020a1709062b0100b00870baa66762mr2174671ejg.14.1677585735881; Tue, 28 Feb 2023 04:02:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585735; cv=none; d=google.com; s=arc-20160816; b=hW4DKCtci3c9ijc7CBujJmRbcnESFBsvNnnm4IlK8i8coE8MUuLK+iQI0FkcpcqZUx yNQtXJbHcPWWu7hidWE6Jk9HFtRFId+5704bHRw8XvCsm5+hxVjyU53bE07HUcXCEPAb pmU+UXN18qUVYZjCQNxzQamuE7Cjq0J72NA5Bl10TBTNjsmsWo11hkUItWZfxaWpV04a tayhE0zyuG7+KAlNz4FYrrX//9I3LeiXuhY6UqnaMqrei2nR7pViXgWWHgPdCMPhJybD /3uVsho8tjhbUxmaQ4EacbmvrY78BM95sfrDaT4lqDa8DWFVha+5JfKbpaGz8LFGjX3V RUgQ== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=ZeUCCyLcbET7r24XZRv7xri0sbxfsD8JExMi3kfCSqo=; b=OTUhe3cF2xgWijrc8OyRJn1L1lHMjMlPN7gW8ItthhapqbR2yt/z1eRUyfV2ivFvgU 31h+iavC1JPXpkkuhrpn40hVbbpCKnuq5s0x7NQyIVhIBAiIdU9n72jat8yFq69BIToC W4pzWSN9E+hejW8Vk7gQ6P9SxjTCGGqt9eHRSWZB8ejWpahTsdg0ZQPHaOXmnN/bG8kT oXroQHzvC/kGdMU+gpwdHB7JmWc/bTzfUQk1xsh997nBo2GYRaiNsx3LFtsuF+vm/M0C DKgbFkgajdZiMHmJAxA6CXdRzIHZ9ysVxcVB9e8LN7trPK+FamRJ+3bfSOppf2Da3kvo cOtQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i14-20020a05640200ce00b004ad7ceba692si210795edu.20.2023.02.28.04.02.14; Tue, 28 Feb 2023 04:02:15 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CC35568AB9E; Tue, 28 Feb 2023 14:01:32 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7436868A92B for ; Tue, 28 Feb 2023 14:01:25 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 3278B2404F8 for ; Tue, 28 Feb 2023 13:01:24 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id dbIwmvCUrvXT for ; Tue, 28 Feb 2023 13:01:22 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id C24DE2405B5 for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 5EF6A3A042D for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:01:02 +0100 Message-Id: <20230228120104.2347-6-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/8] lavc/libvpxenc: drop a useless condition 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: zSUIKCxP0QNF A non-NULL packet is always passed to frame_data_apply(). --- libavcodec/libvpxenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index af16e53deb..33f35bbaf4 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -401,7 +401,7 @@ static int frame_data_apply(AVCodecContext *avctx, AVFifo *fifo, AVPacket *pkt) { FrameData fd; uint8_t *data; - if (!pkt || av_fifo_peek(fifo, &fd, 1, 0) < 0) + if (av_fifo_peek(fifo, &fd, 1, 0) < 0) return 0; if (fd.pts != pkt->pts) return 0; From patchwork Tue Feb 28 12:01:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40542 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1542017pzb; Tue, 28 Feb 2023 04:02:47 -0800 (PST) X-Google-Smtp-Source: AK7set9M/q6dG82HGepuaf2j9OjTEHjg8nJR094drvk6zOniTnGbl6plC/moHsqKE1Zo3A0GkskG X-Received: by 2002:a05:6402:4d:b0:4ac:bcf9:6d6c with SMTP id f13-20020a056402004d00b004acbcf96d6cmr2617469edu.36.1677585767395; Tue, 28 Feb 2023 04:02:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585767; cv=none; d=google.com; s=arc-20160816; b=Z4R1u7kHjmCho/bzzAdmTBGCukXpCSEBFad8qVYlSdAGKCiUkCG2O2q8SQcVmYtMMB Dh74HP4EIarhYflLlSkO6zWJEEwmbF+YGo+qGyT/UH2WhZS2zg/K3/7ruvTdxrZAywA2 u8bxedNEsO+cS5faBpd8oVfJG6e6jgXZxX7BTeJIFQShfUGuwYrAeKOGi9NqCVupyiZD EpBUtrtZUHi9apSrj38Nq7TzdEUpm1Ah9GcuQetQJVuULdYrZayteBPfbJ7VBGjSEJaa oIRDf7pDXp8B7mRAV5/WSHMihnMRG8mifG31I/yj8zx0s0q3XhDOHO82ZxUMsMPQ1xBv 5pBA== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=Sr0IvghA+f80s4g8mEylxUcscB7ZvrxLSzuZwfZzL6A=; b=KHRlPlW0BKKScmz7fpHVWis9v07AGdlz/O187TTDB9dZ9h9EsKCN5zr+H4kiLFZCOP vwj7i2l18ssMtjGGMk2ZuPxrMHOFS3rO4ZnHdsXdc5xs4D3cbErP+jM/oEX7b0mfv+Ev PNA/eFxjgKGn0/eJjOxg0BJ3dfx5Slya4XVcWos+8G7tbMMeAP/7HRvhcLwp7T2Ny2zd sZwJENvIBQenNUkxgTQmGLiiXJCjwkUK40VoQ7O6iSgw3dWc2OzXuGTkimZKSum1igJv KGqiqOK9Zx3mppQ8Z8n7NiSd0wnfbluGbmmi22yDNeO5VpjzX4kB8XHOOxgsULjv9hXD VB6A== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c13-20020aa7df0d000000b004acbbda703asi11342832edy.41.2023.02.28.04.02.46; Tue, 28 Feb 2023 04:02:47 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC2A168ACB0; Tue, 28 Feb 2023 14:01:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F3F9068ABE5 for ; Tue, 28 Feb 2023 14:01:27 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id EEE6A2405EC for ; Tue, 28 Feb 2023 13:01:24 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id xUh8pU0Z-Xln for ; Tue, 28 Feb 2023 13:01:24 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 1092A2405F9 for ; Tue, 28 Feb 2023 13:01:21 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 6A7CB3A0567 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:01:03 +0100 Message-Id: <20230228120104.2347-7-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/8] lavc/libvpxenc: handle queue desync more gracefully 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: xbAqkRqW40fw If the packets returned by libvpx and our internal frame properties queue get desynchronized for some reason (should not happen, but it is not clear libvpx API guarantees this), we will keep adding to the queue indefinitely and never remove anything. Change the code to drain the queue even if timestamps do not match. --- libavcodec/libvpxenc.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index 33f35bbaf4..aeeaa0e681 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -401,11 +401,16 @@ static int frame_data_apply(AVCodecContext *avctx, AVFifo *fifo, AVPacket *pkt) { FrameData fd; uint8_t *data; + int ret = 0; + if (av_fifo_peek(fifo, &fd, 1, 0) < 0) return 0; - if (fd.pts != pkt->pts) - return 0; - av_fifo_drain2(fifo, 1); + if (fd.pts != pkt->pts) { + av_log(avctx, AV_LOG_WARNING, + "Mismatching timestamps: libvpx %"PRId64" queued %"PRId64"; " + "this is a bug, please report it\n", pkt->pts, fd.pts); + goto skip; + } #if FF_API_REORDERED_OPAQUE FF_DISABLE_DEPRECATION_WARNINGS @@ -419,20 +424,22 @@ FF_ENABLE_DEPRECATION_WARNINGS pkt->opaque_ref = fd.frame_opaque_ref; fd.frame_opaque_ref = NULL; } - av_buffer_unref(&fd.frame_opaque_ref); if (fd.hdr10_plus) { data = av_packet_new_side_data(pkt, AV_PKT_DATA_DYNAMIC_HDR10_PLUS, fd.hdr10_plus->size); if (!data) { - av_buffer_unref(&fd.hdr10_plus); - return AVERROR(ENOMEM); + ret = AVERROR(ENOMEM); + goto skip; } memcpy(data, fd.hdr10_plus->data, fd.hdr10_plus->size); - av_buffer_unref(&fd.hdr10_plus); } - return 0; +skip: + av_fifo_drain2(fifo, 1); + frame_data_uninit(&fd); + + return ret; } static av_cold int codecctl_int(AVCodecContext *avctx, From patchwork Tue Feb 28 12:01:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 40547 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp1541682pzb; Tue, 28 Feb 2023 04:02:36 -0800 (PST) X-Google-Smtp-Source: AK7set8VBzTu9Q+9rVk2Av6UInoDvztkZCqU1Rs3b8IAMXnM0HesSzjPzHebvPF0NPgwucn7GeVB X-Received: by 2002:a17:906:3b82:b0:889:d998:1576 with SMTP id u2-20020a1709063b8200b00889d9981576mr2049765ejf.66.1677585756744; Tue, 28 Feb 2023 04:02:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1677585756; cv=none; d=google.com; s=arc-20160816; b=FmeAp14hjvsoTMBJoG5WzuhNyqx2W61eAIomSyh2ip0PJ04vyRcrbbRIr+u1/au7K1 VnPYE5zhprLNrXEKRADRVEZwIwGTtnV8ZgLyv/DAWxyoyAYZieHa8Dsv60Cp2ON9NK4F AhbBaetzorRXe+qIZJIKZ8X+HMLCZIkS68ZeIFxFbFFxoDn8nInppp2I16o9LJmz0Wbx /LCZQhAMJCcHHYLBxa8QFIGfowq21hcyGnLJp58z3y2iJHHvq/MCP9LZwsyMolbLnlrG q3ao3NuM45CuZI/KbKrPgGkY6gm6mh5zpQBgzabntt4GxOaON8DZh8JgzedECVNbHQdR PEyA== 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:references:in-reply-to:message-id :date:to:from:delivered-to; bh=l1nfHNkSvIUffg9ovoTlqalBp8vQ8dUqlaZ9SFCr9SY=; b=q/t3eTiYGyuQH4YC8btGxAfaifb0DR1VNEi343fDLk4kR5/yHC9/84FiLj6cG1VTjd kQ1IoIzExHuOI3Xaw72Dclu4sd0YdUu0gTTluiGLlryOxu1yedrBSDWfRVvRTPy3sJtO pqEIeZbPHLcrpw0v8No0jCtg4QvfBOTOEdxHigaEZiQPDHbD2+d7AAOhOcTS4gsaAlG2 RTDi7ONM6vqGCOgD/YTt+cx9jfm9Rdvv4GUAROT0PNgemUk2Z4TJT20vZ1/EoZIw4EGE EoMyDevGx9ltY3fSX6cSAt+XMUwdRhGRgX5Y1Y9WBWKac9+tn+4ZbMkqkPfNhYrM4i1u /5Bg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a5-20020a170906684500b008d89608d4a2si2409993ejs.204.2023.02.28.04.02.36; Tue, 28 Feb 2023 04:02:36 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id ED3A268AA0F; Tue, 28 Feb 2023 14:01:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E344268ABBC for ; Tue, 28 Feb 2023 14:01:27 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id B9F0C240591 for ; Tue, 28 Feb 2023 13:01:24 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id Z9fJWZpf8-Zq for ; Tue, 28 Feb 2023 13:01:24 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id CC5362405EC for ; Tue, 28 Feb 2023 13:01:20 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 75AEB3A0586 for ; Tue, 28 Feb 2023 13:01:14 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 28 Feb 2023 13:01:04 +0100 Message-Id: <20230228120104.2347-8-anton@khirnov.net> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230228120104.2347-1-anton@khirnov.net> References: <20230228120104.2347-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 8/8] lavc/libvpxenc: drop FrameListData.duration 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: Vx1WIwJFeT5v It is write-only. --- libavcodec/libvpxenc.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/libavcodec/libvpxenc.c b/libavcodec/libvpxenc.c index aeeaa0e681..3d1abb7df9 100644 --- a/libavcodec/libvpxenc.c +++ b/libavcodec/libvpxenc.c @@ -58,8 +58,6 @@ struct FrameListData { size_t sz; /**< length of compressed data */ int64_t pts; /**< time stamp to show frame (in timebase units) */ - unsigned long duration; /**< duration to show frame - (in timebase units) */ uint32_t flags; /**< flags for this frame */ uint64_t sse[4]; int have_sse; /**< true if we have pending sse[] */ @@ -1295,7 +1293,6 @@ static inline void cx_pktcpy(struct FrameListData *dst, VPxContext *ctx) { dst->pts = src->data.frame.pts; - dst->duration = src->data.frame.duration; dst->flags = src->data.frame.flags; dst->sz = src->data.frame.sz; dst->buf = src->data.frame.buf;