From patchwork Fri Oct 25 02:26:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 52486 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:be6b:0:b0:48e:c0f8:d0de with SMTP id bd11csp48578vqb; Thu, 24 Oct 2024 19:27:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWopTrXiJeiUrJHyYwH5MhsEmq0FIP0Uek3CXilZBCN3qbBwqWVExtGgvpBxiJxejGcgJkLveSfnZDLVaWXefS+@gmail.com X-Google-Smtp-Source: AGHT+IHBnLMXloPOwGWTO5BcR43nUE1VAqFVie9eTQ49f0GtkUTZ/LEC86UmR1p8pwrd6jrTw2wM X-Received: by 2002:a05:6402:27ce:b0:5c4:14fe:971e with SMTP id 4fb4d7f45d1cf-5cba249331fmr3459049a12.23.1729823231283; Thu, 24 Oct 2024 19:27:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1729823231; cv=none; d=google.com; s=arc-20240605; b=VR685pH0gN5Et/pqWiTfzFM4lWR3PK93iqPaXMVSbTDbvDSeuCrdR6edRi2qV67D8g 1dxoA6Ra9WdqHO2+vLnQdiNAjZx8/x4RBKH9bMQKA6LpBoSWJT+MqubadzYd9jFlQm+C 77RmL3xkd07W3g4JkdVOzlCn6RAz9TC2wvqovzHcw8DNAhqLeal11IMRfG4SdtxGmW3K xto2kUTt4MaRCj4MtXKx0teay/YB7v3nSrGugd/E9U4WLovsBT5rdY5oBFf0P0q1NfT6 vgTWqJGMA8ZxhvIh5XXXPSXi401N3GbeDCbSSpZZ6X36bmEml7U6kEoWkeigfkiCctGl F5fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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=O4zIStCgdQVic6CcqzfXVrvRvenoXPKFmB7lRd2+AnA=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=aBNPjkqPmM0+tGYbNdaiGepW9ZjCcnRqAg9dOtN1ABLhaRtba4LZeZJRMVz38xYiXh jbC5adCZuWtH7z8uaPhZlucIGpyTqC6zDmQPJKk3zhDFxRJoDafuyvTD8+1N4A+6EnG1 rBxPrDYhi8HMloozqTk1zMxLN4cjoQW07S7cd+fGKhE8xKK3+3kcuwq+H01KCV/vimJ9 tF1mUpWoVBHX510ROaYFL35xTTcl9fZGeWImmgp666nsidEY3Z8aFNfYk8SZ1t+Twr7e M6s1pQ4GItbJfU2vujfCSxKqPhwhiPqrEI8fpS+Z+x8hc1usxH6Ix2Io0K6jpOOvyK/a +22A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=IM9FDn78; 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; dara=fail header.i=@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 4fb4d7f45d1cf-5cbb6308343si173773a12.212.2024.10.24.19.27.10; Thu, 24 Oct 2024 19:27:11 -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=20230601 header.b=IM9FDn78; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3635B68DD14; Fri, 25 Oct 2024 05:27:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f177.google.com (mail-pg1-f177.google.com [209.85.215.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3D1EA68D79B for ; Fri, 25 Oct 2024 05:27:01 +0300 (EEST) Received: by mail-pg1-f177.google.com with SMTP id 41be03b00d2f7-7ea8ecacf16so1005204a12.1 for ; Thu, 24 Oct 2024 19:27:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729823218; x=1730428018; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=8lYeIuqEpS6Kp753QsNpckWgN2ozrQFAw/ZcGyiTcEE=; b=IM9FDn78Tadl6104qclUr2cvxY0cURFsjG7DWFaMPUj/Hi4X7xn5pmTMwkvyGeCRM+ 5jbS6R1Lve+pEBWNvjDURdgMZDEv+7bCyeLyIiGXps0wBsC4E9BbdZcULFnGMPBN8QRp O00m9TCKySY5xEAYtoXF9McWU9S8O9gnWNf0gzUn1A31umEUsLllc0uWm7jMEvnNDQ3Q JZ0tWF4EAtiXxqJj6OwlYZ58WEMbR4pdc+0Tb+XprUOu7HWS7w4XGEwYo6TLFQE0OsyO bbMdgoz7fDj084CBUsgykHlmPP9Rod9veST5PF1xjAPMABpDYKAchvE1NiaIwZFD/ROP xlJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729823218; x=1730428018; 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=8lYeIuqEpS6Kp753QsNpckWgN2ozrQFAw/ZcGyiTcEE=; b=V3m+JYWe1SoMYO0xibJgXeykzMWsXsZTXGl+SZgW2ymoR9WCic93uNhRJP1rD/FFAd h474alfzU7djbbxveXTvgKx0rGHigqdWyuBi/sctBvv3hH3SvWwONYLKyj+T/Q1jU72u qn4yvna58QpeXifMjo7FYCdXtCcLzO1FNnZ+11jUSD9PilV4+eFzq/XBrB7QrAAZpn7Z /LxCa3dIIPFGXx760HjjVSQT7l0wPNWWAF01NZ4vsYO1XbXKrp2wpqEhf5itWHafqqmq 2yYXOEqUrL/SNmf1PViWRt6HXzb3cYEDMG0YOql9iRybTWH5VAvx04k06jnQ4GPB+G8l PMRw== X-Gm-Message-State: AOJu0Yz1PX7zpMfMgow1qb2OfagVtMBa5Eogwo/O1QmZPCnKZNA1OuPh 3QHVHrSpcvE388vAnA4HC3tN0OvvrCdTgIb63Fdl8eS6poDro4HvVLYE0g== X-Received: by 2002:a05:6a20:d528:b0:1d9:28ae:5e72 with SMTP id adf61e73a8af0-1d978b97cabmr8440066637.36.1729823218239; Thu, 24 Oct 2024 19:26:58 -0700 (PDT) Received: from localhost.localdomain ([181.92.233.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e48ed34sm2485491a91.9.2024.10.24.19.26.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2024 19:26:57 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Oct 2024 23:26:09 -0300 Message-ID: <20241025022613.3921-1-jamrial@gmail.com> X-Mailer: git-send-email 2.47.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/5] Partially revert "avcodec/h2645: allocate film grain metadata dynamically" 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: l7DhBvO9DAYS AVFilmGrainAFGS1Params, the offending struct, is using sizeof(AVFilmGrainParams) when it should not. This change also forgot to make the necessary changes to the frame threading sync code. Both of these will be fixed by the following commit. Signed-off-by: James Almer --- libavcodec/h2645_sei.c | 17 +++++------------ libavcodec/h2645_sei.h | 2 +- libavcodec/hevc/hevcdec.c | 4 ++-- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 33551f5406..a481dbca2c 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -245,12 +245,7 @@ static int decode_registered_user_data(H2645SEI *h, GetByteContext *gb, provider_oriented_code = bytestream2_get_byteu(gb); if (provider_oriented_code == aom_grain_provider_oriented_code) { - if (!h->aom_film_grain) { - h->aom_film_grain = av_mallocz(sizeof(*h->aom_film_grain)); - if (!h->aom_film_grain) - return AVERROR(ENOMEM); - } - return ff_aom_parse_film_grain_sets(h->aom_film_grain, + return ff_aom_parse_film_grain_sets(&h->aom_film_grain, gb->buffer, bytestream2_get_bytes_left(gb)); } @@ -894,11 +889,9 @@ FF_ENABLE_DEPRECATION_WARNINGS } #if CONFIG_HEVC_SEI - if (sei->aom_film_grain) { - ret = ff_aom_attach_film_grain_sets(sei->aom_film_grain, frame); - if (ret < 0) - return ret; - } + ret = ff_aom_attach_film_grain_sets(&sei->aom_film_grain, frame); + if (ret < 0) + return ret; #endif return 0; @@ -925,7 +918,7 @@ void ff_h2645_sei_reset(H2645SEI *s) s->ambient_viewing_environment.present = 0; s->mastering_display.present = 0; s->content_light.present = 0; + s->aom_film_grain.enable = 0; av_freep(&s->film_grain_characteristics); - av_freep(&s->aom_film_grain); } diff --git a/libavcodec/h2645_sei.h b/libavcodec/h2645_sei.h index 8bcdc2bc5f..f001427e16 100644 --- a/libavcodec/h2645_sei.h +++ b/libavcodec/h2645_sei.h @@ -138,10 +138,10 @@ typedef struct H2645SEI { H2645SEIAmbientViewingEnvironment ambient_viewing_environment; H2645SEIMasteringDisplay mastering_display; H2645SEIContentLight content_light; + AVFilmGrainAFGS1Params aom_film_grain; // Dynamic allocations due to large size. H2645SEIFilmGrainCharacteristics* film_grain_characteristics; - AVFilmGrainAFGS1Params* aom_film_grain; } H2645SEI; enum { diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index 1ea8df0fa0..900895598f 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -413,7 +413,7 @@ static int export_stream_params_from_sei(HEVCContext *s) } if ((s->sei.common.film_grain_characteristics && s->sei.common.film_grain_characteristics->present) || - (s->sei.common.aom_film_grain && s->sei.common.aom_film_grain->enable)) + s->sei.common.aom_film_grain.enable) avctx->properties |= FF_CODEC_PROPERTY_FILM_GRAIN; return 0; @@ -3268,7 +3268,7 @@ static int hevc_frame_start(HEVCContext *s, HEVCLayerContext *l, s->cur_frame->f->flags &= ~AV_FRAME_FLAG_KEY; s->cur_frame->needs_fg = ((s->sei.common.film_grain_characteristics && s->sei.common.film_grain_characteristics->present) || - (s->sei.common.aom_film_grain && s->sei.common.aom_film_grain->enable)) && + s->sei.common.aom_film_grain.enable) && !(s->avctx->export_side_data & AV_CODEC_EXPORT_DATA_FILM_GRAIN) && !s->avctx->hwaccel; From patchwork Fri Oct 25 02:26:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 52490 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:be6b:0:b0:48e:c0f8:d0de with SMTP id bd11csp174401vqb; Fri, 25 Oct 2024 01:24:05 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVruBl07ixJTG+q/UlyxX/bx+KvbdnKKW1r3uFD793fHkDMbh+Nr8s+OudgFSbd/0zFE6zCRiNTCviiRQGB/QXX@gmail.com X-Google-Smtp-Source: AGHT+IHk3J0KxSrdxVI9x1xdrRstCukPRHqIBUz8OQZpbU6wX1b+9blSXGGt5xPGwf7Bg2wqOUFM X-Received: by 2002:a05:6402:3550:b0:5cb:6712:6089 with SMTP id 4fb4d7f45d1cf-5cba23f1ba5mr3269662a12.7.1729844644847; Fri, 25 Oct 2024 01:24:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1729844644; cv=none; d=google.com; s=arc-20240605; b=PAsE0mMw5TFH+8WKudp3kp5ptmMAZ53MciP5JHVJAHYGb5SOLbomQ0tuq3PNpQ7g+r 0/x6cxEcsWMUOYTWN/BL6Umgg7uxbTbZUelPZ8GTZZuLoIy1/DqZJVQpesATzyPyaAFa vn9H+R+76QtE8rGPdFVSt8gemrlgMk14iyXtEJhC/Ygw20Rq5TNNBiCLw8lyB1an2U+v gsZy9fTHBQq3VpmujmmpDtgb3B5muTPlKWbE307FM1bTK5CIDgC7dV9Azjfi4xf/tVPI gwCFgNn9ZYVIL8nFaot3FsX15hR1Gn7TWqvv8p++ENQRIbnJNT8TgHXlehHUgSGMBnrs 00+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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:dkim-signature:delivered-to; bh=4sDGOOd0MZmOujhojPjLu1Ib/9EH1cigh2AQojq9Kho=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=QmSfIx7RhZpqNEzqM0srYlj+vQ452Bn8V7QW00NCVqZgrzR5n6AgtXgQTmi5vYQ4Br WOF9UJlvyudpLDeQz+JrE1YmSrum1cjpFEet2B/XvlwXFM2ZfaVRfLfFFofc/x4ffgTB nxjPNsumFqCk6jwp5RZOkUbJkmrvTxz+PgQJcCkmmbFKoyJ1Kx1dbljCJWxAjXB087cq Z+5Gdgeg9+VFme3/Io27q2j0PmilUxUXE75Bk4YerOs8Vk63Dvyvi+tnsxXaLDEamn4v Qw8ARWhNF33UjzPffscNdFkuhQTzIVeoDO1gP9qR3DJauV8Kpfc6hoM0ivHS/kG5rlNE 5ubQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="TfsLlSo/"; 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; dara=fail header.i=@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 4fb4d7f45d1cf-5cbb62309c1si505687a12.74.2024.10.25.01.24.04; Fri, 25 Oct 2024 01:24:04 -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=20230601 header.b="TfsLlSo/"; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B933168D79B; Fri, 25 Oct 2024 05:27:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0EDB68D79B for ; Fri, 25 Oct 2024 05:27:03 +0300 (EEST) Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-2e2e2d09decso1831724a91.1 for ; Thu, 24 Oct 2024 19:27:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729823220; x=1730428020; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=sZccNP5H2u8j43ErO4jqlSUYxYUXe8Kjk6zrBY4GfrE=; b=TfsLlSo/nyWOQ/2+ocFSlDd1EA4sKiHfI0ps5Vs9XSa4uNTf7ssAno1wT7hmrK2Wi4 z5kSU+H9K2AkmtzKIG6jTRToCvxsjFgydGkt70voCGRFXggk5ZxYNb+fx2SdM2bteyZ+ hXG19jzudz45ohZittcW7q+TH0uxjhYMLQdlZaeM6Z4svKhnL/g38q5qjPYhZf9S6d4c dF9XOCozNIwP0t9lB0RnWL/HRCIEJwgCPKEJ+k2S3SttEu7c1OFn6jI9wLY3HWZgCwaz 4GccI1lK3yVyN4RZnz1ESLFufOrAJR3iJ0se0nkGzkOIM54a7nhg2WdTPhQI9S3Ktd9B jVFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729823220; x=1730428020; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sZccNP5H2u8j43ErO4jqlSUYxYUXe8Kjk6zrBY4GfrE=; b=pTRX2zFz0OajcNDfDxY6bYH608EgXuSvl0dQyUSbmDh6yPtXoqEwGDu1nOtQEs1JR2 wffl3XXZCkSLKBlr0vBu+tkGeMUgq9wVR9S5RttbcsVdcgkLyk3pcSiYigRigeOzCbrC wo0cHMRI58TCE3WLP1HlE4UXfcOASmZ53MJ55CUjCieuDjSr452TN1jD8wG10Zvowu8u 4WhULQ8N58Xj9PYJ4mbqrjCyykPRC5bs8TbNR7cJRlkE7xHETHI22YnajOmjLJFr96V5 6UlGV+2ZNYSPL2mH/80c6y9c/sLycyb6/o6m3GsHwTdIy8egBeYN4a4Qy3+R9ialiRlz 74eQ== X-Gm-Message-State: AOJu0YwOZ4CVET0DA9FLatRbb60x9E2b2BZvypAwiowS7u+yFiZSL3f4 Gu+yfKRLS98tRyoVmi6Q66uKVsxJ5WyWkfMDX0fSoRvhswuPHfauUZxfZA== X-Received: by 2002:a17:90a:8a0c:b0:2e0:8780:ecb with SMTP id 98e67ed59e1d1-2e77e610e54mr6123110a91.12.1729823219826; Thu, 24 Oct 2024 19:26:59 -0700 (PDT) Received: from localhost.localdomain ([181.92.233.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e48ed34sm2485491a91.9.2024.10.24.19.26.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2024 19:26:59 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Oct 2024 23:26:10 -0300 Message-ID: <20241025022613.3921-2-jamrial@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241025022613.3921-1-jamrial@gmail.com> References: <20241025022613.3921-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/5] avcodec/aom_film_grain: allocate film grain metadata dynamically 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: lTxvymI3SQcs This removes the ABI breaking use of sizeof(AVFilmGrainParams), and achieves the same size reduction to decoder structs as 08b1bffa49715a9615acc025dfbea252d8409e1f. Signed-off-by: James Almer --- libavcodec/aom_film_grain.c | 47 +++++++++++++++++++++++++++++-------- libavcodec/aom_film_grain.h | 6 ++++- libavcodec/h2645_sei.c | 12 +++++++++- libavcodec/hevc/hevcdec.c | 1 - 4 files changed, 53 insertions(+), 13 deletions(-) diff --git a/libavcodec/aom_film_grain.c b/libavcodec/aom_film_grain.c index e302567ba5..de4437fd16 100644 --- a/libavcodec/aom_film_grain.c +++ b/libavcodec/aom_film_grain.c @@ -26,7 +26,9 @@ */ #include "libavutil/avassert.h" +#include "libavutil/buffer.h" #include "libavutil/imgutils.h" +#include "libavutil/mem.h" #include "aom_film_grain.h" #include "get_bits.h" @@ -124,7 +126,7 @@ int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s, { GetBitContext gbc, *gb = &gbc; AVFilmGrainAOMParams *aom; - AVFilmGrainParams *fgp, *ref = NULL; + AVFilmGrainParams *fgp = NULL, *ref = NULL; int ret, num_sets, n, i, uv, num_y_coeffs, update_grain, luma_only; ret = init_get_bits8(gb, payload, payload_size); @@ -135,28 +137,38 @@ int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s, if (!s->enable) return 0; + for (int i = 0; i < FF_ARRAY_ELEMS(s->sets); i++) + av_buffer_unref(&s->sets[i]); + skip_bits(gb, 4); // reserved num_sets = get_bits(gb, 3) + 1; for (n = 0; n < num_sets; n++) { int payload_4byte, payload_size, set_idx, apply_units_log2, vsc_flag; int predict_scaling, predict_y_scaling, predict_uv_scaling[2]; int payload_bits, start_position; + size_t fgp_size; start_position = get_bits_count(gb); payload_4byte = get_bits1(gb); payload_size = get_bits(gb, payload_4byte ? 2 : 8); set_idx = get_bits(gb, 3); - fgp = &s->sets[set_idx]; + fgp = av_film_grain_params_alloc(&fgp_size); + if (!fgp) + goto error; aom = &fgp->codec.aom; fgp->type = get_bits1(gb) ? AV_FILM_GRAIN_PARAMS_AV1 : AV_FILM_GRAIN_PARAMS_NONE; - if (!fgp->type) + if (!fgp->type) { + av_freep(&fgp); continue; + } fgp->seed = get_bits(gb, 16); update_grain = get_bits1(gb); - if (!update_grain) + if (!update_grain) { + av_freep(&fgp); continue; + } apply_units_log2 = get_bits(gb, 4); fgp->width = get_bits(gb, 12) << apply_units_log2; @@ -330,32 +342,47 @@ int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s, if (payload_bits > payload_size * 8) goto error; skip_bits(gb, payload_size * 8 - payload_bits); + + av_buffer_unref(&s->sets[set_idx]); + s->sets[set_idx] = av_buffer_create((uint8_t *)fgp, fgp_size, NULL, NULL, 0); + if (!s->sets[set_idx]) + goto error; } return 0; error: - memset(s, 0, sizeof(*s)); + av_free(fgp); + ff_aom_film_grain_uninit_params(s); return AVERROR_INVALIDDATA; } int ff_aom_attach_film_grain_sets(const AVFilmGrainAFGS1Params *s, AVFrame *frame) { - AVFilmGrainParams *fgp; if (!s->enable) return 0; for (int i = 0; i < FF_ARRAY_ELEMS(s->sets); i++) { - if (s->sets[i].type != AV_FILM_GRAIN_PARAMS_AV1) + AVBufferRef *buf; + + if (!s->sets[i]) continue; - fgp = av_film_grain_params_create_side_data(frame); - if (!fgp) + + buf = av_buffer_ref(s->sets[i]); + if (!buf || !av_frame_new_side_data_from_buf(frame, + AV_FRAME_DATA_FILM_GRAIN_PARAMS, buf)) return AVERROR(ENOMEM); - memcpy(fgp, &s->sets[i], sizeof(*fgp)); } return 0; } +void ff_aom_film_grain_uninit_params(AVFilmGrainAFGS1Params *s) +{ + for (int i = 0; i < FF_ARRAY_ELEMS(s->sets); i++) + av_buffer_unref(&s->sets[i]); + s->enable = 0; +} + // Taken from the AV1 spec. Range is [-2048, 2047], mean is 0 and stddev is 512 static const int16_t gaussian_sequence[2048] = { 56, 568, -180, 172, 124, -84, 172, -64, -900, 24, 820, diff --git a/libavcodec/aom_film_grain.h b/libavcodec/aom_film_grain.h index 1f8c78f657..94cd9d9f67 100644 --- a/libavcodec/aom_film_grain.h +++ b/libavcodec/aom_film_grain.h @@ -28,11 +28,12 @@ #ifndef AVCODEC_AOM_FILM_GRAIN_H #define AVCODEC_AOM_FILM_GRAIN_H +#include "libavutil/buffer.h" #include "libavutil/film_grain_params.h" typedef struct AVFilmGrainAFGS1Params { int enable; - AVFilmGrainParams sets[8]; + AVBufferRef *sets[8]; } AVFilmGrainAFGS1Params; // Synthesizes film grain on top of `in` and stores the result to `out`. `out` @@ -48,4 +49,7 @@ int ff_aom_parse_film_grain_sets(AVFilmGrainAFGS1Params *s, // Attach all valid film grain param sets to `frame`. int ff_aom_attach_film_grain_sets(const AVFilmGrainAFGS1Params *s, AVFrame *frame); +// Free all allocations in `s` and zero the entire struct. +void ff_aom_film_grain_uninit_params(AVFilmGrainAFGS1Params *s); + #endif /* AVCODEC_AOM_FILM_GRAIN_H */ diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index a481dbca2c..33390d389d 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -26,6 +26,7 @@ #include "config_components.h" #include "libavutil/ambient_viewing_environment.h" +#include "libavutil/buffer.h" #include "libavutil/display.h" #include "libavutil/hdr_dynamic_metadata.h" #include "libavutil/film_grain_params.h" @@ -547,6 +548,14 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) } } + for (unsigned i = 0; i < FF_ARRAY_ELEMS(dst->aom_film_grain.sets); i++) { + ret = av_buffer_replace(&dst->aom_film_grain.sets[i], + src->aom_film_grain.sets[i]); + if (ret < 0) + return ret; + } + dst->aom_film_grain.enable = src->aom_film_grain.enable; + return 0; } @@ -918,7 +927,8 @@ void ff_h2645_sei_reset(H2645SEI *s) s->ambient_viewing_environment.present = 0; s->mastering_display.present = 0; s->content_light.present = 0; - s->aom_film_grain.enable = 0; + + ff_aom_film_grain_uninit_params(&s->aom_film_grain); av_freep(&s->film_grain_characteristics); } diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index 900895598f..f2bdf6134e 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -4010,7 +4010,6 @@ static int hevc_update_thread_context(AVCodecContext *dst, s->sei.common.alternative_transfer = s0->sei.common.alternative_transfer; s->sei.common.mastering_display = s0->sei.common.mastering_display; s->sei.common.content_light = s0->sei.common.content_light; - s->sei.common.aom_film_grain = s0->sei.common.aom_film_grain; s->sei.tdrdi = s0->sei.tdrdi; return 0; From patchwork Fri Oct 25 02:26:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 52487 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:be6b:0:b0:48e:c0f8:d0de with SMTP id bd11csp48670vqb; Thu, 24 Oct 2024 19:27:29 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXW7lN3VMkvPGD67ivVjfiS9poLNfG+dTqfAhS//lot0h43ZnCHsaOAc12nnzjir5P/NwC2tQDS4jYtbeJAn/VJ@gmail.com X-Google-Smtp-Source: AGHT+IFQ+8iH8d4NYGP2RmA4CVC3AyRkK3CnpC9zNfeQw0iZtbgEa5j8ag5Eh2yukhb9vEwPtysX X-Received: by 2002:a05:6512:3510:b0:53b:205c:e97e with SMTP id 2adb3069b0e04-53b205ceb02mr750631e87.1.1729823249334; Thu, 24 Oct 2024 19:27:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1729823249; cv=none; d=google.com; s=arc-20240605; b=RPU3NtgVLb0+nIduqMqdk5OtpBn1vGE7xcal6zkg2heogJH+wyXiECm9c3n3KUiNMB 0FBlBKH5roQ0SMpg5MtiogXc0/yvw2fIaeXGMJYPuHSzA9JI09Y0TJVTYjBOvSyJicB/ qh1dyJa6e2kM8DwJw9pRDFMC8qcR06Kg7l68lMvqRyx6kk7u7INDU6vjqsjR8T7t0MpI s+K2KLlv1gqJHqAwuMt+Y+gZKT0wuUnSVXZfV++eQ9pmqaGoaOiIZmsTQeE2xzzvUdUl Y2DyrGj1ZqQe16u0sfEDzZHHztqc3234UHD5Pg8lFr+1z9eJxB3EOvq+0zioVzWHtKu4 RNgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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:dkim-signature:delivered-to; bh=27FIEf6sCR6auJnNT6RU+h2qJU8V5wa/ThlmKwT2Owg=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=YWSUNuBKGCJFEkVww4sOU4ek8wezQbbjPRn0CljXnxkOCcUev2YVbKGASaHs2BBliL 9WqQhjFyC4KqrHHjmDNRkDrkRSLmH2FjYmylg7qH3nE+Y0dimPtiTZVdL6HapnWEsqmg ClbRCrgxvY/lCxVIZvU62SL9ghrtst6rSADI6SMmltX2jseKkAQ27XXRG73DoxN5KfX1 /OrXtKK7lctDlwyby9+vEmbngSowkceLf7XiXrvjeu/hthMpXO2M5wqFn5fWdKlJJFoL ld2i00jNs+sUsSRFKM2RtngiuOzXtOptmKioWo3YsrAmFXFscUNwmN4eBAkfMjLkFA8c oqCA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=JPT+hkvP; 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; dara=fail header.i=@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 2adb3069b0e04-53b2e1245bdsi76445e87.135.2024.10.24.19.27.29; Thu, 24 Oct 2024 19:27:29 -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=20230601 header.b=JPT+hkvP; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1563368DD4D; Fri, 25 Oct 2024 05:27:12 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 127A168D79B for ; Fri, 25 Oct 2024 05:27:04 +0300 (EEST) Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-2e56750bb0dso1137460a91.0 for ; Thu, 24 Oct 2024 19:27:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729823221; x=1730428021; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Y/rYxu2M95JJX/1LomMrj8ZoZBtH6Y0H3XVubSIA/Eg=; b=JPT+hkvPPRvH9+i/K1TzXF5wf1S7XGSiLrRbzeN+TFZagYEgGfSzhfsJR1Nd+LuCxV 7KomHdDZ5X94CnLEHIT+FcSmBI1XwBkaFyHmLFjzJ8Lppjw7H7CjpeDEVMgAlRWRe+Jh lFrvSAzKo1hMmJTZR5zZ5qIReykWLj/0IgnvKmrWvh+NiiMgu4kf4uCgH2oxAQZKFEIj NiiC9PQ/tcqBb6z9JPa5hghjFKRMbXzlI/hdnzAHrGqJRfWZjBqwxzfIviBj3axRWluT Wj6gcxdNnjeP4GeVt+pkWHpxEItF7o5nWQnQKKq1kk622XrY4ADHXipkRvELRo9tYS32 TEOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729823221; x=1730428021; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Y/rYxu2M95JJX/1LomMrj8ZoZBtH6Y0H3XVubSIA/Eg=; b=cz8cN7sJl3Rc/uNE8fjhMCjIKfLJxgYtpkNiWMzS7eCuQIg0Vxs8vCVcCYGrwEFtXf SJsg5uizM2h5dmPd1TaxTYnBYh3abcFO5vfHcM8YeM+bQcZlmfD4Odo35mi2U6dV1fRF 3C4DMMRQXoXgvwAqiMohaadYOX76FnztcjwaN9iS5+Thj3V+pLGt1h9cR2JxhLnrGTY/ DsCvOkRnPem3+zOM4QXpenvxXzkOcOmBhWILazsmX+ts6rDhTL/5bT2KPMcuHvxOAWPg f/wfmYYe2MH73gUA2JXGDhtfWYe5c83F/ulzZcUvbsNUZp+Y5ccP2f91kVlUBLsqz23x xIrg== X-Gm-Message-State: AOJu0YygTy7tgvqGxbBCKbhV1WiKuV+9JWJf0QlI6+kk2Qb8TLhvpZG1 INRBC7+iRGuwKAq4S241OKXWrTuCm42p2EbHkOEsVAme7UDQQP83ONoczA== X-Received: by 2002:a17:90b:4ac9:b0:2e7:6e84:a854 with SMTP id 98e67ed59e1d1-2e76e84ab6emr8802105a91.1.1729823221462; Thu, 24 Oct 2024 19:27:01 -0700 (PDT) Received: from localhost.localdomain ([181.92.233.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e48ed34sm2485491a91.9.2024.10.24.19.27.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2024 19:27:00 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Oct 2024 23:26:11 -0300 Message-ID: <20241025022613.3921-3-jamrial@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241025022613.3921-1-jamrial@gmail.com> References: <20241025022613.3921-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avcodec/h2645_sei: use the RefStruct API for film_grain_characteristics 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: vsPRezGSKr2K And ensure the buffer is synced between threads. Signed-off-by: James Almer --- libavcodec/h2645_sei.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/h2645_sei.c b/libavcodec/h2645_sei.c index 33390d389d..9ed2fc5596 100644 --- a/libavcodec/h2645_sei.c +++ b/libavcodec/h2645_sei.c @@ -42,6 +42,7 @@ #include "golomb.h" #include "h2645_sei.h" #include "itut35.h" +#include "refstruct.h" #define IS_H264(codec_id) (CONFIG_H264_SEI && CONFIG_HEVC_SEI ? codec_id == AV_CODEC_ID_H264 : CONFIG_H264_SEI) #define IS_HEVC(codec_id) (CONFIG_H264_SEI && CONFIG_HEVC_SEI ? codec_id == AV_CODEC_ID_HEVC : CONFIG_HEVC_SEI) @@ -495,11 +496,10 @@ int ff_h2645_sei_message_decode(H2645SEI *h, enum SEIType type, case SEI_TYPE_DISPLAY_ORIENTATION: return decode_display_orientation(&h->display_orientation, gb); case SEI_TYPE_FILM_GRAIN_CHARACTERISTICS: - if (!h->film_grain_characteristics) { - h->film_grain_characteristics = av_mallocz(sizeof(*h->film_grain_characteristics)); - if (!h->film_grain_characteristics) - return AVERROR(ENOMEM); - } + ff_refstruct_unref(&h->film_grain_characteristics); + h->film_grain_characteristics = ff_refstruct_allocz(sizeof(*h->film_grain_characteristics)); + if (!h->film_grain_characteristics) + return AVERROR(ENOMEM); return decode_film_grain_characteristics(h->film_grain_characteristics, codec_id, gb); case SEI_TYPE_FRAME_PACKING_ARRANGEMENT: return decode_frame_packing_arrangement(&h->frame_packing, gb, codec_id); @@ -556,6 +556,9 @@ int ff_h2645_sei_ctx_replace(H2645SEI *dst, const H2645SEI *src) } dst->aom_film_grain.enable = src->aom_film_grain.enable; + ff_refstruct_replace(&dst->film_grain_characteristics, + src->film_grain_characteristics); + return 0; } @@ -930,5 +933,5 @@ void ff_h2645_sei_reset(H2645SEI *s) ff_aom_film_grain_uninit_params(&s->aom_film_grain); - av_freep(&s->film_grain_characteristics); + ff_refstruct_unref(&s->film_grain_characteristics); } From patchwork Fri Oct 25 02:26:12 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 52488 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:be6b:0:b0:48e:c0f8:d0de with SMTP id bd11csp59829vqb; Thu, 24 Oct 2024 20:04:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXyeRuvMWETvIkNG9OBgAZ/J2NyUdQ1UEExRRG/XM8ZM9TsWIdEZvpQ/cdvH5GktQqRxHcUzSRmqUVIJ1DKkvSP@gmail.com X-Google-Smtp-Source: AGHT+IFj29W3Nwx0hVeOo7rxj/nYeSQg4DORFNzCy5zlHaEr+4LU8H9tLudy8Akz14bGCHrU+VI8 X-Received: by 2002:a05:651c:b0f:b0:2fa:ce0d:ec34 with SMTP id 38308e7fff4ca-2fca83004c1mr16955441fa.2.1729825445816; Thu, 24 Oct 2024 20:04:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1729825445; cv=none; d=google.com; s=arc-20240605; b=TrRb8kyS+eO/FVHW58H+9Tx8JBZg8VDORS/zaVZngwTgP1LlAb9A4ZF6rROk9/8jju LvhNNQuXzzG80sv0unVz24IhAW8QFIG0eIEJEQzvLSWh00tw7LDD31v+/giRGnA+beHp l/ZdvTw/0h9kFxK/1ra5sBozCmfFWomCl0DtohfAxDkRSBOrByVoDibLEGrGMS8MFBO/ XMj8UxvmCD5gkOn9A2LQJroMTbDnc0lV7w1FQ7gq8AzQ1PEGcj84OtJmpkNxWKyynivP Y5ys0v/a9nHfmSTlz2yJ6U6vm14/1F6jjuBkgRufLrkVTVEFiLUE4/0ayRplmPQ2qx5T kLYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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:dkim-signature:delivered-to; bh=1onWdahaT+h58dYHE635J6cLuFNAlR6ge9ZRHc1WbQU=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=YakgB/lK+EBHzxjyIkRwHKWS//iIfKcxw8vBbhzmdq2UWyF+XWv3J1aWzpKjW6e6rM /7P9D3exinSDugY7BhWs3y9rXnN3c1PpJJPR1R3rjhXqPY4sFRtk/7V8AYSfEo6XTHnZ mLV8VAu0w6dyISwIntq1H8PlGC6qPyxO3tFkX1ultq/3IEf7NchYpcmBJecsTmfbSJmX vYeHoN1ysYymNasCVvxr857Vth2mE+W/rOE8IZ7aElfzjp9Ve9fSp3PFebDLz7iAZYXJ wV1U8jCVChO8OhJ6TZjonbcAunESRk6i2Kcmq+GRt9nZri3VeB5n7y0NZZu+jHwDEXuZ JqWw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b="jWTcjZ/h"; 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; dara=fail header.i=@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 38308e7fff4ca-2fcb45e1d5esi606651fa.329.2024.10.24.20.04.05; Thu, 24 Oct 2024 20:04:05 -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=20230601 header.b="jWTcjZ/h"; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5317568DD9B; Fri, 25 Oct 2024 05:27:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pj1-f51.google.com (mail-pj1-f51.google.com [209.85.216.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 81A1D68D79B for ; Fri, 25 Oct 2024 05:27:05 +0300 (EEST) Received: by mail-pj1-f51.google.com with SMTP id 98e67ed59e1d1-2e3d523a24dso1209225a91.0 for ; Thu, 24 Oct 2024 19:27:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729823223; x=1730428023; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=kiGdapRFhePtGKOsy8Y9G48p+oghNEAqfEEmaWwsCF0=; b=jWTcjZ/hSwZPTUOrsU/j9IkSBPuYtvmdUesQHDC1SwFRNpsckjwmn9Qpsuyzk4peGk y8yN+OreNc0BZSjX8UNcwny5kGVIsgfoeoEqHrfIusKXduzqbbyGgo/brz4JEbh2Wxxf 6seM4H9gOOKp5Zq1bAHcIUOdNRhuL0+NmKp1LibHLfdiHvgEU8F7aS+WFr+jhsBLxWcf HRulyqrRm3z8GpPMcH00WaythxI/gIn2KBIxnigWIsZFuJV+mShE9thz5GhOTqYk2SUw bSh/Zh4DS0+B12BFtNfD6BIM/uELZ57hhYchqNTSl6GukqwjSVzy9TTl1EMm8Ki/d3SQ ek2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729823223; x=1730428023; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=kiGdapRFhePtGKOsy8Y9G48p+oghNEAqfEEmaWwsCF0=; b=t5Bx6/0Z5JbLoV+kGpEXi16z7bf6cY9h9dXjK9vqe6UNTkCwcSsixYWgkDDjBfc5Hn n+rdEJuwNYFvPH/Z7ubMBp9F85kD4DizV8OOEiXlBgohs0HPuPa/7exiiREl6AeVQBwl 2UHNf9tnwui0Y+BNARdFSXUmPRMmKMUax5r9jTB6pknj0hXUu2RNoIn2y7w2TNTe6Id6 Hhv9mxS/3Og6COrVGoYPITXtEGMHE3mRQTHaZGQb2/stngzfKV+DebNypwuMTC7MF+eE oIhvW2leCcd4pcRLgGRHKTkuc9plk8VEDdEDn+A3mC/iLVc4X8P6naoA2FKR+e45yr+k Qjsg== X-Gm-Message-State: AOJu0YzzFSI01otRp8ldH/41zEC/uG//IMsB/6Ye0kqhi3olzdxOfqM8 zxeN8p6+yAYklIHEhh1mx44oFbevS6XurSykfWWCfwPl0/y7OxrDuavNKQ== X-Received: by 2002:a17:90b:3015:b0:2e2:e31a:220e with SMTP id 98e67ed59e1d1-2e77f45cbe1mr4116482a91.8.1729823222963; Thu, 24 Oct 2024 19:27:02 -0700 (PDT) Received: from localhost.localdomain ([181.92.233.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e48ed34sm2485491a91.9.2024.10.24.19.27.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2024 19:27:02 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Oct 2024 23:26:12 -0300 Message-ID: <20241025022613.3921-4-jamrial@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241025022613.3921-1-jamrial@gmail.com> References: <20241025022613.3921-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/5] avcodec/h264dec: use the RefStruct API for h264db 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: CqOpppy6aX3b And ensure the buffer is synced between threads. Signed-off-by: James Almer --- libavcodec/h264_picture.c | 2 +- libavcodec/h264_slice.c | 2 ++ libavcodec/h264dec.c | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/h264_picture.c b/libavcodec/h264_picture.c index 371a794ec2..d07c3a0af8 100644 --- a/libavcodec/h264_picture.c +++ b/libavcodec/h264_picture.c @@ -215,7 +215,7 @@ int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup) err = AVERROR_INVALIDDATA; if (sd) { // a decoding error may have happened before the side data could be allocated if (!h->h274db) { - h->h274db = av_mallocz(sizeof(*h->h274db)); + h->h274db = ff_refstruct_allocz(sizeof(*h->h274db)); if (!h->h274db) return AVERROR(ENOMEM); } diff --git a/libavcodec/h264_slice.c b/libavcodec/h264_slice.c index 84595b1a8b..b88545a075 100644 --- a/libavcodec/h264_slice.c +++ b/libavcodec/h264_slice.c @@ -445,6 +445,8 @@ int ff_h264_update_thread_context(AVCodecContext *dst, h->sei.common.mastering_display = h1->sei.common.mastering_display; h->sei.common.content_light = h1->sei.common.content_light; + ff_refstruct_replace(&h->h274db, h1->h274db); + if (!h->cur_pic_ptr) return 0; diff --git a/libavcodec/h264dec.c b/libavcodec/h264dec.c index af0913ca2c..805732057a 100644 --- a/libavcodec/h264dec.c +++ b/libavcodec/h264dec.c @@ -156,7 +156,7 @@ void ff_h264_free_tables(H264Context *h) av_freep(&h->mb2b_xy); av_freep(&h->mb2br_xy); - av_freep(&h->h274db); + ff_refstruct_unref(&h->h274db); ff_refstruct_pool_uninit(&h->qscale_table_pool); ff_refstruct_pool_uninit(&h->mb_type_pool); From patchwork Fri Oct 25 02:26:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 52489 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:be6b:0:b0:48e:c0f8:d0de with SMTP id bd11csp59835vqb; Thu, 24 Oct 2024 20:04:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU/YZQHVGsBklGsy3PTtj5YbXWCQSoMbcACRoeLoV3UqA6cHjGxO+smTDwhwXKFQDZAVvt9Nqbv1sn1O3jjWYiB@gmail.com X-Google-Smtp-Source: AGHT+IG8oAsUrLmLR3lQ0DoRk7bQrt0E5+zK8jOEjvzDOdPTtbHf68O3aH86ffdIUe6dx/KcaV2y X-Received: by 2002:a17:907:1c16:b0:a99:55ab:b666 with SMTP id a640c23a62f3a-a9abf8aa246mr720091566b.34.1729825446407; Thu, 24 Oct 2024 20:04:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1729825446; cv=none; d=google.com; s=arc-20240605; b=P4skonoafDHry+4az2aoizSqcA79N5JMlRNEtac/L0wFLud/0OwIoXRNIRULopDU+P xvxTSGmx+vJd01S5XI2ercK5Cnxjt4Bzr6cMViEb2lW0XP7XK5hWUzCCMfJjA21lyNgg YCIUEYAWMVR9aAVYVzsua95pxV/LxWQ4z5KY9EMg/wz4Gl/k3Ykw3x3BkLoMGH/uJY1j RMOK44bcZky1eWA8mZylppVcJzlAE6mDau9C3BD38xzj/qXcmjaAOE08LkT165r2Mh0J S8cS19ftZpcvZ7gOuDGP2yFBrZYbTfORfFwK3o0ZiPTBwteVpVXTLVNXH0KHg0dVVU9F 6jrA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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:dkim-signature:delivered-to; bh=zaExw2U7uACYtzubpZfkIqUTHVGI0k3ICOVRBN+xkVY=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=hYWF+YvBBYX2dfOWtDMvzBuV+IuaH1PjYzFI+D+IL2S/BouxqWDenJWPIF74gXWgG+ Aeak97VdvgnYc1o1ZdrsthxO5UY8+FfHseMqMhH10XlJV9gxN4+NO5psb6qkf1l3gtzF Vou0GKGH2ROSp5fD6cVGj8WnhJSo3DMjqV2wj/NFoXONh4YQSBFaQ7Czl/auvfMXxGi1 UVPQtyixcHrsh9aL3tQoracbgsOCjOuVdPRCWfzKU2Z0CcbGOFpXxWGJ0+fPodrkwmHA RgxF1lTkvfXmI0H4q3WgMyf7xRiTq8Nae7zEoOmPBd9/Fwmd5OF4G3NcJtC4Fa83S81U TIdg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=CzEWhTEL; 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; dara=fail header.i=@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 a640c23a62f3a-a9b30e644d3si22879666b.551.2024.10.24.20.04.06; Thu, 24 Oct 2024 20:04:06 -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=20230601 header.b=CzEWhTEL; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7EA3068DDB3; Fri, 25 Oct 2024 05:27:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f169.google.com (mail-pg1-f169.google.com [209.85.215.169]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ADB1068DD4D for ; Fri, 25 Oct 2024 05:27:06 +0300 (EEST) Received: by mail-pg1-f169.google.com with SMTP id 41be03b00d2f7-7cd8803fe0aso1053483a12.0 for ; Thu, 24 Oct 2024 19:27:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729823224; x=1730428024; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+85mu48qWMLBV5Wcui8Q8SAIknmOHPOzXmnLncThNkM=; b=CzEWhTELyhFWcQ2FSvi+iZDGVadyLMUm80CHLVmfTD0eDGXyJZNcmRugqUldePNaRX IgbaNe/LZDohdRdokGDx+d3AndyUs7iHJSuBiYiO1LRfbcPs1/Kvwp7q7JDmNzU2YoIz sqocniHWQ4U+UvPqtPzhDBREexpv2zC/wqhTepa9pQ79ozZguSN7Lg3LzFEzlDm3ApI9 75uD2uLWaiQwan9wRc5juai/Q0ke1ui6yQeBxSwYDGuz6Xjh2qI5Nk5oOssPerBOgp3A wbZUWKB4SWxv45efBFyNbYwisdHoYtXtV7h8Fe1mFrt8V7KvsBgiwjSdnuUAHIfw2e4o 9e7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729823224; x=1730428024; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+85mu48qWMLBV5Wcui8Q8SAIknmOHPOzXmnLncThNkM=; b=ICOSOjc5B+lai0vj8gO6Zs0wzXlNyBX+PKRW8Nm30kTjy5CIzafc4q/t0hPcO/w5wu sQNZcvLotC5aHYuEhrA0Ea8QY7VbJ1sdXaoTeGc9MLrAdTj0TaUfDjgnr0xfNUT9LCWZ Tj0jQisUZrktGRxyN4/phKkofjLGR8QgdZu450S9wdMgHJQ6Uz7zOsIgM3kEIbEnz4jN 3Svz87KnuUTAeH1lv7/uPO4dw246A3OFyvSJqdp5zutdhxHPQUztVqE4j1cNkM6b6P5l bLkZjAbgvohlto0eQzgh2jHBJrHxWlkPcUcESUiG4vpX1N8LjcMxr1AVxbze230A+PH9 gB5Q== X-Gm-Message-State: AOJu0YxwAn3DvOpQLEfodywfmpSsT+blDGWZKEEI97RmrLadu+HnuME1 r7KjZDqDQRMPHEAby2gwZIHr+l1zm6ZvXzngP2u6thDqAIi7PJ9iO6rs3g== X-Received: by 2002:a05:6a21:107:b0:1d9:1f51:faeb with SMTP id adf61e73a8af0-1d978bae10cmr9738326637.39.1729823224453; Thu, 24 Oct 2024 19:27:04 -0700 (PDT) Received: from localhost.localdomain ([181.92.233.116]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2e77e48ed34sm2485491a91.9.2024.10.24.19.27.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Oct 2024 19:27:03 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 24 Oct 2024 23:26:13 -0300 Message-ID: <20241025022613.3921-5-jamrial@gmail.com> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241025022613.3921-1-jamrial@gmail.com> References: <20241025022613.3921-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/5] avcodec/hevc/hevcdec: use the RefStruct API for h264db 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: /KZZ1eSsz6R9 And ensure the buffer is synced between threads. Signed-off-by: James Almer --- libavcodec/hevc/hevcdec.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libavcodec/hevc/hevcdec.c b/libavcodec/hevc/hevcdec.c index f2bdf6134e..357d7d0f1d 100644 --- a/libavcodec/hevc/hevcdec.c +++ b/libavcodec/hevc/hevcdec.c @@ -3416,7 +3416,7 @@ static int hevc_frame_end(HEVCContext *s, HEVCLayerContext *l) return AVERROR_BUG; case AV_FILM_GRAIN_PARAMS_H274: if (!s->h274db) { - s->h274db = av_mallocz(sizeof(*s->h274db)); + s->h274db = ff_refstruct_allocz(sizeof(*s->h274db)); if (!s->h274db) return AVERROR(ENOMEM); } @@ -3849,7 +3849,7 @@ static av_cold int hevc_decode_free(AVCodecContext *avctx) av_buffer_unref(&s->rpu_buf); av_freep(&s->md5_ctx); - av_freep(&s->h274db); + ff_refstruct_unref(&s->h274db); ff_container_fifo_free(&s->output_fifo); @@ -3985,6 +3985,8 @@ static int hevc_update_thread_context(AVCodecContext *dst, } } + ff_refstruct_replace(&s->h274db, s0->h274db); + ret = ff_h2645_sei_ctx_replace(&s->sei.common, &s0->sei.common); if (ret < 0) return ret;