From patchwork Wed May 17 19:45:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Kacper_Michaj=C5=82ow?= X-Patchwork-Id: 41702 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1466350pzb; Wed, 17 May 2023 12:45:56 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ70k1oL+bQdxVmdJ/uekOC2f23upCqeL3heFMsWk97+aSWgrc5J2r3wgW1Amzi08LUAQbVM X-Received: by 2002:a17:907:3ea5:b0:96f:678:d2fc with SMTP id hs37-20020a1709073ea500b0096f0678d2fcmr2832602ejc.22.1684352755805; Wed, 17 May 2023 12:45:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684352755; cv=none; d=google.com; s=arc-20160816; b=lS+ojW/NYzRJJ8RR8aiFn4T6Ikr5nt5n4hothj1cDLnflPOe/a2Ya6kAyGiw9W2gTb X4GYOm+f+1wouky8Ptver2p3EYcKMfP9pB25YY2tjJKTe8ML6UMrHNPSXUJ48lv5Xjx8 gBnYx1Ux6Jkv2nZGRFbaXPbsZ9dPYQVc9+gbnRLpuYZjEDUu5IHUswLgEP1keOQmwfR8 STrJJYR7ozsp+EwE3GstFizdW7BccsXPVwBMH7+UPiImCh16zJpxvyOCR6uChMb0evOY LSfYVnG16p4Ww3XR3x7jTGsDGlY1OZv1zOrfCXjpF++O5AsnU499KIx+mD1U6xj8wE3a tv3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc: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=I4t/fcp8EWegWG6/NazbsDpmEGJVDWzACVEsYWb+9yQ=; b=P1jT+FxGQt+lX/bPKOlFgmhE1FjUKh2Gi0fb4qPkyHubzmY4B3g6Cxoky4lekJfb0I HerWcw0Op/IYoS9Fd+7KxqnlgWc/nXmAra9GxdCauc+Y/mkLdoAPIn7xvNY5J+ybtJo1 D0rB7JkK0YXt9v1xyyBQj3kFD5aqTcbC8+wjEMVJ8TQ0vqnPQSL6IZzaUNK8PWiHT7oG 8wwIeS9gB/o7QZ7KI6lmDPMeTmLUO+0hfYdOY1tBU8VHuDICaCTBZnM5fQvNQNNeEoep AYn1VwN+29piS9sX919SS/OjadqIxIA+ncIibu7IxiTX8wTvt2oISrz9fpxF9ErxzicV QX1w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=UHCm9nDY; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id tc18-20020a1709078d1200b0096a1260dbe5si16606125ejc.189.2023.05.17.12.45.53; Wed, 17 May 2023 12:45:55 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=UHCm9nDY; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4701C68C119; Wed, 17 May 2023 22:45:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C22A168BF84 for ; Wed, 17 May 2023 22:45:42 +0300 (EEST) Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-50bc22805d3so1875484a12.1 for ; Wed, 17 May 2023 12:45:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684352742; x=1686944742; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=DPM1wYFEFV50CFo3O9z/PtdZEQZDu4LtXKaQSPIRHZA=; b=UHCm9nDYihu8q9TCxDNBvKRlrqLRs0WGS9d2OeHaUz0eDCFpijGRSMsr1875H+Tb7k uGUPIXnDKt+F/WMT6iuNaUfsLoWtBXCIKLiq+ms+QRtgl4mLDesDlUFz6nIWHIj09mec y8fsAGkWqEH7hKJ4dRuKKx8/KFdNEkE8wELkyPU7z5fTOjUkknoCcAwQb8JeZ1MhWjlQ c4/6sxy/x+iN2lYo2DFCPo16K+ndMWsje45oOACrpGfgLVEOlZCTTwSA2C/F7V1yYgsB b3BvSbfc1ocnoiJSXJ9ma0RXtV/qtaot1X4VmnrZnkZBpGdx4geSXPwN8aw45eig3lyA F5QQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684352742; x=1686944742; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=DPM1wYFEFV50CFo3O9z/PtdZEQZDu4LtXKaQSPIRHZA=; b=CoyRNpqPlYoLAOrP+5v2G9afVx8HgNkhAxqUx+UxfNBkQUrmk//jUnjTNRiz7cq9fD 7zgKXYrlMQ0jr3CCDGhlRWCcecll6CXr0kdpcbHTze1uMJVXQGZb/TSCFULB/6stG5bw 2xIoed5Up4hEjQcjPL3nYK8i4+F9UlgJtMTQ71N7Ywi36mupfQOSJqDgEC8szR/dXLvk 1WgH1frbb1iZq/6HpG0Af2h8hV4ABVLk/cyyRmw1Ofb7LJOAyL4jmix5WnZaclOfspQ3 vSgoY2rOhc+Yer4DPZVDHZfWwtwBU7j0NdhVvVRLOQBpxtMwIY+o0xpZHFG0JlZO1zFF a2Lw== X-Gm-Message-State: AC+VfDxi5nkFY+ivWttfBwHYRqQFtAo27oxXrHLiU4eI5VAh0/MmS+WS RsSdfI+VSCdT5AtL9zzuv58d98FcAS0= X-Received: by 2002:aa7:da14:0:b0:50e:53b9:70f9 with SMTP id r20-20020aa7da14000000b0050e53b970f9mr2940082eds.32.1684352741627; Wed, 17 May 2023 12:45:41 -0700 (PDT) Received: from localhost.localdomain (89-74-109-154.dynamic.chello.pl. [89.74.109.154]) by smtp.gmail.com with ESMTPSA id j2-20020aa7c402000000b0050dfb9fc499sm7249482edq.39.2023.05.17.12.45.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 17 May 2023 12:45:41 -0700 (PDT) From: =?utf-8?q?Kacper_Michaj=C5=82ow?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 May 2023 21:45:03 +0200 Message-Id: <20230517194503.1659-1-kasper93@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] lavfi/vf_libplacebo: allow linking to shared library with dllimport 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 Cc: =?utf-8?q?Kacper_Michaj=C5=82ow?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rJ9dD4BDx8Kb Address of dll imported variables can't be used for constant initialization in C language modes. --- libavfilter/vf_libplacebo.c | 39 ++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c index 94e49aa465..f26d0126be 100644 --- a/libavfilter/vf_libplacebo.c +++ b/libavfilter/vf_libplacebo.c @@ -56,23 +56,6 @@ enum { TONE_MAP_COUNT, }; -static const struct pl_tone_map_function * const tonemapping_funcs[TONE_MAP_COUNT] = { - [TONE_MAP_AUTO] = &pl_tone_map_auto, - [TONE_MAP_CLIP] = &pl_tone_map_clip, -#if PL_API_VER >= 246 - [TONE_MAP_ST2094_40] = &pl_tone_map_st2094_40, - [TONE_MAP_ST2094_10] = &pl_tone_map_st2094_10, -#endif - [TONE_MAP_BT2390] = &pl_tone_map_bt2390, - [TONE_MAP_BT2446A] = &pl_tone_map_bt2446a, - [TONE_MAP_SPLINE] = &pl_tone_map_spline, - [TONE_MAP_REINHARD] = &pl_tone_map_reinhard, - [TONE_MAP_MOBIUS] = &pl_tone_map_mobius, - [TONE_MAP_HABLE] = &pl_tone_map_hable, - [TONE_MAP_GAMMA] = &pl_tone_map_gamma, - [TONE_MAP_LINEAR] = &pl_tone_map_linear, -}; - static const char *const var_names[] = { "in_w", "iw", ///< width of the input video frame "in_h", "ih", ///< height of the input video frame @@ -269,6 +252,26 @@ static void pl_av_log(void *log_ctx, enum pl_log_level level, const char *msg) av_log(log_ctx, av_lev, "%s\n", msg); } +static const struct pl_tone_map_function *pl_get_tonemapping_func(int tm) { + switch (tm) { + case TONE_MAP_AUTO: return &pl_tone_map_auto; + case TONE_MAP_CLIP: return &pl_tone_map_clip; +#if PL_API_VER >= 246 + case TONE_MAP_ST2094_40: return &pl_tone_map_st2094_40; + case TONE_MAP_ST2094_10: return &pl_tone_map_st2094_10; +#endif + case TONE_MAP_BT2390: return &pl_tone_map_bt2390; + case TONE_MAP_BT2446A: return &pl_tone_map_bt2446a; + case TONE_MAP_SPLINE: return &pl_tone_map_spline; + case TONE_MAP_REINHARD: return &pl_tone_map_reinhard; + case TONE_MAP_MOBIUS: return &pl_tone_map_mobius; + case TONE_MAP_HABLE: return &pl_tone_map_hable; + case TONE_MAP_GAMMA: return &pl_tone_map_gamma; + case TONE_MAP_LINEAR: return &pl_tone_map_linear; + default: av_assert0(0); + } +} + static int parse_shader(AVFilterContext *avctx, const void *shader, size_t len) { LibplaceboContext *s = avctx->priv; @@ -365,7 +368,7 @@ static int update_settings(AVFilterContext *ctx) s->color_map_params = *pl_color_map_params( .intent = s->intent, .gamut_mode = gamut_mode, - .tone_mapping_function = tonemapping_funcs[s->tonemapping], + .tone_mapping_function = pl_get_tonemapping_func(s->tonemapping), .tone_mapping_param = s->tonemapping_param, .tone_mapping_mode = tonemapping_mode, .inverse_tone_mapping = s->inverse_tonemapping,