From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 205C14E524
	for <ffmpegdev@gitmailbox.com>; Sun,  4 May 2025 01:46:37 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D07EC687D92;
	Sun,  4 May 2025 04:46:33 +0300 (EEST)
Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com
 [209.85.210.179])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D5763687D92
 for <ffmpeg-devel@ffmpeg.org>; Sun,  4 May 2025 04:46:26 +0300 (EEST)
Received: by mail-pf1-f179.google.com with SMTP id
 d2e1a72fcca58-7376dd56eccso3790542b3a.0
 for <ffmpeg-devel@ffmpeg.org>; Sat, 03 May 2025 18:46:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1746323184; x=1746927984; 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=iTQNQkYWD2M7rQpildDqNVzDqZgj48VhLyTZ8QNFMdA=;
 b=FkU253t88z75lKOJh4CxlIjD/Mq/nHcvl/Flnqx+GaoOYyf+2iSyab7gco/0P95yPb
 EAuHV1n23f0Km6bKWqW8LWX1cdX6E8uH2466/RfccHAlrveadVPJxfrknNURFIcbpT/3
 lUNATF5lWK8l9YyNQavz/QKMPMuQn8ZuAuEDQgjH5hDk5l8LryUYMZrOegjRCU5G4pb/
 N7j4zuOiqr77SSJnm64lHphri8vrbMmaYL1b6R0+36IcOhw7hK40GVbv7nLum5jUM1Oi
 vXEID5hxvQYCO0UfwSzCAq9iNJFkWdnwv6U54wCgbzDCqSELcqwOU8S1YxFj4Se6Srv7
 u04Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1746323184; x=1746927984;
 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=iTQNQkYWD2M7rQpildDqNVzDqZgj48VhLyTZ8QNFMdA=;
 b=CITNvIG2O/DHnz2iDgoSREyU+oBwh7xudyVNhk+fgjraUlXf/k8+gvdm7Yh8CHZ6Ga
 5m+EyRxLkXMhMwIms44hJY7BU4ExAHpmNyw2b1EjEdiw+JFFH7YoIOKgyK9u694IqYix
 bHhlyXi7qieJeUMjHi+cafvm0W3h6Zoy70oVGDWYPr3rxTbOubJIwZo4VUBbH1KyeWwB
 xz3cjn29p91YjFAZIPs8bRihZxPDNqzPUSpnxv+KPi30ioeEBtc5WUO8+WKVBm6pbiYe
 Hq6LFogIp1paB/sTAwXNjpUI+iw9osB8QHGpZ2HjGgb1JIysesyTS0/ilihEgvecEJzX
 qvLw==
X-Gm-Message-State: AOJu0YxhFW7CQisG6NBm1nzbmNYUrRbnvkNdwtBd59IbrUAlcipdrpam
 HQC15UPk31vXjV6uBH6XrcxzerMDYWEl9K2bCGtHLGM4FJiTW78jXWgbJA==
X-Gm-Gg: ASbGncvHg6DK/DyEVWoktb3TWCRq0N+TJo5yVOWk5M/arwA0fcpvTVJgsR8aTyFHQ5i
 4j5n3ClThlKOxSj5vBPRowmuLqJPRVgafbQE1m2XnyE/aHbgalUpljT3wily16SFQOTiua0Wb2z
 qikIE+HHTZgPPXA63cWQ1TmjFcigAxTdYnz/W1YavGQBzwP/QGGexTyQzoCkTDn6if6HfsOKmeC
 +VjiwYXcGYGLNBnHWkibYHLEclheNRqB4kGKnkdhSLw1AA/mY8CnRl8JcFxD/e63OjtKuQXHVs/
 f8JYNkziouc2a76U7BmSOdpOvb3bvY5UYjiRk3NXiUQDMdfhaKOWJlP+bok=
X-Google-Smtp-Source: AGHT+IH2bA/5FPQjHO0XXodwYl+PH81EJ2nFEPPBmeGf/V5SdtELg+rdrXTaJqMPUe4pSeHBcrynJQ==
X-Received: by 2002:a05:6a00:2987:b0:740:5927:bb8b with SMTP id
 d2e1a72fcca58-7406ed59ab5mr3786482b3a.0.1746323184139; 
 Sat, 03 May 2025 18:46:24 -0700 (PDT)
Received: from localhost.localdomain ([2800:2121:b000:82e:e13f:37f4:650:845c])
 by smtp.gmail.com with ESMTPSA id
 d2e1a72fcca58-74059020dc8sm4025777b3a.86.2025.05.03.18.46.22
 for <ffmpeg-devel@ffmpeg.org>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 03 May 2025 18:46:23 -0700 (PDT)
From: James Almer <jamrial@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Date: Sat,  3 May 2025 22:46:06 -0300
Message-ID: <20250504014606.3768-1-jamrial@gmail.com>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH] avcodec/apv_decode: build the lut table only
 once
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250504014606.3768-1-jamrial@gmail.com/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

No reason to build the exact same table once per decoding thread.

Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/apv_decode.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/libavcodec/apv_decode.c b/libavcodec/apv_decode.c
index b1e1db7d64..b1c59fc873 100644
--- a/libavcodec/apv_decode.c
+++ b/libavcodec/apv_decode.c
@@ -19,6 +19,7 @@
 #include "libavutil/mastering_display_metadata.h"
 #include "libavutil/mem_internal.h"
 #include "libavutil/pixdesc.h"
+#include "libavutil/thread.h"
 
 #include "apv.h"
 #include "apv_decode.h"
@@ -39,8 +40,6 @@ typedef struct APVDecodeContext {
     CodedBitstreamFragment au;
     APVDerivedTileInfo tile_info;
 
-    APVVLCLUT decode_lut;
-
     AVFrame *output_frame;
 
     uint8_t warned_additional_frames;
@@ -55,6 +54,8 @@ static const enum AVPixelFormat apv_format_table[5][5] = {
     { AV_PIX_FMT_YUVA444P, AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA444P12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_YUVA444P16 },
 };
 
+static APVVLCLUT decode_lut;
+
 static int apv_decode_check_format(AVCodecContext *avctx,
                                    const APVRawFrameHeader *header)
 {
@@ -101,11 +102,20 @@ static const CodedBitstreamUnitType apv_decompose_unit_types[] = {
     APV_PBU_METADATA,
 };
 
+static AVOnce apv_entropy_once = AV_ONCE_INIT;
+
+static av_cold void apv_entropy_build_decode_lut(void)
+{
+    ff_apv_entropy_build_decode_lut(&decode_lut);
+}
+
 static av_cold int apv_decode_init(AVCodecContext *avctx)
 {
     APVDecodeContext *apv = avctx->priv_data;
     int err;
 
+    ff_thread_once(&apv_entropy_once, apv_entropy_build_decode_lut);
+
     err = ff_cbs_init(&apv->cbc, AV_CODEC_ID_APV, avctx);
     if (err < 0)
         return err;
@@ -117,8 +127,6 @@ static av_cold int apv_decode_init(AVCodecContext *avctx)
 
     // Extradata could be set here, but is ignored by the decoder.
 
-    ff_apv_entropy_build_decode_lut(&apv->decode_lut);
-
     ff_apv_dsp_init(&apv->dsp);
 
     return 0;
@@ -201,7 +209,7 @@ static int apv_decode_tile_component(AVCodecContext *avctx, void *data,
 
     APVEntropyState entropy_state = {
         .log_ctx           = avctx,
-        .decode_lut        = &apv->decode_lut,
+        .decode_lut        = &decode_lut,
         .prev_dc           = 0,
         .prev_dc_diff      = 20,
         .prev_1st_ac_level = 0,
-- 
2.49.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".