From patchwork Thu Dec 10 11:16:19 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24472 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8BC5644AF7C for ; Thu, 10 Dec 2020 13:18:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6DBE7689C68; Thu, 10 Dec 2020 13:18:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 104F16881C3 for ; Thu, 10 Dec 2020 13:18:47 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id c5so1439085wrp.6 for ; Thu, 10 Dec 2020 03:18:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=EuMqLaTYCCEyf6m+VpUfNjngRf0mbaDZugkFqGzpLVc=; b=Ot5KzWGh1RYrUFJOcMO2fry+if4q/lkFiKyT/ZUDdp2uvKcFbopzAV6l06pAw88Nns ISNa/kGNWBwKsk/jz0TmclvEj3vxlOFeM78p4+/1Ylv0ZPXUYJ9k0vQB2O1HCRRlNTF7 ttGM67ymbPNFI1VbVzNcRkai5l5vzRzAkrHBSjnl6BnBYHoElWgtp0o6KCkcBVXPd6uo cTLzNuueD6nOEXW1JnzjYEgLxaWiDATF8bpk/wxLOgth/PSE/iz+PT2gDW7EpkGi6gl3 mxH2Iea3RaRL2YL+upzsBFpKrS+ue/w4X1lo3WDndg+HOztcxktiW1XlOXS1T8menr8V 1Reg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=EuMqLaTYCCEyf6m+VpUfNjngRf0mbaDZugkFqGzpLVc=; b=MvW0PVWILtxofzVdn39ewDCiA2jb1+Ht3+12QYZD0W6HPtPQgo8Dqmt7ahoRKYHYFA Vzruqq0JfK7QxkpOwdDeKEBWtyuUwpwT+qj/YSISXySZf8uCaShplo0Vn9fnfKromd50 96wmP8vDVniFDKveqClCuUEO1HCfcub8N5IPthsB7IklwqmrmIhMCDRmaKp+MBlmscgA 2RukumEVyPPRzhchN7aRh0gocQGZhbJQ6crNOOm6dd/AlkvkBEoTTRT7XMrNCoioMs2S VQX8hacocVIFFHT6YTdu63Lqpi6a9XDftIFNTnY/bIZHEaii5hzlIooVHeRpYGs43dgX TdNg== X-Gm-Message-State: AOAM532S4RlpCystRVFBA5HQaNN9WGaP6gKKIAS30J1SSHdjHWa+hJEr h9W3BbdlsSItlOt6XM2VF+Br4n3QoD6llg== X-Google-Smtp-Source: ABdhPJz9FzHURFgCw2/PUm1vjCvUcCMSTTv3dZ17gMJ6FvIKRjo6gowScPyVMBANZCGdh74RATQcTA== X-Received: by 2002:adf:d081:: with SMTP id y1mr7699369wrh.388.1607599126138; Thu, 10 Dec 2020 03:18:46 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:45 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:19 +0100 Message-Id: <20201210111657.2276739-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/39] avcodec/rl: Remove nonstatic storage of RL tables X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" ff_rl_free() was added in 324e50ee95929a9491b855c5e15451145bd5d1ec, but never used; nonstatic storage was not used long before that. Signed-off-by: Andreas Rheinhardt --- The test for whether a RLTable has already been initialized will be removed once all callers are behind ff_thread_once() (same for INIT_VLC_RL). This will happen soon. libavcodec/rl.c | 50 ++++++++----------------------------------------- libavcodec/rl.h | 11 +++-------- 2 files changed, 11 insertions(+), 50 deletions(-) diff --git a/libavcodec/rl.c b/libavcodec/rl.c index 6eac306b88..c532b5bf56 100644 --- a/libavcodec/rl.c +++ b/libavcodec/rl.c @@ -25,27 +25,16 @@ #include "rl.h" -void ff_rl_free(RLTable *rl) -{ - int i; - - for (i = 0; i < 2; i++) { - av_freep(&rl->max_run[i]); - av_freep(&rl->max_level[i]); - av_freep(&rl->index_run[i]); - } -} - -av_cold int ff_rl_init(RLTable *rl, - uint8_t static_store[2][2 * MAX_RUN + MAX_LEVEL + 3]) +av_cold void ff_rl_init(RLTable *rl, + uint8_t static_store[2][2 * MAX_RUN + MAX_LEVEL + 3]) { int8_t max_level[MAX_RUN + 1], max_run[MAX_LEVEL + 1]; uint8_t index_run[MAX_RUN + 1]; int last, run, level, start, end, i; - /* If table is static, we can quit if rl->max_level[0] is not NULL */ - if (static_store && rl->max_level[0]) - return 0; + /* If rl->max_level[0] is set, this RLTable has already been initialized */ + if (rl->max_level[0]) + return; /* compute max_level[], max_run[] and index_run[] */ for (last = 0; last < 2; last++) { @@ -70,36 +59,13 @@ av_cold int ff_rl_init(RLTable *rl, if (run > max_run[level]) max_run[level] = run; } - if (static_store) - rl->max_level[last] = static_store[last]; - else { - rl->max_level[last] = av_malloc(MAX_RUN + 1); - if (!rl->max_level[last]) - goto fail; - } + rl->max_level[last] = static_store[last]; memcpy(rl->max_level[last], max_level, MAX_RUN + 1); - if (static_store) - rl->max_run[last] = static_store[last] + MAX_RUN + 1; - else { - rl->max_run[last] = av_malloc(MAX_LEVEL + 1); - if (!rl->max_run[last]) - goto fail; - } + rl->max_run[last] = static_store[last] + MAX_RUN + 1; memcpy(rl->max_run[last], max_run, MAX_LEVEL + 1); - if (static_store) - rl->index_run[last] = static_store[last] + MAX_RUN + MAX_LEVEL + 2; - else { - rl->index_run[last] = av_malloc(MAX_RUN + 1); - if (!rl->index_run[last]) - goto fail; - } + rl->index_run[last] = static_store[last] + MAX_RUN + MAX_LEVEL + 2; memcpy(rl->index_run[last], index_run, MAX_RUN + 1); } - return 0; - -fail: - ff_rl_free(rl); - return AVERROR(ENOMEM); } av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size) diff --git a/libavcodec/rl.h b/libavcodec/rl.h index 9a767bc5fd..a83debccf7 100644 --- a/libavcodec/rl.h +++ b/libavcodec/rl.h @@ -49,17 +49,12 @@ typedef struct RLTable { } RLTable; /** - * @param static_store static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3] which will hold - * the level and run tables, if this is NULL av_malloc() will be used + * @param static_store static uint8_t array[2][2*MAX_RUN + MAX_LEVEL + 3] + * to hold the level and run tables. */ -int ff_rl_init(RLTable *rl, uint8_t static_store[2][2*MAX_RUN + MAX_LEVEL + 3]); +void ff_rl_init(RLTable *rl, uint8_t static_store[2][2*MAX_RUN + MAX_LEVEL + 3]); void ff_rl_init_vlc(RLTable *rl, unsigned static_size); -/** - * Free the contents of a dynamically allocated table. - */ -void ff_rl_free(RLTable *rl); - #define INIT_VLC_RL(rl, static_size)\ {\ int q;\ From patchwork Thu Dec 10 11:16:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24473 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D315544AF7C for ; Thu, 10 Dec 2020 13:18:54 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B11DB689BDB; Thu, 10 Dec 2020 13:18:54 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB0176800C9 for ; Thu, 10 Dec 2020 13:18:47 +0200 (EET) Received: by mail-wm1-f68.google.com with SMTP id a6so4307933wmc.2 for ; Thu, 10 Dec 2020 03:18:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=ohJt37Z3EU+p2KIphI4efR4oE9DLtCkDfa187X2HsKE=; b=rBbuUFzd1o2lNLe4ra5DIX4EH35MERfXpO//yweXP8nL+f7n2LvRx81SJpAf/FeW6c QOuFfgxgWJEr8QeSIvGqhAIcJUYV8EChFqF1/xnciC05Tq2eemsXCqzTJfius/0EvLFp oMFajqMpHgG12B8/QS4lr2AmVqg1K/IaydVirXeql1TsueJdEPBZiRj6oqNCHINHeP82 N4xdHUSOa/L517KmTHe74d/RPCZuDWn5YvDeSWGK6kKjybLhIHJ8sjxBl+O3x5SgE9KW ta0y2eYVsWfaEFyRflonhantwX33gK+CxjeN0yYbdS5ypW/SCHBAuxmjUQ44AGyiyyDZ y+VQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=ohJt37Z3EU+p2KIphI4efR4oE9DLtCkDfa187X2HsKE=; b=ahhNL53ifAMTzURlXaorfFkE8zzp7eAwSXZ8jnv3J2tb7uSUjvi0KoFQRX58PUVZ6/ jdYDkE0EAvveeWmZP/6eZIb8zV76d0tQWtgMTVyQAAu/OKsFp3mPiivwhnNliAXtox2x mpPLGA1DV9iKYqyHdPuAGQhdLMxM/u3yV0n8ybnp47bELx7kzA+nSiJei5bS78oDVqDy hdwE0CbssHZ09Z+2BRd0E0cW2jDTjvIjIUYlrmXaz690IxX7Dp81+W4OlY/2MJZ5ROCP Msmj64ySVymeB7vR3q3x/Icu/cllwEMUPBkh/VDLFhZspe0g6aEaErTUHFcpxVyTyddb 4ddA== X-Gm-Message-State: AOAM532EwdzhbwmGjJF8eQf4KKc8cGFWskt47fs9314cS/l8f8kuxafQ SgScDx7scg7D07iFekiVJ4G+fKzOTWQveA== X-Google-Smtp-Source: ABdhPJz8wumPelzDLDMm0idHIyRTNEvUdGqLbkz4AinQilZaDdH6Jav6ofWmxCCkSjHfthbLaE73VQ== X-Received: by 2002:a1c:a344:: with SMTP id m65mr7541435wme.108.1607599127043; Thu, 10 Dec 2020 03:18:47 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:46 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:20 +0100 Message-Id: <20201210111657.2276739-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/39] avcodec/mpeg12: Don't initialize encoder-only parts of RLTable X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" ff_mpeg12_init_vlcs() currently initializes index_run, max_level and max_run of ff_rl_mpeg1/2; yet the only user of these fields is the MPEG-1/2 encoder which already initializes these tables on its own. So remove the initializations in ff_mpeg12_init_vlcs(); this also simplifies making ff_mpeg12_init_vlcs() thread-safe. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12.c | 4 ---- libavcodec/mpeg12.h | 2 -- libavcodec/mpeg12enc.c | 6 ++++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index e4f007aec5..b4ef41e12d 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -41,8 +41,6 @@ #include "bytestream.h" #include "thread.h" -uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3]; - static const uint8_t table_mb_ptype[7][2] = { { 3, 5 }, // 0x01 MB_INTRA { 1, 2 }, // 0x02 MB_PAT @@ -163,8 +161,6 @@ av_cold void ff_mpeg12_init_vlcs(void) INIT_VLC_STATIC(&ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, &table_mb_btype[0][1], 2, 1, &table_mb_btype[0][0], 2, 1, 64); - ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); - ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); INIT_2D_VLC_RL(ff_rl_mpeg1, 680, 0); INIT_2D_VLC_RL(ff_rl_mpeg2, 674, 0); diff --git a/libavcodec/mpeg12.h b/libavcodec/mpeg12.h index 345d473d3a..76fc0bf955 100644 --- a/libavcodec/mpeg12.h +++ b/libavcodec/mpeg12.h @@ -25,8 +25,6 @@ #include "mpeg12vlc.h" #include "mpegvideo.h" -extern uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3]; - void ff_mpeg12_common_init(MpegEncContext *s); #define INIT_2D_VLC_RL(rl, static_size, flags)\ diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index ac4af19ae7..05fd8c0e00 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1037,8 +1037,10 @@ void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[8][64], static av_cold void mpeg12_encode_init_static(void) { - ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); - ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); + static uint8_t mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3]; + + ff_rl_init(&ff_rl_mpeg1, mpeg12_static_rl_table_store[0]); + ff_rl_init(&ff_rl_mpeg2, mpeg12_static_rl_table_store[1]); for (int i = 0; i < 64; i++) { mpeg1_max_level[0][i] = ff_rl_mpeg1.max_level[0][i]; From patchwork Thu Dec 10 11:16:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24474 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1F73244AF7C for ; Thu, 10 Dec 2020 13:18:56 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 01AB2689CFB; Thu, 10 Dec 2020 13:18:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D9011689C60 for ; Thu, 10 Dec 2020 13:18:48 +0200 (EET) Received: by mail-wm1-f68.google.com with SMTP id c198so4311851wmd.0 for ; Thu, 10 Dec 2020 03:18:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=XcwPFrWDcG9TCHX2BQyQagBthrjsMS9BAnGTPqUY8D8=; b=JsPirXHgBlpTWxhuFQxrGvkXsiBHeO+XvbMr71aZ91KBtVhWacQ+x4f36KSZTUD4Bf NoMnpk1HjzbpX/BgibtI9w+cFVlmf6K+A1jWEy51Ytlo6gBhw6u7E4boNcimEMvIEHLR kMcZUTvmi56ZMHeeruHSpcn4P48jiCAPNACE5EklmBFkkw62f+Jl6ZKk6w3gAbIfZ0vf Sw3RhvL586wCoGyU920nY5O9uO7vDJHZScSNitiuq6N0sWnNbswfj83torkcNOIcldTn dw8fw+fsd5blqWG67JDM0gqJZPiSaePf6mcExlmQIBWC3/nzSh+5d6fVNdoQq4kZD3PZ nWzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=XcwPFrWDcG9TCHX2BQyQagBthrjsMS9BAnGTPqUY8D8=; b=S0hOwPNTulUDjwKMNDi1G8juJcRFoXeeulCPctpo5AmchOW9dU+5RpzFK5KGFncvJy nMuFeC5T/1tit+1VIQS0uGUkf+pAoaL+ODD0SZ5cZBq4XRUxoxVIs+TA445nWLBjeMoF kTSFh9zArsKmwlFGG15hrfutWq0PLAhWdr1X+glMxJQMW/FmQjGWPrIA2teeH5mYgTYG QSJsSPNJMHhjUp6Jk5cl65O8IkToaCT/+ttnLE7itfOL9tmk5t0/5j+nbb+fqkjv7nCK 5THZMSw4EfyfBzkRrTlu1N26buVwbZ/zjO6gPvDxZcmHUZD4X2zh9b6XYxqsRO4QzfDV nwnQ== X-Gm-Message-State: AOAM533EHeq/3I+geZuPVk92GjUKNTjywmo9gcZYNjAP8cLxh4wbHHxW q8ASGLPHBDswtcM1fVrkkIgeTO9bGWZeOw== X-Google-Smtp-Source: ABdhPJzfNfQFpknD6lb8n1LxwUzLeqXFrNblYXpMWrJPFGpin0QCXzpbyJ9vSKyJ1aZpxeEQmqx7mQ== X-Received: by 2002:a05:600c:210e:: with SMTP id u14mr7742434wml.48.1607599128143; Thu, 10 Dec 2020 03:18:48 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:47 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:21 +0100 Message-Id: <20201210111657.2276739-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/39] avcodec/mpeg12: Make initializing VLCs thread-safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This automatically makes the eamad, eatqi, ipu and mdec decoders init-threadsafe; in addition to the actual mpeg[12]video decoders, of course. Signed-off-by: Andreas Rheinhardt --- libavcodec/eamad.c | 1 + libavcodec/eatqi.c | 1 + libavcodec/mdec.c | 1 + libavcodec/mpeg12.c | 15 ++++++++------- libavcodec/mpeg12dec.c | 11 +++++++---- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/libavcodec/eamad.c b/libavcodec/eamad.c index 7f28abbafe..9dccddd6d3 100644 --- a/libavcodec/eamad.c +++ b/libavcodec/eamad.c @@ -349,4 +349,5 @@ AVCodec ff_eamad_decoder = { .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; diff --git a/libavcodec/eatqi.c b/libavcodec/eatqi.c index 96536b1a08..456bd3c563 100644 --- a/libavcodec/eatqi.c +++ b/libavcodec/eatqi.c @@ -189,4 +189,5 @@ AVCodec ff_eatqi_decoder = { .close = tqi_decode_end, .decode = tqi_decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c index b16cbb6a79..d0bb1162b6 100644 --- a/libavcodec/mdec.c +++ b/libavcodec/mdec.c @@ -258,4 +258,5 @@ AVCodec ff_mdec_decoder = { .close = decode_end, .decode = decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index b4ef41e12d..2aaed89920 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -30,6 +30,7 @@ #include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/timecode.h" +#include "libavutil/thread.h" #include "internal.h" #include "avcodec.h" @@ -132,13 +133,8 @@ VLC ff_mb_ptype_vlc; VLC ff_mb_btype_vlc; VLC ff_mb_pat_vlc; -av_cold void ff_mpeg12_init_vlcs(void) +static av_cold void mpeg12_init_vlcs(void) { - static int done = 0; - - if (!done) { - done = 1; - INIT_VLC_STATIC(&ff_dc_lum_vlc, DC_VLC_BITS, 12, ff_mpeg12_vlc_dc_lum_bits, 1, 1, ff_mpeg12_vlc_dc_lum_code, 2, 2, 512); @@ -164,7 +160,12 @@ av_cold void ff_mpeg12_init_vlcs(void) INIT_2D_VLC_RL(ff_rl_mpeg1, 680, 0); INIT_2D_VLC_RL(ff_rl_mpeg2, 674, 0); - } +} + +av_cold void ff_mpeg12_init_vlcs(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, mpeg12_init_vlcs); } /** diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 6d0e9fc7ed..7d797c259a 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -2899,7 +2899,8 @@ AVCodec ff_mpeg1video_decoder = { .capabilities = AV_CODEC_CAP_DRAW_HORIZ_BAND | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_TRUNCATED | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM | FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP | + FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM, .flush = flush, .max_lowres = 3, .update_thread_context = ONLY_IF_THREADS_ENABLED(mpeg_decode_update_thread_context), @@ -2932,7 +2933,8 @@ AVCodec ff_mpeg2video_decoder = { .capabilities = AV_CODEC_CAP_DRAW_HORIZ_BAND | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_TRUNCATED | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM | FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP | + FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM, .flush = flush, .max_lowres = 3, .profiles = NULL_IF_CONFIG_SMALL(ff_mpeg2_video_profiles), @@ -2976,7 +2978,8 @@ AVCodec ff_mpegvideo_decoder = { .close = mpeg_decode_end, .decode = mpeg_decode_frame, .capabilities = AV_CODEC_CAP_DRAW_HORIZ_BAND | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_TRUNCATED | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM | FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP | + FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM, .flush = flush, .max_lowres = 3, }; @@ -3139,5 +3142,5 @@ AVCodec ff_ipu_decoder = { .decode = ipu_decode_frame, .close = ipu_decode_end, .capabilities = AV_CODEC_CAP_DR1, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, }; From patchwork Thu Dec 10 11:16:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24475 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1E54B44AF7C for ; Thu, 10 Dec 2020 13:18:57 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 04E14689FF0; Thu, 10 Dec 2020 13:18:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EF939689CFB for ; Thu, 10 Dec 2020 13:18:49 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id q75so4886874wme.2 for ; Thu, 10 Dec 2020 03:18:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=JeNcZY10cTNR0kbmfMdljNp/1hGdTPM2ZRJYIvWDAcI=; b=rtoRAP5ewf0RGSSE+FOdP2zSn8CGbA2Mony/aSyt+OpHE34uNohgwQoe2FcddwLk33 B/UKzO5zyba8XIrwjQSfP+uvjyqwx5bLGAjBltM3Ts7jKoKMEqn67a4CSDxCF0nFmnHy DvCPBWjNqnbsMukfDJ8U6uBVU/2qafgGwg2B0H7u5FLQ+fCln9ytvNZLnEhkOfT7Tc9r SJUPHb8RauOZPSTMkhPGNNX4BW86xKUI1a3p9PhEW6accQJtHZwev2IfnLvXUG8yZSAs p217pAXWjRZhZcgnPuxEydxlYa4hwNyPHUP2TKgEazvIqeZR27JL343hiPadK+Yuh6j4 iwmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=JeNcZY10cTNR0kbmfMdljNp/1hGdTPM2ZRJYIvWDAcI=; b=HXSQmbmKc350xiqBA7kLKHOGt78ZvAwI9wWQpuBOKzBpazK3kWdJ6vOzeeib/+alNW wJtLRFKZkhdlWz/YfTiNIuoIAVcUonkZBZpCOco9CVrrViddH2j1B+QHqVJs+XJBJ8nh aR+N2P5CGTcElm509LdPZk8bxwvVmYE98IbJI3RTgyNQmWZw6HVjTiCSt4S8MMDDhT6S CQrewncoILVdd64MSc+A9RVrqTcq1RoCdaLIogPspNzcedyhDlpAOFKIdQ1ZFiT4laxJ RfqD7hz/e1KXO19bkLhUh8u01ZYxTJ4JCjPbBbPnEYlvO++m4AbnLEjTESWFm2TPoZze CDQg== X-Gm-Message-State: AOAM532jjCziQZSfc69PhvNdog0MxVkbqONMRMQLAKgANFpo843XRcsB DlDkvzDuiGTFh5YNUaeAIuX8GtQ2FyIV/A== X-Google-Smtp-Source: ABdhPJwPpgCtqFLNJzL2ZnqSipuxJ2B8X7t7YkeQqIpXxCktQpIl29mfh5vIfONgs67FxgSR9q6FXw== X-Received: by 2002:a7b:c389:: with SMTP id s9mr7429422wmj.159.1607599129205; Thu, 10 Dec 2020 03:18:49 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:48 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:22 +0100 Message-Id: <20201210111657.2276739-5-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/39] avcodec/mpeg12: Reindentation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12.c | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 2aaed89920..1aacd07e41 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -135,31 +135,31 @@ VLC ff_mb_pat_vlc; static av_cold void mpeg12_init_vlcs(void) { - INIT_VLC_STATIC(&ff_dc_lum_vlc, DC_VLC_BITS, 12, - ff_mpeg12_vlc_dc_lum_bits, 1, 1, - ff_mpeg12_vlc_dc_lum_code, 2, 2, 512); - INIT_VLC_STATIC(&ff_dc_chroma_vlc, DC_VLC_BITS, 12, - ff_mpeg12_vlc_dc_chroma_bits, 1, 1, - ff_mpeg12_vlc_dc_chroma_code, 2, 2, 514); - INIT_VLC_STATIC(&ff_mv_vlc, MV_VLC_BITS, 17, - &ff_mpeg12_mbMotionVectorTable[0][1], 2, 1, - &ff_mpeg12_mbMotionVectorTable[0][0], 2, 1, 266); - INIT_VLC_STATIC(&ff_mbincr_vlc, MBINCR_VLC_BITS, 36, - &ff_mpeg12_mbAddrIncrTable[0][1], 2, 1, - &ff_mpeg12_mbAddrIncrTable[0][0], 2, 1, 538); - INIT_VLC_STATIC(&ff_mb_pat_vlc, MB_PAT_VLC_BITS, 64, - &ff_mpeg12_mbPatTable[0][1], 2, 1, - &ff_mpeg12_mbPatTable[0][0], 2, 1, 512); - - INIT_VLC_STATIC(&ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 7, - &table_mb_ptype[0][1], 2, 1, - &table_mb_ptype[0][0], 2, 1, 64); - INIT_VLC_STATIC(&ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, - &table_mb_btype[0][1], 2, 1, - &table_mb_btype[0][0], 2, 1, 64); - - INIT_2D_VLC_RL(ff_rl_mpeg1, 680, 0); - INIT_2D_VLC_RL(ff_rl_mpeg2, 674, 0); + INIT_VLC_STATIC(&ff_dc_lum_vlc, DC_VLC_BITS, 12, + ff_mpeg12_vlc_dc_lum_bits, 1, 1, + ff_mpeg12_vlc_dc_lum_code, 2, 2, 512); + INIT_VLC_STATIC(&ff_dc_chroma_vlc, DC_VLC_BITS, 12, + ff_mpeg12_vlc_dc_chroma_bits, 1, 1, + ff_mpeg12_vlc_dc_chroma_code, 2, 2, 514); + INIT_VLC_STATIC(&ff_mv_vlc, MV_VLC_BITS, 17, + &ff_mpeg12_mbMotionVectorTable[0][1], 2, 1, + &ff_mpeg12_mbMotionVectorTable[0][0], 2, 1, 266); + INIT_VLC_STATIC(&ff_mbincr_vlc, MBINCR_VLC_BITS, 36, + &ff_mpeg12_mbAddrIncrTable[0][1], 2, 1, + &ff_mpeg12_mbAddrIncrTable[0][0], 2, 1, 538); + INIT_VLC_STATIC(&ff_mb_pat_vlc, MB_PAT_VLC_BITS, 64, + &ff_mpeg12_mbPatTable[0][1], 2, 1, + &ff_mpeg12_mbPatTable[0][0], 2, 1, 512); + + INIT_VLC_STATIC(&ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 7, + &table_mb_ptype[0][1], 2, 1, + &table_mb_ptype[0][0], 2, 1, 64); + INIT_VLC_STATIC(&ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, + &table_mb_btype[0][1], 2, 1, + &table_mb_btype[0][0], 2, 1, 64); + + INIT_2D_VLC_RL(ff_rl_mpeg1, 680, 0); + INIT_2D_VLC_RL(ff_rl_mpeg2, 674, 0); } av_cold void ff_mpeg12_init_vlcs(void) From patchwork Thu Dec 10 11:16:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24477 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 4205D44AF7C for ; Thu, 10 Dec 2020 13:18:59 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2ACE768A1F0; Thu, 10 Dec 2020 13:18:59 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E6445689A63 for ; Thu, 10 Dec 2020 13:18:50 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id q75so4886925wme.2 for ; Thu, 10 Dec 2020 03:18:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=/Jc2JrzZlXWzXziOuJTiXOoSmT0j6UyS1k0c90SKvdg=; b=MIvtn0sIc4DpUdVDWMRSbJ5V1UxOMCu01SKf8jJchha5FB0oMI4Fi2Ns4kuwJT3E2N YI5fx3i77ACfgsNN8Sh1ntXaeXNDCKvZU0YVVw+WC+Xc/WZs6Q2qOwuaP5nBtHb79QSv 1El86QbAs7AK+ZOP1D3TKQxbggztqk11mZ1zJ/C4Gi3mAOGHC6Ip+cMO/cW93SKpTX5Q vfVzQdryMAW2Q0FdI2PzFb60ZuG7RBiizigsXoPciOnJii7JKCNG7vvoH+Q7ZoDGVElt rkk8P3rmOxiHx9C31WBSATotgnmo+1abkcsrpGwH6VDPQVOoz2DQXE6u4uqa52YaZ4wz FMiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=/Jc2JrzZlXWzXziOuJTiXOoSmT0j6UyS1k0c90SKvdg=; b=ZgS49cj5gKPnPzovqKeW0HOE54AvngzsOlu0/B9nCuRSYyRM/Z52a0uAxu38PRsaPQ OD+BK4mZCrhjNa5iR7YHuiB8MulLfMNuDbAeKzOSI9UoF9M378P8l292AxmoMGnyfDoB 1Wg0BTT44P7lzJBVLcTYYiiQb/YP43LsNxylDTOGMSq+VRI9kAF5YX6WEahBWMmWQMDn GJDF3Yj+tvYmZ1MlKDrj0iC7Tu8Ih2Vp11FJs0/9/ZfHa+Z8oeSqMw7zVN27g09UKs3z Hplxq+HEq7gvr1qWnMlsh3ggexO2F3b0FZAOOcpPs8roOM/hyJTMRbcUZnZBcCasJZKl IFGg== X-Gm-Message-State: AOAM531nXVABgyqk+hwGE3yMgynWPmXOJqTbNjXxMDqciLr5CeS7p/1E u0dn3c2p9TLyao5iYaVWNa3UqU5UxsjTtw== X-Google-Smtp-Source: ABdhPJwnRE8/0F8D/HUklaBAyDqUxrkP30Japuw28DpE5Lqp53kiibjBfujLwRXIjWQ8NshTMOlIzQ== X-Received: by 2002:a1c:f60b:: with SMTP id w11mr7742860wmc.180.1607599130155; Thu, 10 Dec 2020 03:18:50 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:49 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:23 +0100 Message-Id: <20201210111657.2276739-6-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/39] avcodec/mpeg12enc, speedhqenc: Avoid redundant copies of tables X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12enc.c | 12 ++---------- libavcodec/speedhqenc.c | 12 ++---------- 2 files changed, 4 insertions(+), 20 deletions(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 05fd8c0e00..5cbcb15630 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -60,9 +60,6 @@ static uint8_t uni_mpeg2_ac_vlc_len[64 * 64 * 2]; static uint32_t mpeg1_lum_dc_uni[512]; static uint32_t mpeg1_chr_dc_uni[512]; -static uint8_t mpeg1_index_run[2][64]; -static int8_t mpeg1_max_level[2][64]; - #define A53_MAX_CC_COUNT 0x1f static av_cold void init_uni_ac_vlc(RLTable *rl, uint8_t *uni_ac_vlc_len) @@ -718,8 +715,8 @@ next_coef: MASK_ABS(sign, alevel); sign &= 1; - if (alevel <= mpeg1_max_level[0][run]) { - code = mpeg1_index_run[0][run] + alevel - 1; + if (alevel <= ff_rl_mpeg1.max_level[0][run]) { + code = ff_rl_mpeg1.index_run[0][run] + alevel - 1; /* store the VLC & sign at once */ put_bits(&s->pb, table_vlc[code][1] + 1, (table_vlc[code][0] << 1) + sign); @@ -1042,11 +1039,6 @@ static av_cold void mpeg12_encode_init_static(void) ff_rl_init(&ff_rl_mpeg1, mpeg12_static_rl_table_store[0]); ff_rl_init(&ff_rl_mpeg2, mpeg12_static_rl_table_store[1]); - for (int i = 0; i < 64; i++) { - mpeg1_max_level[0][i] = ff_rl_mpeg1.max_level[0][i]; - mpeg1_index_run[0][i] = ff_rl_mpeg1.index_run[0][i]; - } - init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c index 3bda2a8453..9807024980 100644 --- a/libavcodec/speedhqenc.c +++ b/libavcodec/speedhqenc.c @@ -46,9 +46,6 @@ static uint16_t mpeg12_vlc_dc_chroma_code_reversed[12]; static uint32_t speedhq_lum_dc_uni[512]; static uint32_t speedhq_chr_dc_uni[512]; -static uint8_t speedhq_index_run[2][64]; -static int8_t speedhq_max_level[2][64]; - static uint8_t uni_speedhq_ac_vlc_len[64 * 64 * 2]; static uint32_t reverse(uint32_t num, int bits) @@ -77,11 +74,6 @@ static av_cold void speedhq_init_static_data(void) ff_rl_init(&ff_rl_speedhq, speedhq_static_rl_table_store); - for (int i = 0; i < 64; i++) { - speedhq_max_level[0][i] = ff_rl_speedhq.max_level[0][i]; - speedhq_index_run[0][i] = ff_rl_speedhq.index_run[0][i]; - } - /* build unified dc encoding tables */ for (int i = -255; i < 256; i++) { int adiff, index; @@ -231,8 +223,8 @@ static void encode_block(MpegEncContext *s, int16_t *block, int n) MASK_ABS(sign, alevel); sign &= 1; - if (alevel <= speedhq_max_level[0][run]) { - code = speedhq_index_run[0][run] + alevel - 1; + if (alevel <= ff_rl_speedhq.max_level[0][run]) { + code = ff_rl_speedhq.index_run[0][run] + alevel - 1; /* store the VLC & sign at once */ put_bits_le(&s->pb, ff_rl_speedhq.table_vlc[code][1] + 1, ff_rl_speedhq.table_vlc[code][0] + (sign << ff_rl_speedhq.table_vlc[code][1])); From patchwork Thu Dec 10 11:16:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24479 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 2DA7644AF7C for ; Thu, 10 Dec 2020 13:19:01 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1608C68A2C6; Thu, 10 Dec 2020 13:19:01 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BCE3E689CD7 for ; Thu, 10 Dec 2020 13:18:51 +0200 (EET) Received: by mail-wm1-f68.google.com with SMTP id c198so4311983wmd.0 for ; Thu, 10 Dec 2020 03:18:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=qRzr9s457tC57CheAwaOEUOFnx4dtJxavSjnBt98l7E=; b=hJq3SYbPW+o+vA/eVrwZiLhSriOEjSr9qEYo5ucP3YNR9VaUwKea99ukzLltwWLFRE apxK7LvaEN8y1z6IFrYJmlJ3yuHj5yJ1pWwr1476fl0l0t9Qzf8Cwr+eHBTftaAcAr2f 5EB5BD0tZWLOg+8sZ2k9GsLrI4bF6F5AEhKH+dXHqpJxqyuRR3qCm1aoz1Vnk0MT0oH8 6XRfKJRYL9vuZAapsJG/8sCa7ipRZS88l7ieOtNmJonsz1lmYPm3KJla5hkRKDCO369t Bf+AaZuw6auKlfiG+epJ5T1sWReE/Dwv3vpNuvuMhDx+oS2zJzgLcQaHQv2DGA36H0JH InAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=qRzr9s457tC57CheAwaOEUOFnx4dtJxavSjnBt98l7E=; b=ryU2mHRWKWbECp2nqvzoybTFR8CsfBRJ+N9HXYVPfC/Rnms1vbU5d9IlesCFzCnd7S GD/pHJelCZ+tHjJ4Dwar3bCksBtefAbM24Vu0ZGAyrEKBMmzRUxocl6Y+Rqp93YGeV7g mXjoatqwSCxgX+9DFsuFpP/ynS1Vwz9fAyYFTKRvNHU60usx1Fl38djYLbMy3P3cy4Ed Xz0/9I2ggZgs2d48TRdeMuhbg6slt6ybYdExQmk3GrROiGPiav90kpGJZB2aEwOHZibS 3EbXi2pIHQNm8YwL2NYl2HSYH2NzYP7mVUQEQa4hHzGZpFS9oEmx5h/6sHPM3/6h7VNm x8Tg== X-Gm-Message-State: AOAM533mBlJhZvW5UBSorOYzrVBwvUvSufw8DZ4KC4E0gxaOyhdDoXXU wuAxP7Gtr9e+8+txg4YlvwQ80zIs6PnxRA== X-Google-Smtp-Source: ABdhPJyn/JA1dmGdStX5I1yMOtT7SYswdTjV7VeVNz6ryeMg5dQsqVFZDZ7eIFlqMUPvIbwWDCV2Qg== X-Received: by 2002:a1c:9e41:: with SMTP id h62mr7718494wme.51.1607599131062; Thu, 10 Dec 2020 03:18:51 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:50 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:24 +0100 Message-Id: <20201210111657.2276739-7-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/39] avcodec/speedhq: Remove cast X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/speedhq.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/speedhq.c b/libavcodec/speedhq.c index 748e8617f6..0c08894315 100644 --- a/libavcodec/speedhq.c +++ b/libavcodec/speedhq.c @@ -135,7 +135,7 @@ static const uint8_t speedhq_run[121] = { RLTable ff_rl_speedhq = { 121, 121, - (const uint16_t (*)[])speedhq_vlc, + speedhq_vlc, speedhq_run, speedhq_level, }; From patchwork Thu Dec 10 11:16:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24519 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp4931831ybf; Thu, 10 Dec 2020 03:20:49 -0800 (PST) X-Google-Smtp-Source: ABdhPJw3CfUqigKf+h2MnLOXGzdsxLp1Tto305pu4J+m0UIJWDLWQ+Qi1TVTfeWFGkttsCura/ft X-Received: by 2002:a05:600c:208:: with SMTP id 8mr7788857wmi.143.1607599249335; Thu, 10 Dec 2020 03:20:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607599249; cv=none; d=google.com; s=arc-20160816; b=liQh4qPjGgm2thg4Y7vKw8Y07tCQLOqJTPHMH+BKQQYOxAMY0/T5fkN+ReyTKaBp1G x+NXx+LuFPISYs+Zq7zn7od2Wxw7cWIW8HEWso/Pe7wWytC9YFMQ/mj9gym9sk31kxVx rvCCyrYwbnoidQFMwOeIaXTWjU02eFcXHeFaJxk916nx1LbmhymY+LV5ci27qLk65GwD QFn20MFPhP7vtCNGjwichTndqW2CHIGuNZq49tCppA0qOq1LRQEb7u0pEG3ZRPWOo7gK 2RvrzawYlVpmHqHmvGnQjnA5++Y2jl/wq2unyrJDVNsT2IMOOlO32E4B3I1Frip8xaJh xrGQ== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=pNddBMIRDqHtBa/EpzB3HHMKOqInvnfR7Od5zQ5iPqE=; b=rrzCwGJXxf4vvLAFQdmr0xUpoVXuCrPhOjpHayHLLx6++gr9vEtmsYRJy5eo1h/tch ucZw8BM+3GnC1oFtrQmYuB/NNO+NjzWSIBc4tkFbUYxs5Nj5qdhmMRlMjoLF+mdFTDW+ 2NW7oJMtGL7ah32n0K8bzbgcBU2RwwaYJAbrb5hr1WrY/pspPKNwQwTMiMUvj6ZV+zrn uxs6tSg5bPPPPVLn6MdnJMP4oqlrZMLox5mRKbbQJxh3lAi8U+7RsEY1JhB+QcY7/Oyq aZ+4nuZk4spl78zsLJ87+SFnAsFSjB8FSUOoithF127hLaYJaK2HkMj8NUHKSQ1aI0pn rVyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ijdxsnFa; 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 y80si5207476wmd.104.2020.12.10.03.20.49; Thu, 10 Dec 2020 03:20:49 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=ijdxsnFa; 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 20E2C68A329; Thu, 10 Dec 2020 13:19:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EA451689FE7 for ; Thu, 10 Dec 2020 13:18:52 +0200 (EET) Received: by mail-wm1-f65.google.com with SMTP id a6so4308215wmc.2 for ; Thu, 10 Dec 2020 03:18:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=kK2378aIfPvos0rK1fyeeWFrF5Tl515Bj5MvCD3w4bs=; b=ijdxsnFawM9XlS0Q5rAiFQE/uTfmXZn129h0jSmxGfD13GtfaIMomHo1o12pAWPPLD UeWWuSDv7+WaxzOPuP/m/z9O+lsVhQh5tFiuOWObyXH5MMVdXSc1D3qdc5ijtclZOzvq TJEyZT+h+ySKRDuRbiLqziFutLKmMKhcWkJ5IYh3qSEVaDGThvewwKLfXup1A/lJE+IE sa1ZkMq/2C14CTJ1xAxa5OwM7Wdm1ts9CPw2hcavF71QOAATwmyyT/rPwXClXNVg0J/X i7DD3Zyg2T3glHk29hOA81XfTbuyE9rNBffJuG1o++uGqlRUoWSFUC3PRtvWkEpAsIq2 E8Dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=kK2378aIfPvos0rK1fyeeWFrF5Tl515Bj5MvCD3w4bs=; b=haLOE18O1DIQLByAjKZEdoqB+csEe/LTdNL9OB7jSgBcMvQ8tBi5fopg90QDVo2jdh COQtxi9ZXEHlUVjbFuPkwMFIIvJL7Iqszw7gKGnRqBOD50JnKg1vsoLyDwiBOpjI7z6u uq2FFuRzfslsBmm/S8GjkipdBtsixavTJlW6LTvyeLjDy4Cp6bwWXEEjiRBLd9lmEMi3 bbW9VIOPNLWCvM4TiFHkCI2DbO4khzZtCtghEn3B2QTEwuh4FGQ0rn7MWIckIxH8yY/W 4XP/Z3MTQG8bVH7HwDrgxOSXSjj//zbIYYbsbzeZfLafbxSIdhVgKsEwLWAgfUn47Epw vlvA== X-Gm-Message-State: AOAM530HPMdhPV7xT8Wp5DrqTvWg5LypVAFM+1QHP8rtL/y3YsXE8g3f ttY9svcEL29ZioStzKS6M5AvdNpA+8NGvQ== X-Received: by 2002:a1c:41c5:: with SMTP id o188mr7578209wma.18.1607599132227; Thu, 10 Dec 2020 03:18:52 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:51 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:25 +0100 Message-Id: <20201210111657.2276739-8-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/39] avcodec/rl: Allow to create only a few VLC tables X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: +O786ymLntJQ Content-Length: 2148 It is not uncommon that only the first one is used; this is similar to ff_init_2d_vlc_rl(). Signed-off-by: Andreas Rheinhardt --- libavcodec/rl.c | 3 +++ libavcodec/rl.h | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/libavcodec/rl.c b/libavcodec/rl.c index c532b5bf56..93153ff723 100644 --- a/libavcodec/rl.c +++ b/libavcodec/rl.c @@ -80,6 +80,9 @@ av_cold void ff_rl_init_vlc(RLTable *rl, unsigned static_size) int qmul = q * 2; int qadd = (q - 1) | 1; + if (!rl->rl_vlc[q]) + return; + if (q == 0) { qmul = 1; qadd = 0; diff --git a/libavcodec/rl.h b/libavcodec/rl.h index a83debccf7..26e0b32a90 100644 --- a/libavcodec/rl.h +++ b/libavcodec/rl.h @@ -68,6 +68,14 @@ void ff_rl_init_vlc(RLTable *rl, unsigned static_size); }\ } +#define INIT_FIRST_VLC_RL(rl, static_size) \ +do { \ + static RL_VLC_ELEM rl_vlc_table[static_size]; \ + \ + rl.rl_vlc[0] = rl_vlc_table; \ + ff_rl_init_vlc(&rl, static_size); \ +} while (0) + static inline int get_rl_index(const RLTable *rl, int last, int run, int level) { int index; From patchwork Thu Dec 10 11:16:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24481 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A349D44AF7C for ; Thu, 10 Dec 2020 13:19:04 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8D97268A403; Thu, 10 Dec 2020 13:19:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DC86568A255 for ; Thu, 10 Dec 2020 13:18:53 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id c198so4312088wmd.0 for ; Thu, 10 Dec 2020 03:18:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=2rZNQyOCA2PrkWKaOFlKvbCj6SW7TR/wTOJ72OaNrUk=; b=VMepO2O4QbSYy+WzoKJxg3tdIY8MinDQD/1NfssKZISieJga3UQ2fwZChaYZm5TEDb AzbAp3GymcvIpEpbRbKVuQsoFITbZo6aoS2g9+IPpCLgm1IgCjsQW3M5YIkXDwTJOBSt TKpUOtpsJmDrWhJMpnNN5GBsG4Q807p/EOA3+7CA4fWtGc1i4DDh17+yv/EJoAQ16BWm iT6cFrLAqtL6trYBtCGhEvABwR9DWfZJclYw7kdcxEnyIubQ8GY36xhAJeMXHDFB3Ok0 wHe0dBrbrQ/mLG/+bMFrSQe5eRumif7yyVXRBzAEDSHOg9WbYtecSrmLZiRVXXXpgJyi Ak4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=2rZNQyOCA2PrkWKaOFlKvbCj6SW7TR/wTOJ72OaNrUk=; b=n9kOtMOBHtrSvQZlF3q1cQn1PKznsB/qI1JMN9smcmE+UfWSMe8WvcUMKt1uI3W1Xo r+7gTFAJ9lJBv6z+DKHaTXqFsr6hd3Ho0WDAD8m5Y5xqC3v5RuFtYxLJLqxP/zKkLFky iea3LhZHUllZUVvh58JqrtAjRbQ5tRwvHrNVpybQd+yZ/q5pPrPCVee8XcBswm3SnRb8 Lj9ryIlq6zftQ+hdDlGMoGyJQW6XwEWBIXgfrwLb08JDA+VFLzMTHXln3atm+PfBtsqR Gu5LfbQmhkSweTZTssZbuFFBA5T10fHxwX/Lfy2X5HqfB1+nhXbOh7eq1p0dBff/fJlF 7zhg== X-Gm-Message-State: AOAM533twnGQnTwraKGebkTJmRhiXxr4WLdAy+cn45qzJ+MSH8+WlpYt PlOFsUwT+XTb0q2q7exAW2yzuzUDST8Crg== X-Google-Smtp-Source: ABdhPJz4IQKGA6SstkiYJqdHSWHcXZHASuS5BAaG7SNJemTnkjYvyfMBAd472e6OIH2HLn7kYPDXvA== X-Received: by 2002:a1c:df85:: with SMTP id w127mr7835386wmg.166.1607599133142; Thu, 10 Dec 2020 03:18:53 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:52 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:26 +0100 Message-Id: <20201210111657.2276739-9-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/39] avcodec/h261dec: Don't initialize unused VLCs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The H.261 decoder uses only the very first VLC of ff_h261_rl_tcoeff, so only initialize this one. Saves 68448B from the .bss segment; in case the decoder is actually used, this amount of memory is saved. Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 8a49e7d894..dfa779b574 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -65,7 +65,7 @@ static av_cold void h261_decode_init_vlc(H261Context *h) INIT_VLC_STATIC(&h261_cbp_vlc, H261_CBP_VLC_BITS, 63, &ff_h261_cbp_tab[0][1], 2, 1, &ff_h261_cbp_tab[0][0], 2, 1, 512); - INIT_VLC_RL(ff_h261_rl_tcoeff, 552); + INIT_FIRST_VLC_RL(ff_h261_rl_tcoeff, 552); } } From patchwork Thu Dec 10 11:16:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24476 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1AC8044AF7C for ; Thu, 10 Dec 2020 13:18:58 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F0E2168A0EA; Thu, 10 Dec 2020 13:18:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 29612689D23 for ; Thu, 10 Dec 2020 13:18:55 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id r14so5068615wrn.0 for ; Thu, 10 Dec 2020 03:18:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=1o0+0JdNMuzd41P7eE2rLvebPqVkm27kDj6Sx0iAgDk=; b=UCv1YE29poEH4Yrbafs4kMK5eYNznuRiXc9qAk8QNrcsgYzFC47eXcjywlfOukXpN1 yMk+IY8bKadwdzYOhPGWn4iUDGI6iEjt2fPIO7lWU97Gh2PG6LCoph1etc/u3EqkEAVj UFjHkR9go4iTIqOi5i+2s20G+wK7/ZvYtTYuaKkfdkfnYd7WJGKfCrgYxMZK0DwAR1wW CGtoFLxK1Qlmf8yDQTAHhpWqxSRRlMhMnEtRML8aqjkNF5/1Vg+Cui6INsNtxcjTuCo5 nTKF1s19zJqYkMupaG7xsg9SX/Ge5Bl+U5Q7f1h9y37c/+s3z2KSdwFaq5Cfjb4n2CAO b1MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=1o0+0JdNMuzd41P7eE2rLvebPqVkm27kDj6Sx0iAgDk=; b=BW0clMJ/QCgexlc914/QeSkWDly2bQaTsyIvTsMOB8Fsfla0oI04zIHXW7v9ttyPrE MSGBC10aPcY7dawP+37d0CJ7xjeuFgRWf7NNDlG6f3TO8YsySKAKZOe7d8BBYBtk9q0d aALbqRvND+b0fhl4cl0pgX4Kt01WTUbW4OuFIwvxVXH+fHaD5E4MQ9f3mH0M53YU8gEY d5fR/iXAsVarB4rMXQ/TIT5CwtTkTQ8rq+7WfXD1wXQgMq+W6iXDxzXogN8bAYZ6Jsre N7Wqga0m74EcTMhugXa74qbbV4839xqGM2LIW4U3+eSxAII5ZhdEQz91RJrMr4aLdlJA 0dXw== X-Gm-Message-State: AOAM532rnCgBLzeTSM5k4hFnoNAa2sgLgIolpDx4E/0pgOCmjX4/RiTv WoEySp5yguBZrLsgIB2jCsCoqcNDCXd6Pg== X-Google-Smtp-Source: ABdhPJymHU/VnlNPhJf5XzSqxAHBdvo7I81JIPh3ScnGtjPviThV0Rp/HuLPh3QQugfnWrXnyLAWzQ== X-Received: by 2002:adf:e2ca:: with SMTP id d10mr7689419wrj.65.1607599134318; Thu, 10 Dec 2020 03:18:54 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:53 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:27 +0100 Message-Id: <20201210111657.2276739-10-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/39] avcodec/msmpeg4dec: Don't initialize unused RL VLCs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" For the RLTables ff_rl_table[0..2] only the very first VLC is only ever used, so it makes no sense to create 32 of them. This saves 285200B from the .bss segment; this amount of memory is actually saved when this decoder is used. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4dec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index 49df06a9d7..882dd22dbd 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -317,9 +317,9 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) for(i=0;i X-Patchwork-Id: 24478 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 23AFF44AF7C for ; Thu, 10 Dec 2020 13:19:00 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1316F68A112; Thu, 10 Dec 2020 13:19:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3703A68A079 for ; Thu, 10 Dec 2020 13:18:56 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id r3so5079270wrt.2 for ; Thu, 10 Dec 2020 03:18:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=Q59EnCJtGsZFLfigNDS0flxNqx4KRW1KklRQ0aTMX4w=; b=uDSrD61D9e7EB9rT8s3Q5X5WwwkZzeKKeKtfxrrOXys0kMxsjbp8O1sBnMMLzZe4qy Ub4F0a7WyM9azAWqTspS1tPG9EO0NnxBr5mUd6U7iLKLerog5lJMpx+w/qAL4Q34MYgV Ptam1jOp/QnpcePUz7Mn67rG1/sv13V1mIuVd7j4XRa+m81zCEIaI4Pr83o8X2VZgz+Z tUkosbE9oBgB3UAs5prexmloWAbPHoajtheg2FR1buEmNwBigOp2GlTCoYXg/gCrDi9g oSrxIOhbxKXuS2SLMLfKWrR+n81ydbaS91zwDbm+k6lNVO6UpFMZprW4FYpRpcAV5JUM +8iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=Q59EnCJtGsZFLfigNDS0flxNqx4KRW1KklRQ0aTMX4w=; b=UNrCODMGxBuHBz4k/8zJaXGQzsUdeodk7MS5z1oxQavsHnNsUBL1OOiRitY8lweyNE deWyZmqU+WU02UEIWJXxcNGWBKLWQc/VO5uX7HuJM6cUxYD+jLs4P/WE2emJX6+dNyEn zy0nmnz6TjrBA+0yVvU+HxMvn4KpPYWlm+7H7QNxiGlKgolVrE8y2bz130Jp+c/6oBCa 8qCElAOfUJ4tKi1gkwEvXy6bSfoY/a45zByqY3H1TnhhLyOXEqvPGPlXDFUKNmNHjsvp D4wUfGtKSq6koB5XzZ9zwQUZMGAU5JSNFjCfZECIoM5DksS9G5/JaBcyCI/7OIW6sVQU lToQ== X-Gm-Message-State: AOAM533ge9MziIceuwUo3G6PO+CUNtRH+G4i1Jl0+rOuHjrHJhYFauBB UkUfYzg/3lTRHvOyJkyz3w7x6JB8c7j9Qw== X-Google-Smtp-Source: ABdhPJxEHf8RtUl4Fyb0JQT8+v3GjuvRmTt+DsTog1xqd1ssE48zPtQJQrjeObht6k8nvsnF5W056g== X-Received: by 2002:a5d:51cc:: with SMTP id n12mr1066335wrv.375.1607599135322; Thu, 10 Dec 2020 03:18:55 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:54 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:28 +0100 Message-Id: <20201210111657.2276739-11-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/39] avcodec/mpeg4videodec: Don't initialize unused RL VLCs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The RLTables whose VLC tables are only used for intra blocks only use the very first VLC table; yet all 32 have been initialized. This commit stops this by switching to INIT_FIRST_VLC_RL. This saves 201624B from the .bss segment; in case the decoder is actually used, this translates into less memory used. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg4videodec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index d85109c857..a6e29447b0 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -3389,9 +3389,9 @@ av_cold void ff_mpeg4videodec_static_init(void) { ff_rl_init(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]); ff_rl_init(&ff_rvlc_rl_inter, ff_mpeg4_static_rl_table_store[1]); ff_rl_init(&ff_rvlc_rl_intra, ff_mpeg4_static_rl_table_store[2]); - INIT_VLC_RL(ff_mpeg4_rl_intra, 554); + INIT_FIRST_VLC_RL(ff_mpeg4_rl_intra, 554); INIT_VLC_RL(ff_rvlc_rl_inter, 1072); - INIT_VLC_RL(ff_rvlc_rl_intra, 1072); + INIT_FIRST_VLC_RL(ff_rvlc_rl_intra, 1072); INIT_VLC_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */, &ff_mpeg4_DCtab_lum[0][1], 2, 1, &ff_mpeg4_DCtab_lum[0][0], 2, 1, 512); From patchwork Thu Dec 10 11:16:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24532 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:c00a:0:0:0:0:0 with SMTP id c10csp4931624ybf; Thu, 10 Dec 2020 03:20:32 -0800 (PST) X-Google-Smtp-Source: ABdhPJypVkm4lcs7EzvQll1L6dUh3aQvVch5sq2kKlHPLJt9uyjg+czR5Ro6oFE0SAUZJTuVcLpr X-Received: by 2002:adf:ab45:: with SMTP id r5mr7729256wrc.99.1607599232217; Thu, 10 Dec 2020 03:20:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607599232; cv=none; d=google.com; s=arc-20160816; b=uFIPtxNN8gcYNJq/+eREUmNOUEKSHjLGC1nggcnU6vrnBtwPaC1yV4ZmLY1VzNt5bT 4J7gCjOa3TjIXqc6gfFWs648M/B7FSSNJbdm27+8W7ZbULArr2gy/dX463heGrH+BWGu xRIbp+2HHUmFsBUu5uZRKLFKXV1sU28fpHMxOBbfu4oLadEsKxjI5potF5WQFP1XQrBt Rmn1TMlJPAStaCzAnF82o+ycrvDT7QJrGPhN49fMS4ym+s3mr4E14qBeU4rdIchYYgp0 y7b/WWTBHmZAzyDEr2eRijlvxgQIbbUFBWh//Nggt8n9E6ccuFKVnYbrv3G90DE+K7v6 ooYg== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=dH1gzxLJKlApHOslfR0BkVHiRTqkMbRAQgFFH/apeUs=; b=k8ygHkSmzCuGlNH1Eru/s6g0k8V64vAtBl/XL/UAPqS7XcGqBZ8YfInw/mxjbGn7oq F8zKpnUHDXAxkrXvzMry5g5K8Ea7RO39hodBmm8L5yxEM8jFxatYilnK+QEdhiSZUzYM iRBtWH42xUF2skkl9awMHNbKIzRav8j4s42Xn1T+uRLQxMWPE3FXwuoxAHPWhSreKh4l DZkqgV8/9TqEDbyzdCp7IcfJj2PjXfnoHawLWBwI0IUR1nLlUK54MrF+G4wv46rL4yrp 3q8HZFm2eFcAa9ytgjRpLzWYoLKSFZjuOWh1kjYGyvD8ttIkEv1RkCKzZVIvHpaU8A/F kZOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=A1tc5L5x; 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 y131si4096463wmg.124.2020.12.10.03.20.31; Thu, 10 Dec 2020 03:20:32 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=A1tc5L5x; 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 DFD3F68A32C; Thu, 10 Dec 2020 13:19:01 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1722B689CC6 for ; Thu, 10 Dec 2020 13:18:57 +0200 (EET) Received: by mail-wm1-f65.google.com with SMTP id w206so2571191wma.0 for ; Thu, 10 Dec 2020 03:18:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=2SvBYp5WiRszscEQt8KAv0YeXiM5aMumYHr4cpJK4N8=; b=A1tc5L5xid2qTzl7RseI+rU5/osFHjFfDeyn9bVXpf7YhLU4hrh8ZhIr78rpHq9MrD E/WyMEjpqqez1WTCo92Q94rDCuvafdTH2CwfEOUvusS0G8A99/LmoKbSZiDPGhD5Hxcl VQBOtdMhxZVw+UaU+HuDpubSa9R1Pn/lZM/dNZJZgw2mN866Fxcpp/12TglDrilbzF0a M/p5x0TPtsXtGlTQNPmIS5xmn3Cuf4jssm//Z+B2cm2tQvgi0+kEa+jJmN7d49lnRQBr p/RAP1jHI2SmRhJLdtE3bafP579RDmti3Wh9qiHNb0EZR0c06xHT51mk8ny0dua1Kcs3 jxXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=2SvBYp5WiRszscEQt8KAv0YeXiM5aMumYHr4cpJK4N8=; b=uC6neRjmUJ9vRHiEacr1WwD7AEWRElPsFmanvZG7Sv+mYVg+P7EWx6+VMv+NYOGPOV PuVOwg3PchuQ19vN8isEEYtRIj9ULkk+AnS2gNlmgZI4jelXlv6TbpQUQ4QUB+GxeAKA EaGppHPY8jbg+7CcOlnwKl3sQPuarRng23PFNNqBXUKf7jjc+CABA+SxgylZmdu4A++X LcPfZp7rpTUORfLydvDwipTV2BsYAt+ptqtuhKNTgw+MviOHArKuMt6z2cJgzX0rPPrO dSs+ucNyN/B0owfG+DuoL66rGGicLTazPMI4GBLIae8VojrViT4FOUhqdzn8qpvnetfK L7DQ== X-Gm-Message-State: AOAM533qURSYHvngNGoxD6tOjrM1KxUqhCNvzjuKXrlgOz1ZsuFFkoIL K6ZfICqaZ31hW3vsAzuK0Ja+T9TnJPnPkQ== X-Received: by 2002:a1c:40c:: with SMTP id 12mr7509815wme.40.1607599136314; Thu, 10 Dec 2020 03:18:56 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:55 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:29 +0100 Message-Id: <20201210111657.2276739-12-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/39] avcodec/ituh263dec: Don't initialize unused RL VLCs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: JXf0PAM1sG4J Content-Length: 1958 The ff_rl_intra_aic RLTable is only used by ituh263dec and ituh263enc; the former is the only user of its RL VLC tables. It uses only the very first one of these VLC tables, but up until now all 32 are initialized, wasting 68696B from the .bss segment (or that amount of memory if this decoder has actually been used). This commit changes this. Signed-off-by: Andreas Rheinhardt --- libavcodec/ituh263dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c index ced7fa52ee..7ddb33b795 100644 --- a/libavcodec/ituh263dec.c +++ b/libavcodec/ituh263dec.c @@ -125,7 +125,7 @@ av_cold void ff_h263_decode_init_vlc(void) ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]); ff_rl_init(&ff_rl_intra_aic, ff_h263_static_rl_table_store[1]); INIT_VLC_RL(ff_h263_rl_inter, 554); - INIT_VLC_RL(ff_rl_intra_aic, 554); + INIT_FIRST_VLC_RL(ff_rl_intra_aic, 554); INIT_VLC_STATIC(&h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, &ff_h263_mbtype_b_tab[0][1], 2, 1, &ff_h263_mbtype_b_tab[0][0], 2, 1, 80); From patchwork Thu Dec 10 11:16:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24480 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A281944AF7C for ; Thu, 10 Dec 2020 13:19:03 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 884D568A1B9; Thu, 10 Dec 2020 13:19:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 10AAF68A0F1 for ; Thu, 10 Dec 2020 13:18:58 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id m5so5060423wrx.9 for ; Thu, 10 Dec 2020 03:18:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=RRWZDu0VtsN4c3cDT2Dt06XQGuuWG/HGdpwtTLrQlCM=; b=WBuPafolkrO8VVzvd5kVnN3SokZ6zABXMZGAuEh7HuLt65RJF3J2cMrZII9KT8kXmr el+jQWFz3S+UoHnEBWMYgUYHa6Gnl3KysLaYqLbWMLAv+QthdjyJXEpKMKMwPe5N4MVD hDXyuT+MDrJN5toDz+OOavuacrDqqFquCtW3LHGemnz4heexIOy4bJMms2BqOYkXjwJB gbNvM49ifYXcGuMim9VAv9ALrwRPu85AIrqOWAyj5TuWAwDmDbz1VdWxc4Iwe4VIfnvJ YVGCH0V4EpC7HGdopaLowztbCnNBuXlXPCNQXPtWt3w9ecW4UXqsuGRsZtiD2od4wTRu y+yQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=RRWZDu0VtsN4c3cDT2Dt06XQGuuWG/HGdpwtTLrQlCM=; b=fNOLbe/8fuExc9IWMUDi21WpPk6v6m8/WK+4DebRDIHRr6CBa17tHlw1ryoD5BgAww UUSWBbM9No1YA8nvnYEUk8+nQ2uWajXTTKruNxJVsTApTfU1Q6JkKipBxLKbpEVu/fbL eoTg3phz9fo2A/ZcGBHEGYAkcRYkHDn2pMeAIoL/pnHy/RJxXkk2Yu7W+2SSsZlK4Rw/ UuRnsWPl+3VDqM1mXpooH/oKZ6RMRFnn0vEjia1CuvMfxNTsPJxcpwb0SstCU5xmcIML DWSJq0PYqf0lR1EGd12sDhuzwj9XJMP0VdbpHDS+KH1on2BlDakw9UOkaVp9Xgx6OQlP ed7Q== X-Gm-Message-State: AOAM531dFcEiCWTVgcdxjX2Oatoy/O/+Fh50b5rq4TOo20fSErv4MMyM EMn6gGLcD589Lv5mLXTHISxSdbG3w/lIBw== X-Google-Smtp-Source: ABdhPJybwvfSXNI6E+bEIEglFBkZy6d0QX2wJpPY0NyQtjFFRzUVAAK4UzrERSy9KrxKbCUTr1QJHQ== X-Received: by 2002:adf:82c5:: with SMTP id 63mr7744082wrc.38.1607599137377; Thu, 10 Dec 2020 03:18:57 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:56 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:30 +0100 Message-Id: <20201210111657.2276739-13-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/39] avcodec/msmpeg4dec: Reuse identical RL VLCs X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Some of the RLTables used by msmpeg4dec actually coincide with other RLTables: ff_rl_table[5] coincides with ff_h263_rl_inter (and ff_rl_table[2] with ff_mpeg4_rl_intra). Given that ff_h263_rl_inter is always initialized before msmpeg4dec's RLTables are initialized, one can just reuse the VLC tables by copying the pointers; after all, there are no ownership issues for static data. This saves 70912B from the .bss segment, translating into actual memory savings when this decoder is actually used. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4dec.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index 882dd22dbd..06e9707b65 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -322,7 +322,10 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) INIT_FIRST_VLC_RL(ff_rl_table[2], 554); INIT_VLC_RL(ff_rl_table[3], 940); INIT_VLC_RL(ff_rl_table[4], 962); - INIT_VLC_RL(ff_rl_table[5], 554); + /* ff_rl_table[5] coincides with ff_h263_rl_inter which has just been + * initialized in ff_h263_decode_init() above. So just copy the VLCs. */ + av_assert1(ff_h263_rl_inter.rl_vlc[0]); + memcpy(ff_rl_table[5].rl_vlc, ff_h263_rl_inter.rl_vlc, sizeof(ff_rl_table[5].rl_vlc)); mv = &ff_mv_tables[0]; INIT_VLC_STATIC(&mv->vlc, MV_VLC_BITS, mv->n + 1, From patchwork Thu Dec 10 11:16:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24511 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 5161644B4AD for ; Thu, 10 Dec 2020 13:42:18 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DD0B68A17B; Thu, 10 Dec 2020 13:42:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f68.google.com (mail-lf1-f68.google.com [209.85.167.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8DCB6881E4 for ; Thu, 10 Dec 2020 13:42:11 +0200 (EET) Received: by mail-lf1-f68.google.com with SMTP id w13so7737471lfd.5 for ; Thu, 10 Dec 2020 03:42:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=TMQdHLXTfi+St5Z+HFvAOdwWThpLOSRbyGEikJCbtiE=; b=Z8wCl3br7yC2t3byVPzkI8qC1812VAFAeOUMzxK3bpwzfOgf7+QeN87NLsLUN+8Aaz DYE3IzQ1e+wacMqe138g+sEn6f+4w/YadgcLZyD6kkJHakGDFYSJM42zFnJaPsh4zDbg O77einUoLjiqh96qnn/F46/tyFlFjFI2GH88rQrLRX/SCTZo8PG9OEcrY5qVcvLfDZv8 G5Zar0gvXrTsTa+qNev5vHVz1t7ofelESGgNQ+Vlr+BKF8Wh50KRx68JpUov2JXuN5qz UWerk/FGwalqFZe1fKYYX4MAar0iq+c0UYSoDZg1+AOAWUNYn77ehroc8fjUN9PY/IIk FULQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=TMQdHLXTfi+St5Z+HFvAOdwWThpLOSRbyGEikJCbtiE=; b=GmdiaSNwF2mc3WkWlI2ZuAM1nZrwm9SOuopWiaAt2NN+JTpacq5Wc2FraOkWLWK9tv KEfKP0org88Qr8qG2Lr0/9a/fccXaM8UdOaak7jis9jDfvmhpz90MOPfjn3vPVO9W1lC LgRsrt/wGArj3dXeVkOXFy6rYIlxrLeu3rWMcD6ng2qpkn61tHd0YrZjtI0BgWW9AElD jbhoNVo9pIVKWftJBHhXlUmRc4Elf1vOzV4jOf55pHHDfqSbQ5+9j6Yh5EKyWGo3VDiH jOU6ElPQID4bdzgQC+UX20zHd7ZQefeiVSmhpbZ7U6Rc0ANO6pFX1fiCUJXqGy+6IARD BbdQ== X-Gm-Message-State: AOAM531jvZpyZL6uYefO24OsskcEoZQd638eMoAonq79siZMMWxekOpW 6SGKdWzyOEUf+lLo28hP0YOCpfKHFMwBuw== X-Google-Smtp-Source: ABdhPJyPwsmwscNdWfeuvw0MDq01QcoTPrXwDyUQj9zgs88rnHCX6Ft+Ac1LZN5btpr+y9LZBbeXYA== X-Received: by 2002:adf:ec0d:: with SMTP id x13mr7708621wrn.207.1607599138746; Thu, 10 Dec 2020 03:18:58 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:58 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:31 +0100 Message-Id: <20201210111657.2276739-14-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/39] avcodec/msmpeg4dec: Reuse identical MV VLC X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" msmpeg4dec and ituh263dec both create VLCs with identical parameters out of ff_mvtab. Given that ff_msmpeg4_decode_init() always (indirectly) calls ff_h263_decode_init_vlc(), the VLC initialized by the latter can be directly used by msmpeg4dec. Doing so saves a bit more than 2KB from the .bss segment as well as the code to initialize a VLC. Signed-off-by: Andreas Rheinhardt --- libavcodec/h263.h | 2 ++ libavcodec/ituh263dec.c | 7 +++---- libavcodec/msmpeg4dec.c | 7 +------ 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/libavcodec/h263.h b/libavcodec/h263.h index f891f72379..998f7d0d59 100644 --- a/libavcodec/h263.h +++ b/libavcodec/h263.h @@ -34,6 +34,7 @@ // reading vlc values. Changing these may improve speed and data cache needs // be aware though that decreasing them may need the number of stages that is // passed to get_vlc* to be increased. +#define H263_MV_VLC_BITS 9 #define INTRA_MCBPC_VLC_BITS 6 #define INTER_MCBPC_VLC_BITS 7 #define CBPY_VLC_BITS 6 @@ -44,6 +45,7 @@ extern VLC ff_h263_intra_MCBPC_vlc; extern VLC ff_h263_inter_MCBPC_vlc; extern VLC ff_h263_cbpy_vlc; +extern VLC ff_h263_mv_vlc; extern const enum AVPixelFormat ff_h263_hwaccel_pixfmt_list_420[]; diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c index 7ddb33b795..eec86c81b1 100644 --- a/libavcodec/ituh263dec.c +++ b/libavcodec/ituh263dec.c @@ -51,7 +51,6 @@ // reading vlc values. Changing these may improve speed and data cache needs // be aware though that decreasing them may need the number of stages that is // passed to get_vlc* to be increased. -#define MV_VLC_BITS 9 #define H263_MBTYPE_B_VLC_BITS 6 #define CBPC_B_VLC_BITS 3 @@ -98,7 +97,7 @@ void ff_h263_show_pict_info(MpegEncContext *s){ VLC ff_h263_intra_MCBPC_vlc; VLC ff_h263_inter_MCBPC_vlc; VLC ff_h263_cbpy_vlc; -static VLC mv_vlc; +VLC ff_h263_mv_vlc; static VLC h263_mbtype_b_vlc; static VLC cbpc_b_vlc; @@ -119,7 +118,7 @@ av_cold void ff_h263_decode_init_vlc(void) INIT_VLC_STATIC(&ff_h263_cbpy_vlc, CBPY_VLC_BITS, 16, &ff_h263_cbpy_tab[0][1], 2, 1, &ff_h263_cbpy_tab[0][0], 2, 1, 64); - INIT_VLC_STATIC(&mv_vlc, MV_VLC_BITS, 33, + INIT_VLC_STATIC(&ff_h263_mv_vlc, H263_MV_VLC_BITS, 33, &ff_mvtab[0][1], 2, 1, &ff_mvtab[0][0], 2, 1, 538); ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]); @@ -270,7 +269,7 @@ int ff_h263_resync(MpegEncContext *s){ int ff_h263_decode_motion(MpegEncContext * s, int pred, int f_code) { int code, val, sign, shift; - code = get_vlc2(&s->gb, mv_vlc.table, MV_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_h263_mv_vlc.table, H263_MV_VLC_BITS, 2); if (code == 0) return pred; diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index 06e9707b65..d059e8eecc 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -38,7 +38,6 @@ #define V2_INTRA_CBPC_VLC_BITS 3 #define V2_MB_TYPE_VLC_BITS 7 #define MV_VLC_BITS 9 -#define V2_MV_VLC_BITS 9 #define TEX_VLC_BITS 9 #define DEFAULT_INTER_INDEX 3 @@ -66,7 +65,6 @@ static VLC v2_dc_lum_vlc; static VLC v2_dc_chroma_vlc; static VLC v2_intra_cbpc_vlc; static VLC v2_mb_type_vlc; -static VLC v2_mv_vlc; VLC ff_inter_intra_vlc; /* This is identical to H.263 except that its range is multiplied by 2. */ @@ -74,7 +72,7 @@ static int msmpeg4v2_decode_motion(MpegEncContext * s, int pred, int f_code) { int code, val, sign, shift; - code = get_vlc2(&s->gb, v2_mv_vlc.table, V2_MV_VLC_BITS, 2); + code = get_vlc2(&s->gb, ff_h263_mv_vlc.table, H263_MV_VLC_BITS, 2); ff_dlog(s, "MV code %d at %d %d pred: %d\n", code, s->mb_x,s->mb_y, pred); if (code < 0) return 0xffff; @@ -362,9 +360,6 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) INIT_VLC_STATIC(&v2_mb_type_vlc, V2_MB_TYPE_VLC_BITS, 8, &ff_v2_mb_type[0][1], 2, 1, &ff_v2_mb_type[0][0], 2, 1, 128); - INIT_VLC_STATIC(&v2_mv_vlc, V2_MV_VLC_BITS, 33, - &ff_mvtab[0][1], 2, 1, - &ff_mvtab[0][0], 2, 1, 538); INIT_VLC_STATIC(&ff_mb_non_intra_vlc[0], MB_NON_INTRA_VLC_BITS, 128, &ff_wmv2_inter_table[0][0][1], 8, 4, From patchwork Thu Dec 10 11:16:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24507 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D3BA944AFC6 for ; Thu, 10 Dec 2020 13:25:14 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B664E68A76A; Thu, 10 Dec 2020 13:25:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6D69668A43D for ; Thu, 10 Dec 2020 13:25:13 +0200 (EET) Received: by mail-lj1-f194.google.com with SMTP id b10so3940548ljp.6 for ; Thu, 10 Dec 2020 03:25:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=Qzt6RQe+TWeZKZirutOs8Ip5v3UDyGJh2dC2ayWdWEA=; b=EhFQWqrotXT7YOo+wDi4M9s+U1Us2gwSqXx3kLsHzYK1mbMjCNyesiB3UaUfLRYpVF NFXiHdADhN4zG/K+Z13asBPuUxTqzZvazq859So9AbmTKvoasMHvQMk8Q+ijqNwsL2ZT wsWAm5F99xNWD4Oh5gIrLVTDhM/pzSFrvGChHIaEyT7BCjjSX97907h4fcTlCK1g+qAB w38Kwqq12DwkbFX+KTxAR3d+ckMEraV5t6/V+NeY2jI6B5SXSr88WhS6T1Ae0VBHV0Kt DiEUlHRvq3rZ2a6M7Tl3V6uVhbknX3Te8aqBTkU9K+ygpjgrLTdZ84UEsygSTUGp86tp Uyyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=Qzt6RQe+TWeZKZirutOs8Ip5v3UDyGJh2dC2ayWdWEA=; b=KV1HSNSsBVFrmu1KeM1xhK2HlT9ho+pQwSD8pc6d5ejmkkoCmdT0IN3WwEsYFZ/GW/ H7mHS0J49gstpspmRxs+cVy9msT4KEsi16xaQDSmpaDUzjQ1VOANizODty+vZIq6TFEr bUnKYsYLcCbPBkQwvKDExSa+m1tvnqlmzVO5jPMdHR/EfT7enG8mgWyIUsGTk3UBqS70 Bjh2q8NqAWGmJT7PSlw1ezHLMEw1HEcs1DhZ3/hikrfR6Hk64I5EFVbZeY9cWNANY/AO zmHXLH+laVC+o2qGYHnpcQ85aqe6u6B8+soPbJdFmgDrEh0OhUgtNQYLVSn+YEsY+G5+ GndQ== X-Gm-Message-State: AOAM532kfhBCgS1wM+PApN0VaRDflJbIsI091wPQ5tH8OuqAn9MjiFBP 77UtC3mRQOMMZNo3Pk5NddFHvva3+2PQ7Q== X-Google-Smtp-Source: ABdhPJysFqsw3nQpuD2b1MqtejzyMIxATNfD8o1cmszRUs58GDQ3vj78R7gmu41ey2Ay/JtkwZFb8w== X-Received: by 2002:a5d:5147:: with SMTP id u7mr7825245wrt.114.1607599139714; Thu, 10 Dec 2020 03:18:59 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:18:59 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:32 +0100 Message-Id: <20201210111657.2276739-15-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 14/39] avcodec/h261dec: Don't use too big max_depth in get_vlc2() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index dfa779b574..374d17dfba 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -431,7 +431,7 @@ static int h261_decode_mb(H261Context *h) // Read cbp if (HAS_CBP(h->mtype)) - cbp = get_vlc2(&s->gb, h261_cbp_vlc.table, H261_CBP_VLC_BITS, 2) + 1; + cbp = get_vlc2(&s->gb, h261_cbp_vlc.table, H261_CBP_VLC_BITS, 1) + 1; if (s->mb_intra) { s->current_picture.mb_type[xy] = MB_TYPE_INTRA; From patchwork Thu Dec 10 11:16:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24482 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 95E1A44AF7C for ; Thu, 10 Dec 2020 13:19:05 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7E16168A4BE; Thu, 10 Dec 2020 13:19:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D1F868A0C3 for ; Thu, 10 Dec 2020 13:19:01 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id r14so5068959wrn.0 for ; Thu, 10 Dec 2020 03:19:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=ZmHQRmRhGGNW1dq9UpnIRYlY2q3+jxpMwXIGz8GxMyk=; b=Wp0rvb7PC8QS95a5k9nkBLf8l03NEYg92anZc7IMEBX6LyQIrnYS/mi2Zd3I7GEAsX nOJ12FriOGI2pXHwzor6nG6uSpMAw6CNgkoc3mJa8VvSLx3YsLUGQLYbvlE3i5OLgJYg 0IYNpnyQ2TedAn+ygxs7Ltd9t0+1Atu2QRdPYc3fYM9Ra8WRwRxWy/z7aWdEGOn3LFVE FDp/mT1ul+wo2CRTCtBLqvuyelUtrqA4mmgvaU2OQJfzz+HWl8FrpqMbMxEJ9vGL98Bi R8higeIac3jXucA46xENf+sJ+18AFwe7BdMvuP7dsZ60ZJNUj2bfAjddUuuuIaQnazOV 5aKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=ZmHQRmRhGGNW1dq9UpnIRYlY2q3+jxpMwXIGz8GxMyk=; b=gk7Zr59VpvqniyCBOkxLI2fRk/JvQSdmzpqZx/RWeVwdFwuLwAx7LQ7vmgHoMGfCQL cBmDRLL/3oshn4k7Hi62vmTJIcvko0bABSu4xRoNvA7Vjs8BFYWs/w6wArZsMStEMqoR Xtkzj50M7JgSbLvdC0YagA6tAzjZx+xSKARZCKjqYawMs91MdKqLYhsuZTOSTkuFnItE HPzkbg2bhQs09c3mdR7j8GLdMOTfesV5PMUqcQejefBvyhYE6gtBE19NtZPoxTglUi2m fGuKpCWqf/MOA0h2B36LAraMMgakTIhPfX7h1oLWsIxPJRl2m1dutdYjTBGSvNKKHAjU DIhQ== X-Gm-Message-State: AOAM531ZsCOMM1wLP/+iZGv7jmRj61vTCQaMiidz3nTGr2GNV6woF2KG byfw12qK5CmhtPUEjL3lJ65smCCNLfrVKQ== X-Google-Smtp-Source: ABdhPJxHKR/OrZWOlC6JzPJ1/bRQBNPUHSJzDEu/DNNlyoxSL4JWt1vLBDEieuBhFdZkDFNjvNMEew== X-Received: by 2002:a5d:5044:: with SMTP id h4mr7731262wrt.149.1607599140903; Thu, 10 Dec 2020 03:19:00 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.18.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:00 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:33 +0100 Message-Id: <20201210111657.2276739-16-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 15/39] avcodec/mpegvideo: Merge ff_mpv_decode_defaults into ff_mpv_decode_init X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" These two are always called directly after each other (with the exception of the calls in mpeg_decode_init() where some irrelevant modifications of the avctx (which could just as well be done before ff_mpv_decode_defaults(), because it doesn't have a pointer to the AVCodecContext at all and therefore can't see these modifications at all) are performed in between), so merge ff_mpv_decode() in ff_mpv_decode_init(). Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 1 - libavcodec/h263dec.c | 1 - libavcodec/mpeg12dec.c | 3 --- libavcodec/mpegvideo.c | 7 ++----- libavcodec/mpegvideo.h | 1 - libavcodec/rv10.c | 1 - libavcodec/rv34.c | 1 - 7 files changed, 2 insertions(+), 13 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 374d17dfba..2dc2fb30f2 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -75,7 +75,6 @@ static av_cold int h261_decode_init(AVCodecContext *avctx) MpegEncContext *const s = &h->s; // set defaults - ff_mpv_decode_defaults(s); ff_mpv_decode_init(s, avctx); s->out_format = FMT_H261; diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 32e26a57de..8b441b2951 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -73,7 +73,6 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx) s->out_format = FMT_H263; // set defaults - ff_mpv_decode_defaults(s); ff_mpv_decode_init(s, avctx); s->quant_precision = 5; diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 7d797c259a..123ede4704 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1050,8 +1050,6 @@ static av_cold int mpeg_decode_init(AVCodecContext *avctx) Mpeg1Context *s = avctx->priv_data; MpegEncContext *s2 = &s->mpeg_enc_ctx; - ff_mpv_decode_defaults(s2); - if ( avctx->codec_tag != AV_RL32("VCR2") && avctx->codec_tag != AV_RL32("BW10")) avctx->coded_width = avctx->coded_height = 0; // do not trust dimensions from input @@ -3099,7 +3097,6 @@ static av_cold int ipu_decode_init(AVCodecContext *avctx) avctx->pix_fmt = AV_PIX_FMT_YUV420P; - ff_mpv_decode_defaults(m); ff_mpv_decode_init(m, avctx); s->m.avctx = avctx; ff_mpv_idct_init(m); diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index c28d1adef7..f92792ae98 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -660,17 +660,14 @@ void ff_mpv_common_defaults(MpegEncContext *s) } /** - * Set the given MpegEncContext to defaults for decoding. + * Initialize the given MpegEncContext for decoding. * the changed fields will not depend upon * the prior state of the MpegEncContext. */ -void ff_mpv_decode_defaults(MpegEncContext *s) +void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx) { ff_mpv_common_defaults(s); -} -void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx) -{ s->avctx = avctx; s->width = avctx->coded_width; s->height = avctx->coded_height; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 974c71b6bd..aa84449c2d 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -694,7 +694,6 @@ void ff_mpv_common_init_mips(MpegEncContext *s); int ff_mpv_common_frame_size_change(MpegEncContext *s); void ff_mpv_common_end(MpegEncContext *s); -void ff_mpv_decode_defaults(MpegEncContext *s); void ff_mpv_decode_init(MpegEncContext *s, AVCodecContext *avctx); void ff_mpv_reconstruct_mb(MpegEncContext *s, int16_t block[12][64]); void ff_mpv_report_decode_progress(MpegEncContext *s); diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index d118515c3b..d5c7480611 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -374,7 +374,6 @@ static av_cold int rv10_decode_init(AVCodecContext *avctx) avctx->coded_height, 0, avctx)) < 0) return ret; - ff_mpv_decode_defaults(s); ff_mpv_decode_init(s, avctx); s->out_format = FMT_H263; diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c index 13f9b609e2..f8cc837985 100644 --- a/libavcodec/rv34.c +++ b/libavcodec/rv34.c @@ -1487,7 +1487,6 @@ av_cold int ff_rv34_decode_init(AVCodecContext *avctx) MpegEncContext *s = &r->s; int ret; - ff_mpv_decode_defaults(s); ff_mpv_decode_init(s, avctx); s->out_format = FMT_H263; From patchwork Thu Dec 10 11:16:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24487 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 10F0244BA99 for ; Thu, 10 Dec 2020 13:21:30 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4392568A43D; Thu, 10 Dec 2020 13:19:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B04D568A3BD for ; Thu, 10 Dec 2020 13:19:02 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id x22so4293928wmc.5 for ; Thu, 10 Dec 2020 03:19:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=iUvNfMHPdYAF1GfVaTgAr4MuR2czy95eAVcZj5L6HkE=; b=SfkcJEH0tKSNEZ/X4g1g6W+s71mLcDpcOldipl87JwOLF+RfFNq9kowJgXOSaGowna MOEOkgT1QFm0kK5p0Rd240VcKO94RWgTA1PnQ4DVSwXov61XY5L+B56nHPwN/l1gEUKi CBNgU/7gOibBZ4NGZA8Qi6hDuxnh5H6MBZ1G0ip+hBTEixxd8ftUQpclEXvsDs4ABCnF Gi+YFfNZunT6kAVspaSIFGDcJjzrYVip7lLPXKh0FDq0MoIP//lnsghlfWBTVUn53xYf mLhINhnD5h1uY6jTcUHze5Es4uGJdn79yvT5j4d0uMlCQD0fISPfqe9EbH4OWQ+W+sY2 N2ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=iUvNfMHPdYAF1GfVaTgAr4MuR2czy95eAVcZj5L6HkE=; b=gV0ljTkpSYi1NG9XdcUxgXRSeYvRfgp8GmOtgIzE9PApzK55L7ZIPTW4s3MaNharc6 82wPHFokV+uNjMsEbUzgLNfktDYCL1M2q/U13mGk1BmBNZC0/c0TVHT/gbuV4FB++Hui QmPL5YM5UcbNjLv4W20qW5OMkO3b7/dI5UETMUAoOocX2AsU5r/FvHmXAtcp1RDOD5EM /dzKKLRcrSZq0ISNmS/ucXPOXdfnqkOKK98mXRxRiE/hlFsyxuPXv+sAbdr/u24BSYok uFkr5xT7e1Ii4pxoc/zZnc28/Bd9Z7Vs0J0U1UGZCJjSCg1MWvJ93ff7rKc+D0aechG4 Pb7A== X-Gm-Message-State: AOAM530b3h/R/yzdtPgPOoueGMsTM6otcNcMSQIQVm5F06D9BjnSK2rN KgaH7uwjl7BLW3q6xHLhrGMTwquiAp2vhg== X-Google-Smtp-Source: ABdhPJyS9EHYwy+ab5Cr2kJZ8YsLlmoEdgFexG7VbZKeGwNlhGsNv7ecBnbeJk2DHt72n9WXTplb2Q== X-Received: by 2002:a1c:1c1:: with SMTP id 184mr7533784wmb.112.1607599141983; Thu, 10 Dec 2020 03:19:01 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:01 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:34 +0100 Message-Id: <20201210111657.2276739-17-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 16/39] avcodec/mpeg12dec: Remove redundant writes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" ff_mpv_decode_init() already sets MpegEncContext.avctx. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12dec.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 123ede4704..a7980eeda7 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -1055,8 +1055,6 @@ static av_cold int mpeg_decode_init(AVCodecContext *avctx) avctx->coded_width = avctx->coded_height = 0; // do not trust dimensions from input ff_mpv_decode_init(s2, avctx); - s->mpeg_enc_ctx.avctx = avctx; - /* we need some permutation to store matrices, * until the decoder sets the real permutation. */ ff_mpv_idct_init(s2); @@ -3098,7 +3096,6 @@ static av_cold int ipu_decode_init(AVCodecContext *avctx) avctx->pix_fmt = AV_PIX_FMT_YUV420P; ff_mpv_decode_init(m, avctx); - s->m.avctx = avctx; ff_mpv_idct_init(m); ff_mpeg12_common_init(m); ff_mpeg12_init_vlcs(); From patchwork Thu Dec 10 11:16:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24488 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3AC4844BA99 for ; Thu, 10 Dec 2020 13:21:41 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 064D668A56E; Thu, 10 Dec 2020 13:19:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A462668A3BA for ; Thu, 10 Dec 2020 13:19:03 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id a12so5060704wrv.8 for ; Thu, 10 Dec 2020 03:19:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=vGN92JlRtUyxWOLH9PfFpAg6J3aVHJs6pgkMWbkPpEA=; b=qVw+GdoK5DrVcPaP4WiQyw6ZZBTdfewpYVudkC25SNOnOl3vNhxwbr+z3Fz1W4192/ aKrHJCxZVBWfwPJFdpEW+cfXcHFqDXddPuY9cUL6y7MwnEwb6ORuIUgcyTg7lkT07xo6 PSrX/WR8S8WSuZnlCP3J3F3H84uT2JjqtlnhH384EjI7Cr9wm9WmEbkiJAIhMBppII9z cxi4fXuGPzUqy0JLg2+9zJKzTt2qgyQUzPJk/CyXlFrb0zNG72icejDScvXmmJyij5eo YVbrsE17xUo9qO+4aQDJ5yetZqMUggI0W30Re9VdL7xtucEZgwRUOyDukwXGJGD1yx8W rZwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=vGN92JlRtUyxWOLH9PfFpAg6J3aVHJs6pgkMWbkPpEA=; b=CuiZd10j6Pig7+Nk5/Kb8LUbW1fpk2UI8zR+153YnNfy2/U16d8o5Elny93NGdVzud IgRl+dxUR2UVHZhOoyha7ZQPH7f5U8izmaVX3xIMrZVXUB76JzKUMcY9WmThSBeYjzQL 5ZDQmi+dDhOTJkKO9JTCSVkgZS+fK2rYPDP3iq7zbAFpeY/qrVY9oJLRFQtgSM15m3tz Cib7a0vkZYUQkwBc18/HPrSs1k92zAUuM5j2Uog3OQO9FANTBOYWnude7xlYKmcpM2Sw sOtMxNlXuZntUl3lIeRVJVEG5JSOYIRu5QYy6rdigf5eXr94rRG7xBaRRkIMPL0Qwqi3 B9Rw== X-Gm-Message-State: AOAM533rzMRCr8gM11baDC9+g9ii9BaAevoRpAecJtKuPsKUZ50zinCL 0F1mp3hFL/mOU0SQ+ddBmVNRgMQJdaODig== X-Google-Smtp-Source: ABdhPJzCoO9zNMTyVavjLbE4/jPbNGyIphi3I/jTX4+E/uksJ3g9if2PTWxpVppBqfn+6+dJ4LOpCw== X-Received: by 2002:adf:e2ca:: with SMTP id d10mr7690074wrj.65.1607599142944; Thu, 10 Dec 2020 03:19:02 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:02 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:35 +0100 Message-Id: <20201210111657.2276739-18-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 17/39] avcodec/me_cmp: Remove ff_check_alignment() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The usage of a static variable presents a potential for data races and means that this function can't be used in init functions of codecs with FF_CODEC_CAP_INIT_THREADSAFE (unless of course one presumes that everything is alright in which case the error is not triggered; but then the whole function is pointless...). This makes the Snow decoder init-threadsafe as it already claims. Notice that this function has been removed in 2014 by Libav in commit 9103185bd116930f90b847090e66a64fa9971ce2, because only some codepaths are checked this way and because it only affects legacy compilers. The latter is of course even more true today. Signed-off-by: Andreas Rheinhardt --- libavcodec/me_cmp.c | 23 ----------------------- libavcodec/me_cmp.h | 2 -- libavcodec/mpegvideo_enc.c | 6 ------ 3 files changed, 31 deletions(-) diff --git a/libavcodec/me_cmp.c b/libavcodec/me_cmp.c index ae248c52f8..34ecea9bb4 100644 --- a/libavcodec/me_cmp.c +++ b/libavcodec/me_cmp.c @@ -1011,31 +1011,8 @@ WRAPPER8_16_SQ(quant_psnr8x8_c, quant_psnr16_c) WRAPPER8_16_SQ(rd8x8_c, rd16_c) WRAPPER8_16_SQ(bit8x8_c, bit16_c) -int ff_check_alignment(void) -{ - static int did_fail = 0; - LOCAL_ALIGNED_16(int, aligned, [4]); - - if ((intptr_t)aligned & 15) { - if (!did_fail) { -#if HAVE_MMX || HAVE_ALTIVEC - av_log(NULL, AV_LOG_ERROR, - "Compiler did not align stack variables. Libavcodec has been miscompiled\n" - "and may be very slow or crash. This is not a bug in libavcodec,\n" - "but in the compiler. You may try recompiling using gcc >= 4.2.\n" - "Do not report crashes to FFmpeg developers.\n"); -#endif - did_fail=1; - } - return -1; - } - return 0; -} - av_cold void ff_me_cmp_init(MECmpContext *c, AVCodecContext *avctx) { - ff_check_alignment(); - c->sum_abs_dctelem = sum_abs_dctelem_c; /* TODO [0] 16 [1] 8 */ diff --git a/libavcodec/me_cmp.h b/libavcodec/me_cmp.h index 0a589e3c3d..e9b5161c9a 100644 --- a/libavcodec/me_cmp.h +++ b/libavcodec/me_cmp.h @@ -79,8 +79,6 @@ typedef struct MECmpContext { me_cmp_func median_sad[6]; } MECmpContext; -int ff_check_alignment(void); - void ff_me_cmp_init(MECmpContext *c, AVCodecContext *avctx); void ff_me_cmp_init_alpha(MECmpContext *c, AVCodecContext *avctx); void ff_me_cmp_init_arm(MECmpContext *c, AVCodecContext *avctx); diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 243d3ca632..4cefe05353 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -2785,8 +2785,6 @@ static int pre_estimate_motion_thread(AVCodecContext *c, void *arg){ static int estimate_motion_thread(AVCodecContext *c, void *arg){ MpegEncContext *s= *(void**)arg; - ff_check_alignment(); - s->me.dia_size= s->avctx->dia_size; s->first_slice_line=1; for(s->mb_y= s->start_mb_y; s->mb_y < s->end_mb_y; s->mb_y++) { @@ -2813,8 +2811,6 @@ static int mb_var_thread(AVCodecContext *c, void *arg){ MpegEncContext *s= *(void**)arg; int mb_x, mb_y; - ff_check_alignment(); - for(mb_y=s->start_mb_y; mb_y < s->end_mb_y; mb_y++) { for(mb_x=0; mb_x < s->mb_width; mb_x++) { int xx = mb_x * 16; @@ -2943,8 +2939,6 @@ static int encode_thread(AVCodecContext *c, void *arg){ uint8_t bit_buf_tex[2][MAX_MB_BYTES]; PutBitContext pb[2], pb2[2], tex_pb[2]; - ff_check_alignment(); - for(i=0; i<2; i++){ init_put_bits(&pb [i], bit_buf [i], MAX_MB_BYTES); init_put_bits(&pb2 [i], bit_buf2 [i], MAX_MB_BYTES); From patchwork Thu Dec 10 11:16:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24483 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 1499F44AF7C for ; Thu, 10 Dec 2020 13:19:09 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EB81E68A64D; Thu, 10 Dec 2020 13:19:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AF62D68A0D3 for ; Thu, 10 Dec 2020 13:19:04 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id l9so5042678wrt.13 for ; Thu, 10 Dec 2020 03:19:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=0RNefyFQ6HFFh1j60AlhJpCIlBWXGDfKjk421ogySCk=; b=ZAowZy0iNJvIAgILZMYtpnlqSZNPInR2E4oCmRw0TTCY0navYD/059+Ina6vGkGrRP DFsLRf4toyeN136YwZ/sWR3lVgvTH+oJij2YyBpZdCmDVYKbIjG0zDiI8CXaIqz7RVan SJBtU2ftWLzmmd7Ty8IZk3DneOQcUbF/IEXHelQgBNFeZSrrfs5Xvf3TZnMcTUtsytvQ lcay2qtxlz6L+4tT4/gd7jI+SyedKUr902ke5bWf+sLmWRwJlSu6C931rVUFRNTyON8t FTsfjoeL0BELRmXjv+3qF+ew6hkY/pCWQ9dTs5gwcVQ30DHfxLVBjlkdEYcFyU3Q1eZ8 nIYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=0RNefyFQ6HFFh1j60AlhJpCIlBWXGDfKjk421ogySCk=; b=L51mr+4gfkc0cYvA26HqtEHSkaAVHBRaF1qgNh483sFZx5Nsozdk6qaVghT4RkifJ7 3giYRX6mvsec56tgLiOvVd/qG2EbD8dNpyVVAWkYCv2GXgMnL/2USkvcK59hrEJvWQC8 xNE/xt/ECFQ3MgmgmC66kRRBh35EhCWgRQg2EMWt3jjdWZR8sLmDENalX2rEgGrACNlI GnAmFoUrypJOjp3anr95mxL8jXY22/BUGHp6KTpBwuqL2mYy64kNfAwMBuHWWBW/oZOv epte+kC9xTquo9lNLy8guZsnWFLlpHjMYhm+OqrA2OfZjPoSR9Bx8U5PofNCDoUsbmFs mbog== X-Gm-Message-State: AOAM533mwnreFAUBaEJ1PUWUkLeELmfaLIDTSxxmvVOtKlrzQ4zJQDF5 iYogip7DrCvccPaG0SCE+zi/dVjgZR3xXQ== X-Google-Smtp-Source: ABdhPJyfL/Fhd6wLFu8BhP10uvRv1btyqIfUbQlXsTpBRArfUrlFg97pDb52/C1/iWKZw0vF+QCTMg== X-Received: by 2002:a5d:510d:: with SMTP id s13mr7783510wrt.380.1607599143918; Thu, 10 Dec 2020 03:19:03 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:03 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:36 +0100 Message-Id: <20201210111657.2276739-19-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 18/39] avcodec/motion_est, mpegvideo: Make pointers to static storage const X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Modifying static storage must not happen because of multithreading (except initialization of course), so add const to the pointed-to type for pointers that point to static storage. Signed-off-by: Andreas Rheinhardt --- libavcodec/motion_est.c | 12 ++++++------ libavcodec/motion_est.h | 4 ++-- libavcodec/motion_est_template.c | 2 +- libavcodec/mpegvideo.h | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavcodec/motion_est.c b/libavcodec/motion_est.c index 02c75fd470..5a339fc1c7 100644 --- a/libavcodec/motion_est.c +++ b/libavcodec/motion_est.c @@ -578,7 +578,7 @@ static inline int h263_mv4_search(MpegEncContext *s, int mx, int my, int shift) int dmin_sum=0, mx4_sum=0, my4_sum=0, i; int same=1; const int stride= c->stride; - uint8_t *mv_penalty= c->current_mv_penalty; + const uint8_t *mv_penalty = c->current_mv_penalty; int safety_clipping= s->unrestricted_mv && (s->width&15) && (s->height&15); init_mv4_ref(c); @@ -743,7 +743,7 @@ static int interlaced_search(MpegEncContext *s, int ref_index, const int h=8; int block; int P[10][2]; - uint8_t * const mv_penalty= c->current_mv_penalty; + const uint8_t * const mv_penalty = c->current_mv_penalty; int same=1; const int stride= 2*s->linesize; int dmin_sum= 0; @@ -1120,7 +1120,7 @@ static int estimate_motion_b(MpegEncContext *s, int mb_x, int mb_y, const int shift= 1+s->quarter_sample; const int mot_stride = s->mb_stride; const int mot_xy = mb_y*mot_stride + mb_x; - uint8_t * const mv_penalty= c->mv_penalty[f_code] + MAX_DMV; + const uint8_t * const mv_penalty = c->mv_penalty[f_code] + MAX_DMV; int mv_scale; c->penalty_factor = get_penalty_factor(s->lambda, s->lambda2, c->avctx->me_cmp); @@ -1184,8 +1184,8 @@ static inline int check_bidir_mv(MpegEncContext * s, //FIXME better f_code prediction (max mv & distance) //FIXME pointers MotionEstContext * const c= &s->me; - uint8_t * const mv_penalty_f= c->mv_penalty[s->f_code] + MAX_DMV; // f_code of the prev frame - uint8_t * const mv_penalty_b= c->mv_penalty[s->b_code] + MAX_DMV; // f_code of the prev frame + const uint8_t * const mv_penalty_f = c->mv_penalty[s->f_code] + MAX_DMV; // f_code of the prev frame + const uint8_t * const mv_penalty_b = c->mv_penalty[s->b_code] + MAX_DMV; // f_code of the prev frame int stride= c->stride; uint8_t *dest_y = c->scratchpad; uint8_t *ptr; @@ -1600,7 +1600,7 @@ int ff_get_best_fcode(MpegEncContext * s, int16_t (*mv_table)[2], int type) if (s->motion_est != FF_ME_ZERO) { int score[8]; int i, y, range= s->avctx->me_range ? s->avctx->me_range : (INT_MAX/2); - uint8_t * fcode_tab= s->fcode_tab; + const uint8_t * fcode_tab = s->fcode_tab; int best_fcode=-1; int best_score=-10000000; diff --git a/libavcodec/motion_est.h b/libavcodec/motion_est.h index 817220f340..5742e51486 100644 --- a/libavcodec/motion_est.h +++ b/libavcodec/motion_est.h @@ -90,8 +90,8 @@ typedef struct MotionEstContext { op_pixels_func(*hpel_avg)[4]; qpel_mc_func(*qpel_put)[16]; qpel_mc_func(*qpel_avg)[16]; - uint8_t (*mv_penalty)[MAX_DMV * 2 + 1]; ///< bit amount needed to encode a MV - uint8_t *current_mv_penalty; + const uint8_t (*mv_penalty)[MAX_DMV * 2 + 1]; ///< bit amount needed to encode a MV + const uint8_t *current_mv_penalty; int (*sub_motion_search)(struct MpegEncContext *s, int *mx_ptr, int *my_ptr, int dmin, int src_index, int ref_index, diff --git a/libavcodec/motion_est_template.c b/libavcodec/motion_est_template.c index 13e73f2653..d3b2f97744 100644 --- a/libavcodec/motion_est_template.c +++ b/libavcodec/motion_est_template.c @@ -34,7 +34,7 @@ const int av_unused ymin= c->ymin;\ const int av_unused xmax= c->xmax;\ const int av_unused ymax= c->ymax;\ - uint8_t *mv_penalty= c->current_mv_penalty;\ + const uint8_t *mv_penalty = c->current_mv_penalty; \ const int pred_x= c->pred_x;\ const int pred_y= c->pred_y;\ diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index aa84449c2d..5f6e1da133 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -276,7 +276,7 @@ typedef struct MpegEncContext { int mv[2][4][2]; int field_select[2][2]; int last_mv[2][2][2]; ///< last MV, used for MV prediction in MPEG-1 & B-frame MPEG-4 - uint8_t *fcode_tab; ///< smallest fcode needed for each MV + const uint8_t *fcode_tab; ///< smallest fcode needed for each MV int16_t direct_scale_mv[2][64]; ///< precomputed to avoid divisions in ff_mpeg4_set_direct_mv MotionEstContext me; From patchwork Thu Dec 10 11:16:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24489 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 141B244BA99 for ; Thu, 10 Dec 2020 13:22:02 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 08D3B68A61A; Thu, 10 Dec 2020 13:19:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EEF2F68A552 for ; Thu, 10 Dec 2020 13:19:05 +0200 (EET) Received: by mail-wm1-f41.google.com with SMTP id 3so4897587wmg.4 for ; Thu, 10 Dec 2020 03:19:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=BllkKVWPrO/wYzIM+ZdSkTsXZaJiJjmoRUfSatorHs4=; b=MgYrOI5X36kstYMFukFpfv25N5+yf7fJDS1L0O1jsmD4tzvuaAsZZgeuaLa0plQUlN 2OCPFcFBbd7OTeLDrCdR+K6xURGgkmHJ+zuXIlgqoeXh66sjBX48WiHzK0B2k8bOrndb jCDyTBdT6ZwcI/F8Zeb6NMoUEciTc2GT+ZkG/EIjeqwpbEOJPdbLn+oEWvdtwTGuAqjO u4J5ezt3bfcD9XDSBZvvEWcSN/ZBkxwf8h3uhsdmy7dM+OwCp6qjOMUMMM+fijE6SEgX ECrzOvtvwT064bNSdUskNpY/oAfr4/SMNISPPAOSbMGIQPqfKgs2WjE4eJmMsZDTdipq b0mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=BllkKVWPrO/wYzIM+ZdSkTsXZaJiJjmoRUfSatorHs4=; b=aK3bB8TJYNSqtdYM91eUFF2LGEQg+WghFzftuxiFFdGXPoDLb47oShVc5+0hlbzgkH E4EDuGyH35i5QFHhVE1qhQp2EwdVsLlLLfrBGekbVL3vfix28FDtSfZmb+kSddxJWgC2 th2+fUIfDPhz068Ov98oafQFvp/4EHr81Ke/2hqOcn9zRFNJ3uAYkR8SkiHxd67BGHME tUM8O1u7w/VTE4Tl0BdPMKcE0vK9ipswAyoeMa4eedxL6cii2dBxWOqw2at7gFj/DKA4 Fe1kgNGrWT//jC6OSBVm/2mlIDu4efgEU7d0JXdiFAcbIuHsl+8BvZLWXUCuMcgCOUZx deAA== X-Gm-Message-State: AOAM532XtMXrV9dDDyqD6z3MBejXrlj4EBaIgiX6RE3ImmxG7Av/hxNW rF/0pFjez/hQwQ+5uWQx2zH3bQtannjPjg== X-Google-Smtp-Source: ABdhPJw5Ojmm9Ha9ZrR93R4ulBlzVejBxfThSX8/isjU67Hq0oySBYNbO6RLiYsX/+j23YcXRF4/AA== X-Received: by 2002:a7b:cf08:: with SMTP id l8mr7807325wmg.189.1607599144879; Thu, 10 Dec 2020 03:19:04 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:04 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:37 +0100 Message-Id: <20201210111657.2276739-20-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 19/39] avcodec/mpegvideo_enc: Make mpv_encode_defaults thread-safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is a prerequisite for making any encoder that uses ff_mpv_encode_init() init-threadsafe; it already makes the AMV, the MJPEG and the MPEG-1/2 encoders init-threadsafe. Signed-off-by: Andreas Rheinhardt --- libavcodec/mjpegenc.c | 4 ++-- libavcodec/mpeg12enc.c | 4 ++-- libavcodec/mpegvideo_enc.c | 15 +++++++++++---- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c index 56ccbc5fb1..466f48eba9 100644 --- a/libavcodec/mjpegenc.c +++ b/libavcodec/mjpegenc.c @@ -415,7 +415,7 @@ AVCodec ff_mjpeg_encoder = { .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, .capabilities = AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_NONE }, @@ -441,7 +441,7 @@ AVCodec ff_amv_encoder = { .init = ff_mpv_encode_init, .encode2 = amv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_NONE }, diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 5cbcb15630..e38cd074e1 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1195,7 +1195,7 @@ AVCodec ff_mpeg1video_encoder = { .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .priv_class = &mpeg1_class, }; @@ -1213,6 +1213,6 @@ AVCodec ff_mpeg2video_encoder = { AV_PIX_FMT_YUV422P, AV_PIX_FMT_NONE }, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .priv_class = &mpeg2_class, }; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 4cefe05353..061081db08 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -38,6 +38,7 @@ #include "libavutil/mathematics.h" #include "libavutil/pixdesc.h" #include "libavutil/opt.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "dct.h" #include "idctdsp.h" @@ -248,18 +249,24 @@ static void update_duplicate_context_after_me(MpegEncContext *dst, #undef COPY } +static void mpv_encode_init_static(void) +{ + for (int i = -16; i < 16; i++) + default_fcode_tab[i + MAX_MV] = 1; +} + /** * Set the given MpegEncContext to defaults for encoding. * the changed fields will not depend upon the prior state of the MpegEncContext. */ static void mpv_encode_defaults(MpegEncContext *s) { - int i; + static AVOnce init_static_once = AV_ONCE_INIT; + ff_mpv_common_defaults(s); - for (i = -16; i < 16; i++) { - default_fcode_tab[i + MAX_MV] = 1; - } + ff_thread_once(&init_static_once, mpv_encode_init_static); + s->me.mv_penalty = default_mv_penalty; s->fcode_tab = default_fcode_tab; From patchwork Thu Dec 10 11:16:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24490 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 180AD44BB21 for ; Thu, 10 Dec 2020 13:22:13 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D256768A6BD; Thu, 10 Dec 2020 13:19:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8163D68A56E for ; Thu, 10 Dec 2020 13:19:06 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id a6so4308820wmc.2 for ; Thu, 10 Dec 2020 03:19:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=9IpgT36gNGsKoIdVfsVTyQZzzYMe87sShExYpaRFZ14=; b=MfUH7T1ciyqHnc+XYoiihcoSlMLHtuGFXnzkNIgKN65AtFJ5tyx0u8ecZEkxOQp2C/ dFJRDCzoICop30cq8kW5KOlrVCS4ElPq2BCmdvGxDQ8xnc38XvPnMB4/LBNCR0F65lNw dcMzbpJEdAEIans75A5aKePtW1oJScHrd8RfnlvPtg4PYjKdQakBSYTtg4igDfaoZgM3 SpEycilsUTBCaQkdwbnEnKXhTWj1dSQGpOofOm91gksVXV5Gcizdw6ob7Fw9y0s7Q/iV G9xViSf1lvVaO7KCA07anX76daH1T/cp0o7R1wHxhkJHAJgB15oK3k/Q8VVPliLx4pha XlkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=9IpgT36gNGsKoIdVfsVTyQZzzYMe87sShExYpaRFZ14=; b=iT/5X6wpl8jzLRda599LPphgJzIzhIyBYsExdTdeyN2s5CmqrnJMiiGAXTTNmZr6yy 0eUAbVvmsu8GH1F4/Y/y4Kwx8SxVgkwpt3pVBMZiwEw30GRKPQes2GAzV8G/JFVnJY9M 5e6dljPJidFUEDSHgBItJhdbVQK17P9RWL4hGidRCPl/5+U2tVHKEoT0mffXt+zG+o/B KkHAukynXs41IxM1RECuGhDABv2EwNAF0BXUjHqkV4/5+VxTO+R4Ljvp6jx+xfOCzwla rwl7MPmFGEGneMGohKHy6sa/f4CGMJ5cvp7/GVc7ldQHWVatjakEJt7A8zBE5pzb5ufa V4JQ== X-Gm-Message-State: AOAM5326xihpXxHZ3FGS7HnaHaLoOZmCx7CkWXp3qSbmVmS1vBSYHbB3 R/0q6iq716Gf6xEtrU21g57ftO36OIEWuw== X-Google-Smtp-Source: ABdhPJyxsqVqBjs3s+XGJAg51j6R+8HsD+FJszAcPT1exI0ATys4DEXUj4zJNcRpAz3lKSx9V5N2KQ== X-Received: by 2002:a7b:ca47:: with SMTP id m7mr7528054wml.153.1607599145835; Thu, 10 Dec 2020 03:19:05 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:05 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:38 +0100 Message-Id: <20201210111657.2276739-21-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 20/39] avcodec/h261dec: Don't initialize unused part of RLTable X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The H.261 decoder only uses an RLTable's VLC table, yet it also initializes its index_run, max_level and max_run. This commit stops doing so; it will also simplify making this decoder init-threadsafe, as the H.261 decoder and encoder now initialize disjoint parts of their common RLTable. Signed-off-by: Andreas Rheinhardt --- The earlier patchset instead guarded ff_h261_common_init() by an AVOnce. libavcodec/h261dec.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 2dc2fb30f2..6b680a862d 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -81,7 +81,6 @@ static av_cold int h261_decode_init(AVCodecContext *avctx) s->low_delay = 1; avctx->pix_fmt = AV_PIX_FMT_YUV420P; - ff_h261_common_init(); h261_decode_init_vlc(h); h->gob_start_code_skipped = 0; From patchwork Thu Dec 10 11:16:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24484 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id CAB6D44AF7C for ; Thu, 10 Dec 2020 13:19:11 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B6DE968A6EB; Thu, 10 Dec 2020 13:19:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9BD2D68A5F4 for ; Thu, 10 Dec 2020 13:19:07 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id 3so4897675wmg.4 for ; Thu, 10 Dec 2020 03:19:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=SvjSkqnRvsGCZmtVoIla8bDrynhjXC6SG8pUcUOR5Lc=; b=rhTwzxSn+qfLb6mWgznNhqyygs5kVKkWJm7ukj/ymcfV1lbyHWWxSfBE9dP5e8h5s5 pk9fyCt/bkZPalP+lvs/rzIPBoqUV58i4xeoJ4J1zo2KD84nfScpmAE5J8S7b/LXUZxQ x5nC0VuEass2kaVLfwuiNjguzm3Bw8KOgfJ9jxkobC/BgElvG0fpwnpJBIB62yk2kFj3 qj6mU1nXzOIWlkjjNSG30c8T9gO8PgcauAQvnkx/6HfitcUgfWaxOiFyfYqmXwKKhL6e upjnJ4k0wlnK14oAujq76zZi2Hy/lheu2YL94gYQ7b0/NAS/v3aqxgZUvoXkCjoL7wpj vcxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=SvjSkqnRvsGCZmtVoIla8bDrynhjXC6SG8pUcUOR5Lc=; b=p5rHiH42opYg1SuIUKqNlpwU16HBjv6+mBXEwRPDI9rQi2E+JIqifYD3+0/Yto/zWs IVlld2HLokC+8w874AIXc5Li7CdDRgL6um7G18ykpbrgXrmJ4omQxYOXHrqLxzA/NKc1 ucIPpbFH8A5e606BayTnMyPeJQCVyB0ed3oiADi5M6yXLC1T+EAJcX2PeCFPr4bz73+l Q4EtBZIVOobMVgC30m7/apl63Eh2IbXupGq8S/Nh0LWmNq6CQyzhi9vbdlsU4qDDQMZ/ ryhTyowwLlK7Wx3hmi5Aho046dVJnx5v5sFQQeIBppV1bZEmlSuofr4d0uas3LsBFz5o QgsQ== X-Gm-Message-State: AOAM531zfkpvoHwyn44N+aG0RvBcYTQw/F4InyeviRHp8HqxRMoUCc1o ZhYWuBsRSTqbCk5HGHAJVTxal1uofSejXQ== X-Google-Smtp-Source: ABdhPJyaEyeIxypa3N66C/Q1PEYs7+LEj0GthATKFqN6m8zKgFS7M6Zgw0tgDjzGKCFAIPd7jP9nKg== X-Received: by 2002:a1c:2cc2:: with SMTP id s185mr7452069wms.111.1607599146903; Thu, 10 Dec 2020 03:19:06 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:06 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:39 +0100 Message-Id: <20201210111657.2276739-22-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 21/39] avcodec/h261dec: Make decoder init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 6b680a862d..61cd38caed 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -26,6 +26,7 @@ */ #include "libavutil/avassert.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "mpeg_er.h" #include "mpegutils.h" @@ -47,12 +48,8 @@ static VLC h261_mtype_vlc; static VLC h261_mv_vlc; static VLC h261_cbp_vlc; -static av_cold void h261_decode_init_vlc(H261Context *h) +static av_cold void h261_decode_init_static(void) { - static int done = 0; - - if (!done) { - done = 1; INIT_VLC_STATIC(&h261_mba_vlc, H261_MBA_VLC_BITS, 35, ff_h261_mba_bits, 1, 1, ff_h261_mba_code, 1, 1, 662); @@ -66,11 +63,11 @@ static av_cold void h261_decode_init_vlc(H261Context *h) &ff_h261_cbp_tab[0][1], 2, 1, &ff_h261_cbp_tab[0][0], 2, 1, 512); INIT_FIRST_VLC_RL(ff_h261_rl_tcoeff, 552); - } } static av_cold int h261_decode_init(AVCodecContext *avctx) { + static AVOnce init_static_once = AV_ONCE_INIT; H261Context *h = avctx->priv_data; MpegEncContext *const s = &h->s; @@ -81,10 +78,10 @@ static av_cold int h261_decode_init(AVCodecContext *avctx) s->low_delay = 1; avctx->pix_fmt = AV_PIX_FMT_YUV420P; - h261_decode_init_vlc(h); - h->gob_start_code_skipped = 0; + ff_thread_once(&init_static_once, h261_decode_init_static); + return 0; } @@ -684,6 +681,6 @@ AVCodec ff_h261_decoder = { .close = h261_decode_end, .decode = h261_decode_frame, .capabilities = AV_CODEC_CAP_DR1, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .max_lowres = 3, }; From patchwork Thu Dec 10 11:16:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24510 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D755944B4AD for ; Thu, 10 Dec 2020 13:42:04 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AF90468A0D1; Thu, 10 Dec 2020 13:42:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f194.google.com (mail-lj1-f194.google.com [209.85.208.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E55A76881E4 for ; Thu, 10 Dec 2020 13:41:57 +0200 (EET) Received: by mail-lj1-f194.google.com with SMTP id y16so6345860ljk.1 for ; Thu, 10 Dec 2020 03:41:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=jZ9uKUTGfGyJZF7rvv09wBtDEi9nZ7dW6sHNQWvdzao=; b=a+LhCMelLItbfnEXFyAj/sFWJiPD6RVjjIoVDx0ASru/ixFAAIjHI42uA5fmZ9aQpI c+fwTx5XVmY8nfH0T9kp80zAL65ZztwLz/4yJnJ4vpipmvqw//uw2GzB4BqBYJMm5A+u ottr+vxh8WYLqrCxjfuuI4mUAY75vY/jeKptQKtXBwERxABWsxe2Qk/6TgOkRpSaX3JZ jqtRm7/sYw9VgslRWXAnUm6vPXe+X8/2XCrWA2ExNAVnZai7xw4/ZSAc50jIGU4IyZ37 t6WWXd8PwNO1RJvneb5eYF94INXCIWyP3Br2X2y2OrBmLVaPoxsdHm/uByRzz9JvMoAh jXhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=jZ9uKUTGfGyJZF7rvv09wBtDEi9nZ7dW6sHNQWvdzao=; b=oBexyAoWl5GP/LYzm4T5R/EkFRsvUf1rkMOKpDgasDFc0UAMAnKBw4RImeGTvBIm9+ cOawpnm5fYH8Ez2NLFQ6LGpz9nkmdTJnSZNe51Cjn8WSitkDYO3OLLW4L7aPwDnsAf1D DvO+mm68Ctpc7q2kwwLcIgA8Gfe5URbm1GTThx3EQ97Iei0+4J8HSnPXYiExShWL5xQu gEwQtfFITXSljpRbU/vYbe7WUwXoIr7sX6URNi9t4LopddNmC7V1AmpA8J4UERiHDE2T cQLJGIU8FB7huWKH4+pXgyuRemd9/sIzn3kko4z02mrbrqY2jLYT6zwwgHJceYewtxuj 4egg== X-Gm-Message-State: AOAM531uWStoVCrfLdRK03SExkdhqlNpNjwJKilSx3Sa25aEEWiDypzQ NFS4g5nqqH8q3W4ToHona0p6uixag8ZYag== X-Google-Smtp-Source: ABdhPJxZ4h8OpKA9frPKFxhs8AVofiSlbng1mrFwJfWD5TWPhVF3Lu5gB6+jfpIjxJ/YL2q3J8cQgg== X-Received: by 2002:adf:ec0d:: with SMTP id x13mr7709366wrn.207.1607599148077; Thu, 10 Dec 2020 03:19:08 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:07 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:40 +0100 Message-Id: <20201210111657.2276739-23-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 22/39] avcodec/h261dec: Reindentation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 61cd38caed..817453f60c 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -50,19 +50,19 @@ static VLC h261_cbp_vlc; static av_cold void h261_decode_init_static(void) { - INIT_VLC_STATIC(&h261_mba_vlc, H261_MBA_VLC_BITS, 35, - ff_h261_mba_bits, 1, 1, - ff_h261_mba_code, 1, 1, 662); - INIT_VLC_STATIC(&h261_mtype_vlc, H261_MTYPE_VLC_BITS, 10, - ff_h261_mtype_bits, 1, 1, - ff_h261_mtype_code, 1, 1, 80); - INIT_VLC_STATIC(&h261_mv_vlc, H261_MV_VLC_BITS, 17, - &ff_h261_mv_tab[0][1], 2, 1, - &ff_h261_mv_tab[0][0], 2, 1, 144); - INIT_VLC_STATIC(&h261_cbp_vlc, H261_CBP_VLC_BITS, 63, - &ff_h261_cbp_tab[0][1], 2, 1, - &ff_h261_cbp_tab[0][0], 2, 1, 512); - INIT_FIRST_VLC_RL(ff_h261_rl_tcoeff, 552); + INIT_VLC_STATIC(&h261_mba_vlc, H261_MBA_VLC_BITS, 35, + ff_h261_mba_bits, 1, 1, + ff_h261_mba_code, 1, 1, 662); + INIT_VLC_STATIC(&h261_mtype_vlc, H261_MTYPE_VLC_BITS, 10, + ff_h261_mtype_bits, 1, 1, + ff_h261_mtype_code, 1, 1, 80); + INIT_VLC_STATIC(&h261_mv_vlc, H261_MV_VLC_BITS, 17, + &ff_h261_mv_tab[0][1], 2, 1, + &ff_h261_mv_tab[0][0], 2, 1, 144); + INIT_VLC_STATIC(&h261_cbp_vlc, H261_CBP_VLC_BITS, 63, + &ff_h261_cbp_tab[0][1], 2, 1, + &ff_h261_cbp_tab[0][0], 2, 1, 512); + INIT_FIRST_VLC_RL(ff_h261_rl_tcoeff, 552); } static av_cold int h261_decode_init(AVCodecContext *avctx) From patchwork Thu Dec 10 11:16:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24491 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 4422444BB21 for ; Thu, 10 Dec 2020 13:22:36 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC4A468A717; Thu, 10 Dec 2020 13:19:12 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 08FA768A68F for ; Thu, 10 Dec 2020 13:19:09 +0200 (EET) Received: by mail-wm1-f43.google.com with SMTP id d3so4305204wmb.4 for ; Thu, 10 Dec 2020 03:19:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=XOYDen63r/1bCcFhvc8C5TPQvgThDmIcdQqajCpjEBw=; b=AuW1W0NUxwddpH5YZMZWaMiCNKrWkJfR3Wk62O9cW8xsHDR3wyERYH3KrgiLwD3Ufp p7fwzdDeDDMO9IaYA4ji4+9OPtIexiZEK1lTVCOtLKktFTzPgN0X1fSRBSd2uUkViHpu WgS/w94M1w9ZhFMFffRDU0oB/dap5PPSOToYztgnXg1buY5xH6Lo/RAClb/jwGibDD34 0Tp/zoh4CMZwJLkbymBheJeLVaLQFu3GcmAx+IBX1lUOwcX8yCi0fyrcPOJBKtkDB5d7 cU2dpwrV8ddg3KvXlJq58kC4KL6vyn0ke8YNt7+tMU0TOK0ApRmyHAxlEjWvJsUc0iJV tG2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=XOYDen63r/1bCcFhvc8C5TPQvgThDmIcdQqajCpjEBw=; b=HJ3K+02VzKvLhu8n+S3rxcCw3Z0iBz3fAajYv7S6sZrd2zCo/Ti1UeNYx552EUBOJU DELoyXQyPqxJU3esJF4H1lz+dBI5CuMtd5cAEqUH7YuNIxLe5qSDUezmmbUnFs0UWa1G 3wuqQZzshuEcp3addrW+KZI6LdsGA+GMxKev37AyK0LOI8o1RoFUeoU9yETVqyoJRF8a JqByI1EYNeQs8sAodVdAdleCUXaWsXiP/cJVK1NO/enrg506GT4lA7hr5MEQ9zQCHlHY pXR0Q3L73nPTUcgMaP6tO2rOXkr7E26qNP60xf0UpEDDZc9hy36iBC3H324UdNKZIeLc Qn9A== X-Gm-Message-State: AOAM533A/D4EUoWTrrAtnqs+iajVPHufO9GMI+BVE8+ZESMmOa1lEbr6 Bmihas83w3XdWTUfE23X3jbgYHKo3wZl1g== X-Google-Smtp-Source: ABdhPJxgJ8vaAxg0qeFjS9G2Sb6/mWUC1DGcMEM9IV6ZmdC2jysd4REnm9RkY6sOfETOr5tBvtQa8A== X-Received: by 2002:a1c:e907:: with SMTP id q7mr7606133wmc.161.1607599149000; Thu, 10 Dec 2020 03:19:09 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:08 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:41 +0100 Message-Id: <20201210111657.2276739-24-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 23/39] avcodec/h261enc: Make encoder init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This is easy now that the H.261 encoder is the only user that initializes the non-VLC parts of ff_h261_rl_tcoeff. Signed-off-by: Andreas Rheinhardt --- libavcodec/h261.c | 13 ------------- libavcodec/h261.h | 3 --- libavcodec/h261enc.c | 16 ++++++++++++---- 3 files changed, 12 insertions(+), 20 deletions(-) diff --git a/libavcodec/h261.c b/libavcodec/h261.c index 47bad4e57f..01abfadcda 100644 --- a/libavcodec/h261.c +++ b/libavcodec/h261.c @@ -30,8 +30,6 @@ #define IS_FIL(a) ((a) & MB_TYPE_H261_FIL) -uint8_t ff_h261_rl_table_store[2][2 * MAX_RUN + MAX_LEVEL + 3]; - static void h261_loop_filter(uint8_t *src, int stride) { int x, y, xy, yz; @@ -79,14 +77,3 @@ void ff_h261_loop_filter(MpegEncContext *s) h261_loop_filter(dest_cb, uvlinesize); h261_loop_filter(dest_cr, uvlinesize); } - -av_cold void ff_h261_common_init(void) -{ - static int done = 0; - - if (done) - return; - - ff_rl_init(&ff_h261_rl_tcoeff, ff_h261_rl_table_store); - done = 1; -} diff --git a/libavcodec/h261.h b/libavcodec/h261.h index 399a404b2b..25728a295d 100644 --- a/libavcodec/h261.h +++ b/libavcodec/h261.h @@ -48,8 +48,6 @@ typedef struct H261Context { #define MB_TYPE_H261_FIL 0x800000 -extern uint8_t ff_h261_rl_table_store[2][2 * MAX_RUN + MAX_LEVEL + 3]; - extern const uint8_t ff_h261_mba_code[35]; extern const uint8_t ff_h261_mba_bits[35]; extern const uint8_t ff_h261_mtype_code[10]; @@ -60,7 +58,6 @@ extern const uint8_t ff_h261_cbp_tab[63][2]; extern RLTable ff_h261_rl_tcoeff; void ff_h261_loop_filter(MpegEncContext *s); -void ff_h261_common_init(void); int ff_h261_get_picture_format(int width, int height); void ff_h261_reorder_mb_index(MpegEncContext *s); diff --git a/libavcodec/h261enc.c b/libavcodec/h261enc.c index 8d5d62b786..eec526c500 100644 --- a/libavcodec/h261enc.c +++ b/libavcodec/h261enc.c @@ -27,6 +27,7 @@ #include "libavutil/attributes.h" #include "libavutil/avassert.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "mpegutils.h" #include "mpegvideo.h" @@ -361,9 +362,17 @@ static av_cold void init_uni_h261_rl_tab(const RLTable *rl, uint8_t *len_tab) } } +static av_cold void h261_encode_init_static(void) +{ + static uint8_t h261_rl_table_store[2][2 * MAX_RUN + MAX_LEVEL + 3]; + + ff_rl_init(&ff_h261_rl_tcoeff, h261_rl_table_store); + init_uni_h261_rl_tab(&ff_h261_rl_tcoeff, uni_h261_rl_len); +} + av_cold void ff_h261_encode_init(MpegEncContext *s) { - ff_h261_common_init(); + static AVOnce init_static_once = AV_ONCE_INIT; s->min_qcoeff = -127; s->max_qcoeff = 127; @@ -371,10 +380,9 @@ av_cold void ff_h261_encode_init(MpegEncContext *s) s->c_dc_scale_table = ff_mpeg1_dc_scale_table; s->ac_esc_length = 6+6+8; - init_uni_h261_rl_tab(&ff_h261_rl_tcoeff, uni_h261_rl_len); - s->intra_ac_vlc_length = s->inter_ac_vlc_length = uni_h261_rl_len; s->intra_ac_vlc_last_length = s->inter_ac_vlc_last_length = uni_h261_rl_len + 128*64; + ff_thread_once(&init_static_once, h261_encode_init_static); } static const AVClass h261_class = { @@ -393,7 +401,7 @@ AVCodec ff_h261_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &h261_class, From patchwork Thu Dec 10 11:16:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24492 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 8E9F244BB21 for ; Thu, 10 Dec 2020 13:22:47 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C038368A768; Thu, 10 Dec 2020 13:19:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C935E68A633 for ; Thu, 10 Dec 2020 13:19:10 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id r14so5069467wrn.0 for ; Thu, 10 Dec 2020 03:19:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=HZtt1354yN+YH0qEUGvqBGsWTp/monOyL12LzOnFq4Q=; b=ZHYKQMU9/H2jim+Pbh+jJzseZN+06B5RXIDTiU6QNlkWTCWv8tZaTyM3pBilVHiT9d QfprvWhdpPAZ1Uz6iRPJ86nR5ChRkUW+Fa13Ik3i/n1K2wLwD+uRed+MLSJWMoUJprqD vtx1Vuv6VLd18prRJ1IWDykUwo/1HthGvQo3soR0qi0W4Bw0miOojVn7MQWBxOZ9o5AU YHr98eGr0PDKwInrQoYBrgfWYX9+1plzph85zEyAlIreAX3x1ODfmiJUkpKHxt0mJm/F 7HVpsJHavMH4ce4W/wPeuWC8OfXFMrPZ0rFpoTa/Nn+DGZ2wqDR7/9df1wA1srg08TT+ Mg6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=HZtt1354yN+YH0qEUGvqBGsWTp/monOyL12LzOnFq4Q=; b=DSYH9wf1/vEX7XOLcZ3rkjx9Ji80ZkS2u5TPvkQpmQ1U0rT2rZSPOrHIcMPheURovH MDdw/lXmVRhBv4/7aWz/XV0fOOljius6KGF9XFTF9aQXLjjvA7WlOqTXm4zyQ4D3UhX6 iM0o+/B2PPJB6G/joQmpofuu6cWZjEsNZJhUwWNPO9L4ZvxYG3oD6bE8ntyKU+7ch66v q6kXxwrIjRJ7VeiFi1GcdM80qTrd8WKjopRhoiNewQ8+M4Cn2uncahoxIEeD7Z5jfp1L zb6D21nt61npV3iDCxTKhecNB4FBVi+xcFV+TXCv9fDSFGMGl5yX1+j2DUr80iPSatZe DRJA== X-Gm-Message-State: AOAM533K/RYrEXL5l6RPbT9BYmGoaGrvy1UKH3WTGnb7LGsatG2wrP3s SuBPNbklaDbEZ3M5q3iZvr09mHLqGTP+/Q== X-Google-Smtp-Source: ABdhPJxtaRkHdoF3s03hHasKwHr/ZvApCHRPjQqz41E+cMyzqVh4bPbT7myJ2hEMR/TLEnR4t8wSBw== X-Received: by 2002:a5d:4587:: with SMTP id p7mr2079900wrq.178.1607599150080; Thu, 10 Dec 2020 03:19:10 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:09 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:42 +0100 Message-Id: <20201210111657.2276739-25-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 24/39] avcodec/ituh263dec: Don't initialize unused parts of RLTable X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The RLTable ff_rl_intra_aic is only used by ituh263dec and ituh263enc; the former only uses the RLTable's VLC, the latter only index_run, max_level and max_run. Yet ituh263dec also initializes the latter. This commit stops doing so. Signed-off-by: Andreas Rheinhardt --- libavcodec/ituh263dec.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c index eec86c81b1..0d1138512c 100644 --- a/libavcodec/ituh263dec.c +++ b/libavcodec/ituh263dec.c @@ -122,7 +122,6 @@ av_cold void ff_h263_decode_init_vlc(void) &ff_mvtab[0][1], 2, 1, &ff_mvtab[0][0], 2, 1, 538); ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]); - ff_rl_init(&ff_rl_intra_aic, ff_h263_static_rl_table_store[1]); INIT_VLC_RL(ff_h263_rl_inter, 554); INIT_FIRST_VLC_RL(ff_rl_intra_aic, 554); INIT_VLC_STATIC(&h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, From patchwork Thu Dec 10 11:16:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24493 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 593CD44011F for ; Thu, 10 Dec 2020 13:22:58 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CCA7068A4C3; Thu, 10 Dec 2020 13:19:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 99A6A68A763 for ; Thu, 10 Dec 2020 13:19:11 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id q75so4887960wme.2 for ; Thu, 10 Dec 2020 03:19:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=EJH+pyVq3WxBOhMOrP/9c+H4YFyOlW2eSkuF/deOVDo=; b=u+eIhLAf0vp0hVsfO/2oBdZYuwqhlkke2s3QY974K9GOBkcVXClNwWBU+aBMmiDE4Q f+Gf/9UYecRUfPYy3GCFDJ0Hj7c2wzg6nAT0dfSzGeByGG0OQo9d+mlGzzxgeqHNgRej IdRmidt4PS8uuDBngMQvS6NGZaVLgIg1Z0eBUPW78YuZ9QllRxqzinidag8b1WdhBmoA jgd4dOenWvvPW7q9hgqafpspkF6YO2QDTGNvIx3ZNFQo5TIwlzCmkBG6U/if9Sb1tle1 VIBJ+u+QXtSvr5+9lPCrw8FhbqHy6VPs2ZoSa8bjQUTGgPn9o0nP935Wn8PCQagtDfIP UUmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=EJH+pyVq3WxBOhMOrP/9c+H4YFyOlW2eSkuF/deOVDo=; b=nR7qaWhIU8kbgp/eD+Np7K663cgxiPMNAT/SIgi4U2SkHbuhDlcBNIhUUdHXqWPydQ rPKNdTj+j6v3sw7r0RZpONJsLjEWESphGjZFqAqxWfncFPUFK1fSJMGJy+Zsp5KYs6ir vjUjqLgS0KzlBQgYMBJezp7zxwL6lrfxeSxEDB0vuSa6NcFCUCspkb28c4o04vl3qSm2 XS7noyyPACdbQafpQ8xv+vw+wvGl4a8nInCKynI71GsjsonHNqMgzwgcS+rBg9Gzadda 16CMjRv0ULXwg0Yk2Pm+96gAVM/fOHwxM/lpJqdV6zv+XMRyMkzpWLscvxp7/P3/Kg0/ yuIw== X-Gm-Message-State: AOAM5316C0N78NrKNfllPAZHUUqzSRc794ynGmDV0CnyS8Ys7WF9HFyD 46bMqfQcg7ZWYVxci6CvnlDkddYVui9rVA== X-Google-Smtp-Source: ABdhPJzZnUYMZvIP8JsH1+RSq/KEQxgU/wAYLO5WRzYXWgypAHUqdU4FNoDmRByvhXIuTfdJ0+UIYQ== X-Received: by 2002:a1c:8d:: with SMTP id 135mr7602516wma.177.1607599151031; Thu, 10 Dec 2020 03:19:11 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:10 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:43 +0100 Message-Id: <20201210111657.2276739-26-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 25/39] avcodec/ituh263enc: Remove unused function parameter X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/ituh263enc.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c index b1b78218a5..e1debcf63b 100644 --- a/libavcodec/ituh263enc.c +++ b/libavcodec/ituh263enc.c @@ -713,8 +713,7 @@ static av_cold void init_mv_penalty_and_fcode(MpegEncContext *s) } } -static av_cold void init_uni_h263_rl_tab(RLTable *rl, uint32_t *bits_tab, - uint8_t *len_tab) +static av_cold void init_uni_h263_rl_tab(const RLTable *rl, uint8_t *len_tab) { int slevel, run, last; @@ -738,10 +737,9 @@ static av_cold void init_uni_h263_rl_tab(RLTable *rl, uint32_t *bits_tab, len= rl->table_vlc[code][1]; bits=bits*2+sign; len++; - if(code!=rl->n && len < len_tab[index]){ - if(bits_tab) bits_tab[index]= bits; + if (code != rl->n && len < len_tab[index]) len_tab [index]= len; - } + /* ESC */ bits= rl->table_vlc[rl->n][0]; len = rl->table_vlc[rl->n][1]; @@ -749,10 +747,8 @@ static av_cold void init_uni_h263_rl_tab(RLTable *rl, uint32_t *bits_tab, bits=bits*64+run; len+=6; bits=bits*256+(level&0xff); len+=8; - if(len < len_tab[index]){ - if(bits_tab) bits_tab[index]= bits; + if (len < len_tab[index]) len_tab [index]= len; - } } } } @@ -768,8 +764,8 @@ av_cold void ff_h263_encode_init(MpegEncContext *s) ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]); ff_rl_init(&ff_rl_intra_aic, ff_h263_static_rl_table_store[1]); - init_uni_h263_rl_tab(&ff_rl_intra_aic, NULL, uni_h263_intra_aic_rl_len); - init_uni_h263_rl_tab(&ff_h263_rl_inter , NULL, uni_h263_inter_rl_len); + init_uni_h263_rl_tab(&ff_rl_intra_aic, uni_h263_intra_aic_rl_len); + init_uni_h263_rl_tab(&ff_h263_rl_inter, uni_h263_inter_rl_len); init_mv_penalty_and_fcode(s); } From patchwork Thu Dec 10 11:16:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24485 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 093FD44AF7C for ; Thu, 10 Dec 2020 13:19:17 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E480668A44A; Thu, 10 Dec 2020 13:19:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 289D368A768 for ; Thu, 10 Dec 2020 13:19:13 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id k14so5081714wrn.1 for ; Thu, 10 Dec 2020 03:19:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=sE3G57rO5OlsSvOUdrGYTCvVsQ+/KnDgXeheil5Abso=; b=nqZl6NKmvlho+lxMZgtszykxeyo6wwPjKFUNA2F+4AyBKqh1+mqhA/6WyicmsuAftD iz2k6io5DzMuJQnMbevviQkr2K+BjiHVKDQjUV9k7/TKPI1P2Zl7nG4MVf+LR/qAgqBw eqbxR9rKBw7A1q/0wyQzEf+E1i88rcBSlmojMswvITl+iDdz0U8soS5Kjg36c5SWwOZ4 ig8o1Qih/OTN6MsZQGgc4LaKr9jScoBS247irTLamjZ1KGhLbJVj+BEH6L29JkScptBq JNoH7jUMNh1klxjMsJANCX/aFOI/2qBqrFsaL622XuD1xvDEh6YEHIrR2og+0XZXC2do koYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=sE3G57rO5OlsSvOUdrGYTCvVsQ+/KnDgXeheil5Abso=; b=pQ26MOSHzOmZQsTimjAKGcehzcVCuhVeHUBovLW+XA8hqJoFhBca2ASBoQdSw33ho9 vHF8+p7dl3a2djhsBvMxc9Um4evOUJkgG4UqmWPh4zHtnAVxu+XkFIr0yQIhWcOwQZSM z+Cl/wbIzXuWACGEhZtxNTntket8u4xdXrHcRPKfUB1FhMVmxrCE+65sFhO5RRL/Jj9y jRT1ylY9tzp/1yY7MsCJOsRHLR4fkRrniUDP7YRwMhf/yrVO0RwYwW6hXxepsam6S3VG QDU95bprhVbR5jst3TUy8n0FZz9f31BW8YOYdA6O/JGx5jDkXvUAUXtuu3OeZz39dA99 RMcg== X-Gm-Message-State: AOAM530OcXfr6kYTElmzhq8D+qm7eUyY67lzg6+D4AJh0BTC98TPieEe A9fH+uuSwLOqDoMhxjZ2mnDFwcFqf36eag== X-Google-Smtp-Source: ABdhPJxzqFMvdMOo2lNpGRxhjiLEmDa0tbnqitYJejLjcuLhifCKvhi3CUrXX4TyW815Fx79gTwn1Q== X-Received: by 2002:a5d:51cc:: with SMTP id n12mr1067656wrv.375.1607599152286; Thu, 10 Dec 2020 03:19:12 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:11 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:44 +0100 Message-Id: <20201210111657.2276739-27-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 26/39] avcodec/h263data, ituh263*: Make initializing RL inter table thread-safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, ff_h263_rl_inter was initialized by both ituh263dec and ituh263enc; this is an obstacle in making the codecs that use this code init-threadsafe. This obstacle is eliminated by only initializing this RLTable from a single place that is guarded by a dedicated AVOnce. Signed-off-by: Andreas Rheinhardt --- libavcodec/h263data.c | 16 ++++++++++++++-- libavcodec/h263data.h | 2 +- libavcodec/ituh263dec.c | 2 +- libavcodec/ituh263enc.c | 5 +++-- 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/libavcodec/h263data.c b/libavcodec/h263data.c index f649d58f4e..604a0425e1 100644 --- a/libavcodec/h263data.c +++ b/libavcodec/h263data.c @@ -25,11 +25,11 @@ #include +#include "libavutil/thread.h" + #include "h263data.h" #include "mpegvideo.h" -uint8_t ff_h263_static_rl_table_store[2][2][2 * MAX_RUN + MAX_LEVEL + 3]; - /* intra MCBPC, mb_type = (intra), then (intraq) */ const uint8_t ff_h263_intra_MCBPC_code[9] = { 1, 1, 2, 3, 1, 1, 2, 3, 1 }; const uint8_t ff_h263_intra_MCBPC_bits[9] = { 1, 3, 3, 3, 4, 6, 6, 6, 9 }; @@ -290,3 +290,15 @@ const AVRational ff_h263_pixel_aspect[16] = { { 0, 1 }, { 0, 1 }, }; + +static av_cold void h263_init_rl_inter(void) +{ + static uint8_t h263_rl_inter_table[2][2 * MAX_RUN + MAX_LEVEL + 3]; + ff_rl_init(&ff_h263_rl_inter, h263_rl_inter_table); +} + +av_cold void ff_h263_init_rl_inter(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, h263_init_rl_inter); +} diff --git a/libavcodec/h263data.h b/libavcodec/h263data.h index 3da0e3771f..144704d12b 100644 --- a/libavcodec/h263data.h +++ b/libavcodec/h263data.h @@ -61,7 +61,7 @@ extern const int8_t ff_inter_run[102]; extern RLTable ff_h263_rl_inter; extern RLTable ff_rl_intra_aic; -extern uint8_t ff_h263_static_rl_table_store[2][2][2 * MAX_RUN + MAX_LEVEL + 3]; +void ff_h263_init_rl_inter(void); extern const uint16_t ff_h263_format[8][2]; diff --git a/libavcodec/ituh263dec.c b/libavcodec/ituh263dec.c index 0d1138512c..f2e92ac6bc 100644 --- a/libavcodec/ituh263dec.c +++ b/libavcodec/ituh263dec.c @@ -121,7 +121,7 @@ av_cold void ff_h263_decode_init_vlc(void) INIT_VLC_STATIC(&ff_h263_mv_vlc, H263_MV_VLC_BITS, 33, &ff_mvtab[0][1], 2, 1, &ff_mvtab[0][0], 2, 1, 538); - ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]); + ff_h263_init_rl_inter(); INIT_VLC_RL(ff_h263_rl_inter, 554); INIT_FIRST_VLC_RL(ff_rl_intra_aic, 554); INIT_VLC_STATIC(&h263_mbtype_b_vlc, H263_MBTYPE_B_VLC_BITS, 15, diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c index e1debcf63b..43260e6984 100644 --- a/libavcodec/ituh263enc.c +++ b/libavcodec/ituh263enc.c @@ -759,10 +759,11 @@ av_cold void ff_h263_encode_init(MpegEncContext *s) static int done = 0; if (!done) { + static uint8_t rl_intra_table[2][2 * MAX_RUN + MAX_LEVEL + 3]; done = 1; - ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]); - ff_rl_init(&ff_rl_intra_aic, ff_h263_static_rl_table_store[1]); + ff_rl_init(&ff_rl_intra_aic, rl_intra_table); + ff_h263_init_rl_inter(); init_uni_h263_rl_tab(&ff_rl_intra_aic, uni_h263_intra_aic_rl_len); init_uni_h263_rl_tab(&ff_h263_rl_inter, uni_h263_inter_rl_len); From patchwork Thu Dec 10 11:16:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24496 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id DF63844A03C for ; Thu, 10 Dec 2020 13:23:20 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BBDBB68A84A; Thu, 10 Dec 2020 13:19:17 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3E7FC689BD5 for ; Thu, 10 Dec 2020 13:19:14 +0200 (EET) Received: by mail-wr1-f66.google.com with SMTP id 91so5055803wrj.7 for ; Thu, 10 Dec 2020 03:19:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=uEZPzk/6pUB5UqgJy1OcWHQw89yY13ijCib9QMJmKL8=; b=o6hr9mvM7PNP9nUGTpHxqxZfUWZLojZOYvaLl7fBjPO+pvJHFkF5mjmi39mgs/4EVF lCzWvOo0fTvelEcx9eyiJwu5onuGmxmOXk0i8QS/FTaDIcBAkUkUKO9PLOpG51hfYEGo 4v3Qk1LDErW5V04vv9Qo1Ri0BWshFC1iEmxx5QtnqKHM0PUlLQ6YmQE2QHIMWqgaNaq9 dLZE5+RPnFTzUFCfO1yE/542TZEhhxvS7ttExQ0BKK33XZubZtfsfKaeJHFwf2BIsD6w 4m1MJlZmIbS0MTI9BCX+ElfYDGu8TZMsMAWhH8YtqbxA1PMOggbxKX/QRrPH30kQKtyV YblA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=uEZPzk/6pUB5UqgJy1OcWHQw89yY13ijCib9QMJmKL8=; b=dXhWgG8L/l3LPF/olmKfD64W37r79Tc/LSQ6e241jTNbAXogekdIoS2MZqyfJezNno 0I89aWr3k3FxuPC3ropAIkrT8lOq5wA6L7pToElbCSqTc4i6BtVvfPFSwt34qtovJJH0 AyPFBdbkJ/B8bNHL/+5p36nDq5G7iQLca1hD32kot/PUc5n4e7kwtWGiRK4sUZvkWHUe cOooGcSrYXCUk99ypDpAqjqI3XfbRV6rRd4a6ZbAPAXDRYFNkK0ryllgkGwwDpMEgkTy tR/6+6LqkFW3GTniGPcmJtz1aHIzuJG7GC+lgJv5w/2eFHN5LQnLOTM9Amu5ZujMhdG6 qhLA== X-Gm-Message-State: AOAM533qnGFLmzJg0f3vxi29cJEA6jvcAkO/XXbQtRBoXqnIwzehh/mH gLcT+yESyNb+NjlzMlGeIHjANl80HpZY2g== X-Google-Smtp-Source: ABdhPJzR+vUxmesGzF4ApiJAR87DGacT99UksjPzf/ej/FZMQyiuK+t9UL9BdX7Sg4mx19wnPg7znw== X-Received: by 2002:a5d:6751:: with SMTP id l17mr7654753wrw.73.1607599153447; Thu, 10 Dec 2020 03:19:13 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:12 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:45 +0100 Message-Id: <20201210111657.2276739-28-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 27/39] avcodec/ituh263enc: Make static initializations thread-safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This already makes several encoders (namely FLV, H.263, H.263+ and RealVideo 1.0 and 2.0) that use this init-threadsafe. It also makes the Snow encoder init-threadsafe; it was already marked as such since commit d49210788b0836d56dd872d517fe73f83b080101, because it was thought to be harmless if one and the same object was initialized by multiple threads at the same time. Signed-off-by: Andreas Rheinhardt --- libavcodec/flvenc.c | 2 +- libavcodec/ituh263enc.c | 28 ++++++++++++++++------------ libavcodec/mpegvideo_enc.c | 4 ++-- libavcodec/rv10enc.c | 2 +- libavcodec/rv20enc.c | 2 +- 5 files changed, 21 insertions(+), 17 deletions(-) diff --git a/libavcodec/flvenc.c b/libavcodec/flvenc.c index b85e4667c4..9429862159 100644 --- a/libavcodec/flvenc.c +++ b/libavcodec/flvenc.c @@ -107,7 +107,7 @@ AVCodec ff_flv_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE}, .priv_class = &flv_class, diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c index 43260e6984..79c8c9999e 100644 --- a/libavcodec/ituh263enc.c +++ b/libavcodec/ituh263enc.c @@ -30,6 +30,7 @@ #include #include "libavutil/attributes.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "mpegvideo.h" #include "mpegvideodata.h" @@ -671,7 +672,7 @@ void ff_h263_encode_motion(PutBitContext *pb, int val, int f_code) } } -static av_cold void init_mv_penalty_and_fcode(MpegEncContext *s) +static av_cold void init_mv_penalty_and_fcode(void) { int f_code; int mv; @@ -754,22 +755,23 @@ static av_cold void init_uni_h263_rl_tab(const RLTable *rl, uint8_t *len_tab) } } -av_cold void ff_h263_encode_init(MpegEncContext *s) +static av_cold void h263_encode_init_static(void) { - static int done = 0; + static uint8_t rl_intra_table[2][2 * MAX_RUN + MAX_LEVEL + 3]; - if (!done) { - static uint8_t rl_intra_table[2][2 * MAX_RUN + MAX_LEVEL + 3]; - done = 1; + ff_rl_init(&ff_rl_intra_aic, rl_intra_table); + ff_h263_init_rl_inter(); - ff_rl_init(&ff_rl_intra_aic, rl_intra_table); - ff_h263_init_rl_inter(); + init_uni_h263_rl_tab(&ff_rl_intra_aic, uni_h263_intra_aic_rl_len); + init_uni_h263_rl_tab(&ff_h263_rl_inter, uni_h263_inter_rl_len); - init_uni_h263_rl_tab(&ff_rl_intra_aic, uni_h263_intra_aic_rl_len); - init_uni_h263_rl_tab(&ff_h263_rl_inter, uni_h263_inter_rl_len); + init_mv_penalty_and_fcode(); +} + +av_cold void ff_h263_encode_init(MpegEncContext *s) +{ + static AVOnce init_static_once = AV_ONCE_INIT; - init_mv_penalty_and_fcode(s); - } s->me.mv_penalty= mv_penalty; // FIXME exact table for MSMPEG4 & H.263+ s->intra_ac_vlc_length =s->inter_ac_vlc_length = uni_h263_inter_rl_len; @@ -817,6 +819,8 @@ av_cold void ff_h263_encode_init(MpegEncContext *s) s->y_dc_scale_table= s->c_dc_scale_table= ff_mpeg1_dc_scale_table; } + + ff_thread_once(&init_static_once, h263_encode_init_static); } void ff_h263_encode_mba(MpegEncContext *s) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 061081db08..8fb415f42b 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -4786,7 +4786,7 @@ AVCodec ff_h263_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts= (const enum AVPixelFormat[]){AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE}, .priv_class = &h263_class, }; @@ -4816,7 +4816,7 @@ AVCodec ff_h263p_encoder = { .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, .capabilities = AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &h263p_class, }; diff --git a/libavcodec/rv10enc.c b/libavcodec/rv10enc.c index 42316836c5..6add8e4dd1 100644 --- a/libavcodec/rv10enc.c +++ b/libavcodec/rv10enc.c @@ -79,7 +79,7 @@ AVCodec ff_rv10_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &rv10_class, }; diff --git a/libavcodec/rv20enc.c b/libavcodec/rv20enc.c index d9d63d4d9c..95f90389bc 100644 --- a/libavcodec/rv20enc.c +++ b/libavcodec/rv20enc.c @@ -76,7 +76,7 @@ AVCodec ff_rv20_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &rv20_class, }; From patchwork Thu Dec 10 11:16:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24497 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3791444A03C for ; Thu, 10 Dec 2020 13:23:33 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A0FAB68A830; Thu, 10 Dec 2020 13:19:18 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 455A268A7B4 for ; Thu, 10 Dec 2020 13:19:15 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id a6so4309230wmc.2 for ; Thu, 10 Dec 2020 03:19:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=lFS17vVstIkyPdlbm9xVbQAGYFirIYkLm6MEMBvcxfU=; b=i+ygVyy0B5xrbYHFsNtBYAYKn/CJ5Q93yqK07vWqyNkeUi1anmE/aGuCEfcyFGTrUV 9Xb3vNCSPdhqbAC2PEY8QHkH054CY7KQP72jF/bjDiHInEhO5bXZzWzY0IMXkTocVLlY kDPZcxTWOR00tRHi0e5xBVLG9JGbhiyX3KASSoOyftGXY3jL0f8M9p8iyf/jp8mHUW88 PDBivrHJUpXfoq94mF5YVbUZ4w6X9+/2EUx02CVocl4IEH5LdqN/CLzD/jp2Ue/eoPyr ajku09twVHjulevXrfr+U449iaJu9lHe/B18Sr6ZLVD8g/XxJEMP1ozAtI723G5v1Sct GLXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=lFS17vVstIkyPdlbm9xVbQAGYFirIYkLm6MEMBvcxfU=; b=RHAueEAa3HSFbaiE5UzXYVI6A5lNKRuTS7IQCEJWblzdF62F6JSFWH3sbeq+Do9prJ J5rOTpsyEP4rB3XWv+yyHkadWo2rDYgZyAozRM63s58sZetc1HJHXwmJ0PyITtsg+zpH tSoV3OcjH1FRMhJ+8f8CqjE0HRKbirnyJ7FuAPELfZ4fvDCtX0PkNY5iwmvy+WsdPXYS t5jyIUegq9dHMMsPLpdGC4sugKTMJpAGLHF5ACHEV/85ZIAR8N0C0ml9MU303dB1BQzO +9qYa2G+M5S+EpHkjPF6DSViAo9HjIZ9Iy9map2/g26YNV/BaE3wxO6Ynj2NqsrvpIOU Yfpw== X-Gm-Message-State: AOAM530hF9b7r/ato9pf09F/FfWydRN+jZ20Z/c2WOxziU3KlIsL3f4I 07Fl2RtNhLdMic9ks2ZmboilWphCosDRoQ== X-Google-Smtp-Source: ABdhPJzmxRXPlruZrqvFX5zHITfcA+m2OMNHMu+Nl0oqVwiymqIzLWltp/XFYJfGn4IWdaKNbIec6A== X-Received: by 2002:a1c:7f90:: with SMTP id a138mr7772153wmd.61.1607599154528; Thu, 10 Dec 2020 03:19:14 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:13 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:46 +0100 Message-Id: <20201210111657.2276739-29-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 28/39] avcodec/mpeg4video: Making initializing RLTable thread-safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now the RLTable ff_mpeg4_rl_intra was initialized by both mpeg4 decoder and encoder (except the VLCs that are only used by the decoder). This is an obstacle to making these codecs init-threadsafe, so move initializing this to a single function that is guarded by a dedicated AVOnce. Signed-off-by: Andreas Rheinhardt --- Those ff_rl_init(&ff_rvlc_rl_inter/intra, ...) calls are actually superfluous: If these RLTables are in use, the parts initialized by ff_rl_init() are not used (see mpeg4_decode_block in mpeg4videodec.c). Yet I have no sample that actually triggers this codepath, so I haven't done it (rvlc stands for reversible VLC). It would be great if someone could provide me with samples for this. libavcodec/mpeg4video.c | 14 +++++++++++++- libavcodec/mpeg4video.h | 3 +-- libavcodec/mpeg4videodec.c | 8 +++++--- libavcodec/mpeg4videoenc.c | 2 +- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/libavcodec/mpeg4video.c b/libavcodec/mpeg4video.c index 2aaa9f734c..ffeaf822b2 100644 --- a/libavcodec/mpeg4video.c +++ b/libavcodec/mpeg4video.c @@ -20,12 +20,24 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/thread.h" + #include "mpegutils.h" #include "mpegvideo.h" #include "mpeg4video.h" #include "mpeg4data.h" -uint8_t ff_mpeg4_static_rl_table_store[3][2][2 * MAX_RUN + MAX_LEVEL + 3]; +static av_cold void mpeg4_init_rl_intra(void) +{ + static uint8_t mpeg4_rl_intra_table[2][2 * MAX_RUN + MAX_LEVEL + 3]; + ff_rl_init(&ff_mpeg4_rl_intra, mpeg4_rl_intra_table); +} + +av_cold void ff_mpeg4_init_rl_intra(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, mpeg4_init_rl_intra); +} int ff_mpeg4_get_video_packet_prefix_length(MpegEncContext *s) { diff --git a/libavcodec/mpeg4video.h b/libavcodec/mpeg4video.h index e919db87a5..74470efb51 100644 --- a/libavcodec/mpeg4video.h +++ b/libavcodec/mpeg4video.h @@ -129,6 +129,7 @@ extern const int8_t ff_mpeg4_intra_level[102]; extern const int8_t ff_mpeg4_intra_run[102]; extern RLTable ff_mpeg4_rl_intra; +av_cold void ff_mpeg4_init_rl_intra(void); /* Note this is identical to the intra rvlc except that it is reordered. */ extern RLTable ff_rvlc_rl_inter; @@ -180,8 +181,6 @@ int ff_mpeg4_frame_end(AVCodecContext *avctx, const uint8_t *buf, int buf_size); */ int ff_mpeg4_set_direct_mv(MpegEncContext *s, int mx, int my); -extern uint8_t ff_mpeg4_static_rl_table_store[3][2][2 * MAX_RUN + MAX_LEVEL + 3]; - #if 0 //3IV1 is quite rare and it slows things down a tiny bit #define IS_3IV1 s->codec_tag == AV_RL32("3IV1") #else diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index a6e29447b0..5b8236872f 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -3386,9 +3386,11 @@ av_cold void ff_mpeg4videodec_static_init(void) { static int done = 0; if (!done) { - ff_rl_init(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]); - ff_rl_init(&ff_rvlc_rl_inter, ff_mpeg4_static_rl_table_store[1]); - ff_rl_init(&ff_rvlc_rl_intra, ff_mpeg4_static_rl_table_store[2]); + static uint8_t mpeg4_rvlc_rl_tables[2][2][2 * MAX_RUN + MAX_LEVEL + 3]; + + ff_mpeg4_init_rl_intra(); + ff_rl_init(&ff_rvlc_rl_inter, mpeg4_rvlc_rl_tables[0]); + ff_rl_init(&ff_rvlc_rl_intra, mpeg4_rvlc_rl_tables[1]); INIT_FIRST_VLC_RL(ff_mpeg4_rl_intra, 554); INIT_VLC_RL(ff_rvlc_rl_inter, 1072); INIT_FIRST_VLC_RL(ff_rvlc_rl_intra, 1072); diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c index b3fa910c64..ca1c0dfd9c 100644 --- a/libavcodec/mpeg4videoenc.c +++ b/libavcodec/mpeg4videoenc.c @@ -1288,7 +1288,7 @@ static av_cold int encode_init(AVCodecContext *avctx) init_uni_dc_tab(); - ff_rl_init(&ff_mpeg4_rl_intra, ff_mpeg4_static_rl_table_store[0]); + ff_mpeg4_init_rl_intra(); init_uni_mpeg4_rl_tab(&ff_mpeg4_rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); init_uni_mpeg4_rl_tab(&ff_h263_rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); From patchwork Thu Dec 10 11:16:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24486 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D443844AF7C for ; Thu, 10 Dec 2020 13:19:19 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B7FF268A8B4; Thu, 10 Dec 2020 13:19:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6C5C768A215 for ; Thu, 10 Dec 2020 13:19:16 +0200 (EET) Received: by mail-wr1-f51.google.com with SMTP id m5so5061357wrx.9 for ; Thu, 10 Dec 2020 03:19:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=keh9XszbBt+Tb5nJS8IsA/KUrKuP8+9iqbmQnnpgAks=; b=qqwReuHt77neznZtn7wTxXjOOOTsOk0WUzqr6iJNGzHEIfDnJVafJMlAT3ZBSTUUG/ a6MQEc900u2pLXks+9dZ8EAxUzxYgDygmC21c148ENKODjQrUbakW4BcO5Q5lurMJQVl voNE/BfnAm1ftkakFcU9DnJ0OAGla+4M6qtNjX/fZ152YPrZJpHH70SSRdkI/dN1D1jl pvxOII9ZBnLvH9LUI3YD+CHuWkYbcVvMlXlr6V8AxWqaGOIEaJGpQJuymevKZQSzLCwV JRDa5/Orfzl0B0x+OojKzorc1NSQ2tGwZQNCUf/ViRy5RDc5Jt2XAfrfptLRjkrT/g95 XBVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=keh9XszbBt+Tb5nJS8IsA/KUrKuP8+9iqbmQnnpgAks=; b=VWsL9g0sCd69X5JM5SLyPXzg+ECyOsFDXokbhAQd3To+YwS1ncQD8Y8gMgobh7cqAu UrO5ayq9qDL+rZYE16qN17xjPpoKQ+tLbvE8Wi7LrhRuFjpDPtSqv/85G3DjCuTbXEej bK3WApf8isKsHU05bwWs6FlwOBYXxzZgl+EXx+cd+qAY33tGoVU+Bk2dCoXHHnDX9E5w gUC2dm53v25aBNLxlzWK0HeOwRaRSiU0rRYJTkk4XOsX+8RoMjviXiC/prp+N+pv2KFw mPDx/mk0kUENQQ3Tiiybq4Goml12DVBGkqWN0NcDEUbJYoVcjCvWJQ1ktL0S3jocjjsu MKiw== X-Gm-Message-State: AOAM531Zqrl7VoBZplC7i//NZf04QIfu8dDu4N75zZPtJ/adNRiHhSVO EcU2CrWv6OmwFpntx13G5cwjsUOxedFsYQ== X-Google-Smtp-Source: ABdhPJyzVURjTBztk78g4GcgxWnx9ybTi5mDxf+ZfQ28bA3SJUUMOEphMVBsb9ab26Ulx9m4sp29Ug== X-Received: by 2002:a5d:4112:: with SMTP id l18mr7602556wrp.116.1607599155513; Thu, 10 Dec 2020 03:19:15 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:15 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:47 +0100 Message-Id: <20201210111657.2276739-30-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 29/39] avcodec/mpeg4videoenc: Make encoder init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg4videoenc.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c index ca1c0dfd9c..8b98a1d507 100644 --- a/libavcodec/mpeg4videoenc.c +++ b/libavcodec/mpeg4videoenc.c @@ -23,6 +23,7 @@ #include "libavutil/attributes.h" #include "libavutil/log.h" #include "libavutil/opt.h" +#include "libavutil/thread.h" #include "mpegutils.h" #include "mpegvideo.h" #include "h263.h" @@ -1269,11 +1270,21 @@ static av_cold void init_uni_mpeg4_rl_tab(RLTable *rl, uint32_t *bits_tab, } } +static av_cold void mpeg4_encode_init_static(void) +{ + init_uni_dc_tab(); + + ff_mpeg4_init_rl_intra(); + + init_uni_mpeg4_rl_tab(&ff_mpeg4_rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); + init_uni_mpeg4_rl_tab(&ff_h263_rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); +} + static av_cold int encode_init(AVCodecContext *avctx) { + static AVOnce init_static_once = AV_ONCE_INIT; MpegEncContext *s = avctx->priv_data; int ret; - static int done = 0; if (avctx->width >= (1<<13) || avctx->height >= (1<<13)) { av_log(avctx, AV_LOG_ERROR, "dimensions too large for MPEG-4\n"); @@ -1283,16 +1294,7 @@ static av_cold int encode_init(AVCodecContext *avctx) if ((ret = ff_mpv_encode_init(avctx)) < 0) return ret; - if (!done) { - done = 1; - - init_uni_dc_tab(); - - ff_mpeg4_init_rl_intra(); - - init_uni_mpeg4_rl_tab(&ff_mpeg4_rl_intra, uni_mpeg4_intra_rl_bits, uni_mpeg4_intra_rl_len); - init_uni_mpeg4_rl_tab(&ff_h263_rl_inter, uni_mpeg4_inter_rl_bits, uni_mpeg4_inter_rl_len); - } + ff_thread_once(&init_static_once, mpeg4_encode_init_static); s->min_qcoeff = -2048; s->max_qcoeff = 2047; @@ -1399,6 +1401,6 @@ AVCodec ff_mpeg4_encoder = { .close = ff_mpv_encode_end, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .capabilities = AV_CODEC_CAP_DELAY | AV_CODEC_CAP_SLICE_THREADS, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .priv_class = &mpeg4enc_class, }; From patchwork Thu Dec 10 11:16:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24498 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 7B66044A03C for ; Thu, 10 Dec 2020 13:23:55 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DB43868A882; Thu, 10 Dec 2020 13:19:20 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3C5A4688158 for ; Thu, 10 Dec 2020 13:19:17 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id e25so4905656wme.0 for ; Thu, 10 Dec 2020 03:19:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=l9/wmoqdugOAzPFfS2Oa8xY/DKCmhfxDgSoP1hNLBtM=; b=anJd+PshWP0/czpqd3l0pTc6kYl9gOa+9PurAXwvZ3ZFpeJoEAE+t9jVQtUrSFmIjc cYXNHCGYUsf/zusBB19NkVpUyBSOsGmr5IVo62o/Ee4RgHFGIILm4FDdtFVLAfARQEj5 TgAurRz66oHZfgTWpQkjSxpbsy0wV/1mxfCAss/Yyo3jzmC0qrIZkR/pHiQoWpBEDTyV w9DvjMM4l2L1xL7mmWXJT23Tmr8TmPk6jfOtPA7dbxa2hY+cTACArhj4N33oRVgUaWsr yr6/nr6zOW0ea9aXMCXm5BO9rW5FxXX1GSKbNyu9SKuicI+I+jsdPXKd/W4TSJe0F7Do uJsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=l9/wmoqdugOAzPFfS2Oa8xY/DKCmhfxDgSoP1hNLBtM=; b=E0t/no9ROhL+GbHdq3hJDgOJIhYJKipAmWonEDhdIy7qmpdDrSzfKY0y8DNqnyxoQi Sp3Arl1AV/QiSvBEUWswMuTpK3EtfsjbZb6CZuGZLEETU8Abq2pvPO8CsUlHEI0bCo8/ 1u8q1Y6Ex3RAtf24H+uBwfStukUfArB/xv07aIeDSGOWJLzoJiarLzWRG7iO/gdZs+Ki bZX793A4IuzqwrWpwatpxju3W19Zn+5gQBfcWbpSx3YJhsUCbI0tV2GH1DcLMXpodOwb 7pMsp+TQh26UwIlf5uN2ziOsRkCoBCp73DWTCMDWYavkv5l5CClmZ/2z2/mCvG+9TQBD 6TlA== X-Gm-Message-State: AOAM531HoHGq9sbtcrc95NKfdctp3S5i5l1RW9X8V5tPgDQNtxZFlXKS NtytoJqF4ExzOHgwcfKoyGc3UFy9FN2jlg== X-Google-Smtp-Source: ABdhPJzUtLU6mopzStUBDdi3CffZW2+6L1mJaN3/ZKQhqlMWXn3OkJyWC1rElSf7sx/i9U54FKIwGw== X-Received: by 2002:a7b:c389:: with SMTP id s9mr7431553wmj.159.1607599156485; Thu, 10 Dec 2020 03:19:16 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:16 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:48 +0100 Message-Id: <20201210111657.2276739-31-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 30/39] avcodec/msmpeg4: Make ff_msmpeg4_common_init() thread-safe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libavcodec/msmpeg4.c b/libavcodec/msmpeg4.c index 920f50f32c..ea1083c1a0 100644 --- a/libavcodec/msmpeg4.c +++ b/libavcodec/msmpeg4.c @@ -27,6 +27,8 @@ * MSMPEG4 backend for encoder and decoder */ +#include "libavutil/thread.h" + #include "avcodec.h" #include "idctdsp.h" #include "mpegvideo.h" @@ -53,9 +55,6 @@ static av_cold void init_h263_dc_for_msmpeg4(void) { int level, uni_code, uni_len; - if(ff_v2_dc_chroma_table[255 + 256][1]) - return; - for(level=-256; level<256; level++){ int size, v, l; /* find number of bits */ @@ -108,6 +107,8 @@ static av_cold void init_h263_dc_for_msmpeg4(void) av_cold void ff_msmpeg4_common_init(MpegEncContext *s) { + static AVOnce init_static_once = AV_ONCE_INIT; + switch(s->msmpeg4_version){ case 1: case 2: @@ -146,7 +147,7 @@ av_cold void ff_msmpeg4_common_init(MpegEncContext *s) } //Note the default tables are set in common_init in mpegvideo.c - init_h263_dc_for_msmpeg4(); + ff_thread_once(&init_static_once, init_h263_dc_for_msmpeg4); } /* predict coded block */ From patchwork Thu Dec 10 11:16:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24499 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 11AC444A03C for ; Thu, 10 Dec 2020 13:24:06 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D18E868A8F1; Thu, 10 Dec 2020 13:19:21 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f65.google.com (mail-wm1-f65.google.com [209.85.128.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 446CF68A865 for ; Thu, 10 Dec 2020 13:19:18 +0200 (EET) Received: by mail-wm1-f65.google.com with SMTP id w206so2571739wma.0 for ; Thu, 10 Dec 2020 03:19:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=DyFn660x5v8IPYUOji8uKPtWDtDMsD+bsaYJFXfnLPI=; b=dP+Uf5fXC/y1CoVLXkz6657fLcZmRE9WMN3sS3B1byPdZE1dYnesz0ReKQFdIhLAqU XgemmvSuHjYv/PSlk78agA4KRVNlsB4rsD9e0pZFraXeG76ucrhEPBrI3dpeLHZ6xKGh NFNQzuDYDskEqacQkN+DoD1RV09h39gbBrs8tvJE42caFraCdpQtd+dRc4ZC01QoLT+X VEnRAzqwUDOWsGADBF4EyG8v+I2MQHPblbILy2WZGHr1X/bSneapBPegQSAm4vkLEkBh BwAGFuqiNy6fhBhY1fIZTRgRdk/BzckhE4/1SwCiNyc5vNb2iHox7jqiyIbyW5C+Hfwf Rc3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=DyFn660x5v8IPYUOji8uKPtWDtDMsD+bsaYJFXfnLPI=; b=PWO2L7HWtW999gZ/teiGQL3P5tIsI5lSuShT7zSVJeZ8Q356LB+lZNO5JJcdnywXJy srXomBFDIrmXGGKLPMgzIH6j1Ay88xL7lPdXH7DHM4Qg7QyH6EcHNbWjsJx04OutDJY1 nCVliEdEFTBFdRvnynSJqclYZd9H+GyvH1PTkxxDcKccNvz+8JF+Ebw3zEoeKRLZkv5J M/vwIeqjarHF24AdJW6HMwjnw+iYRh2AO5JM+ldifRAFTDlETAO9iwpMGe6V+vDI3Yr3 B7h9vuiCfGP4ZKJQyVGMB7qrnVEnqJ9x3StfP/BOSCK3aLjgedsUugMNxy480cMVtjaY TOUg== X-Gm-Message-State: AOAM532DBu4KNCJv+FJBx/Ax9inHSWqQvKI5tXpka8i+QWMmKJ5okkKb i+lcrsiZfciR0esxsJls9Q1HMrVPuGzUCg== X-Google-Smtp-Source: ABdhPJyF3JVMi/CGXyukQ/549f2vpOGYlypAR/+Ko1pGq4zm20mPjqoJ4n4fSDWs2dDbm0pD216zrA== X-Received: by 2002:a1c:f617:: with SMTP id w23mr7492446wmc.52.1607599157469; Thu, 10 Dec 2020 03:19:17 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:16 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:49 +0100 Message-Id: <20201210111657.2276739-32-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 31/39] avcodec/msmpeg4: Reindentation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Forgotten in/after f5957f3fe2b8dfda13a9750acc3e3a03cd5d39c9. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4.c | 91 ++++++++++++++++++++++---------------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/libavcodec/msmpeg4.c b/libavcodec/msmpeg4.c index ea1083c1a0..93b6e4bbbb 100644 --- a/libavcodec/msmpeg4.c +++ b/libavcodec/msmpeg4.c @@ -53,56 +53,55 @@ * except that it is inverted. */ static av_cold void init_h263_dc_for_msmpeg4(void) { - int level, uni_code, uni_len; - - for(level=-256; level<256; level++){ - int size, v, l; - /* find number of bits */ - size = 0; - v = abs(level); - while (v) { - v >>= 1; - size++; - } + int level, uni_code, uni_len; + + for (level = -256; level < 256; level++) { + int size, v, l; + /* find number of bits */ + size = 0; + v = abs(level); + while (v) { + v >>= 1; + size++; + } - if (level < 0) - l= (-level) ^ ((1 << size) - 1); - else - l= level; - - /* luminance H.263 */ - uni_code= ff_mpeg4_DCtab_lum[size][0]; - uni_len = ff_mpeg4_DCtab_lum[size][1]; - uni_code ^= (1< 0) { - uni_code<<=size; uni_code|=l; - uni_len+=size; - if (size > 8){ - uni_code<<=1; uni_code|=1; - uni_len++; - } + if (level < 0) + l = (-level) ^ ((1 << size) - 1); + else + l = level; + + /* luminance H.263 */ + uni_code = ff_mpeg4_DCtab_lum[size][0]; + uni_len = ff_mpeg4_DCtab_lum[size][1]; + uni_code ^= (1 << uni_len) - 1; //M$ does not like compatibility + + if (size > 0) { + uni_code <<= size; uni_code |= l; + uni_len += size; + if (size > 8) { + uni_code <<= 1; uni_code |= 1; + uni_len++; } - ff_v2_dc_lum_table[level + 256][0] = uni_code; - ff_v2_dc_lum_table[level + 256][1] = uni_len; - - /* chrominance H.263 */ - uni_code= ff_mpeg4_DCtab_chrom[size][0]; - uni_len = ff_mpeg4_DCtab_chrom[size][1]; - uni_code ^= (1< 0) { - uni_code<<=size; uni_code|=l; - uni_len+=size; - if (size > 8){ - uni_code<<=1; uni_code|=1; - uni_len++; - } + } + ff_v2_dc_lum_table[level + 256][0] = uni_code; + ff_v2_dc_lum_table[level + 256][1] = uni_len; + + /* chrominance H.263 */ + uni_code = ff_mpeg4_DCtab_chrom[size][0]; + uni_len = ff_mpeg4_DCtab_chrom[size][1]; + uni_code ^= (1 << uni_len) - 1; //M$ does not like compatibility + + if (size > 0) { + uni_code <<= size; uni_code |= l; + uni_len +=size; + if (size > 8) { + uni_code <<= 1; uni_code |= 1; + uni_len++; } - ff_v2_dc_chroma_table[level + 256][0] = uni_code; - ff_v2_dc_chroma_table[level + 256][1] = uni_len; - } + ff_v2_dc_chroma_table[level + 256][0] = uni_code; + ff_v2_dc_chroma_table[level + 256][1] = uni_len; + } } av_cold void ff_msmpeg4_common_init(MpegEncContext *s) From patchwork Thu Dec 10 11:16:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24500 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 94E4E44A39A for ; Thu, 10 Dec 2020 13:24:16 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9C1E268A927; Thu, 10 Dec 2020 13:19:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FF4768A8B4 for ; Thu, 10 Dec 2020 13:19:19 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id a3so4892039wmb.5 for ; Thu, 10 Dec 2020 03:19:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=Q/w6zFsTDYxydJT1VO42iSCcynP++MIgAUMqwZqPoFI=; b=bpGS+HTF04Em5A6BslIHiCbcKsVPzN0hJfr5pwiGcQLnXTMQ2OGg4OF+/Zqw3zDg5u unU9mezoBkF1024X4HK8fTDOYwP8HmWdLRS/Rd93VVIJKjnADDQ+++3lhVMMzTZNwn24 knFTDHvJ9obLXHkERO2eDczZh570ps3W1hG55QbEsXtTk3Vmra1BMOvvZlFJZuRAMgRE /2eLDgeSObqdY59PDP2Xs0bsA5wUS6wh3fmBPWKcB5ZoKrbuKtkz3E24a10+m+wVOD65 9uEi678mXXB8qB+FoFhDp1gqrhndjUiHR5fhsaZZrcUI0+G1PNDrQs+CJTdLHkkXnPVG R9Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=Q/w6zFsTDYxydJT1VO42iSCcynP++MIgAUMqwZqPoFI=; b=e8tBO9WWyAqU3UhbpcDtDwDt0oR/HlyQFnIh3OCmzMJN4UpKI/f/ZLjiFk+vJ4tmGR UVE4eAEt65Lgkgff62Wbc5vPtJU3f9m4tmorrtkJ85M5vgBAOSIydDo4BoDu0zXsDUIT a13DU5n/rpOotsTEUfCCuYCJiDQtvVHZrIIW1aS1rJaOGdiVCh814xiK50ofx9PHZ8JG 1jQWpkHMDg/VYdbrO3WFB0LJ9onhP7qTPg7XPLYiu8TItZuhAQ/Oso2Zh4CU6ZvBhUw+ nxe07guMbcaMu0wjm8IFq/WERwm3yI4RSZzP4LRIZadDBGsBlfAudQhMVqGT3jJNITs3 BiYA== X-Gm-Message-State: AOAM533EzwkjFGckzbp538r1GDMqfG8H2nFs6jjfk/uR5yZ9iq3bI9af y477Y73ESK4lGCIdfWsvUCoV+yGvrM7kNQ== X-Google-Smtp-Source: ABdhPJxNaVUCQY/cESdiDuupHGILdxD0lTdkFDQnn6x4mdSx7TrxnISxFifJoY2PPlmxcSjUdxPO8g== X-Received: by 2002:a7b:c198:: with SMTP id y24mr7740583wmi.151.1607599158632; Thu, 10 Dec 2020 03:19:18 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:18 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:50 +0100 Message-Id: <20201210111657.2276739-33-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 32/39] avcodec/msmpeg4enc: Don't use code for static init that can fail X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 3 +-- libavcodec/msmpeg4.h | 2 +- libavcodec/msmpeg4enc.c | 23 ++++++++--------------- 3 files changed, 10 insertions(+), 18 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 8fb415f42b..8f4876b0ca 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1008,8 +1008,7 @@ FF_ENABLE_DEPRECATION_WARNINGS if (CONFIG_H263_ENCODER && s->out_format == FMT_H263) ff_h263_encode_init(s); if (CONFIG_MSMPEG4_ENCODER && s->msmpeg4_version) - if ((ret = ff_msmpeg4_encode_init(s)) < 0) - return ret; + ff_msmpeg4_encode_init(s); if ((CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER) && s->out_format == FMT_MPEG1) ff_mpeg1_encode_init(s); diff --git a/libavcodec/msmpeg4.h b/libavcodec/msmpeg4.h index bcdb967401..e111088574 100644 --- a/libavcodec/msmpeg4.h +++ b/libavcodec/msmpeg4.h @@ -50,7 +50,7 @@ void ff_msmpeg4_encode_motion(MpegEncContext * s, int mx, int my); int ff_msmpeg4_coded_block_pred(MpegEncContext * s, int n, uint8_t **coded_block_ptr); -int ff_msmpeg4_encode_init(MpegEncContext *s); +void ff_msmpeg4_encode_init(MpegEncContext *s); void ff_msmpeg4_encode_picture_header(MpegEncContext *s, int picture_number); void ff_msmpeg4_encode_ext_header(MpegEncContext *s); void ff_msmpeg4_encode_mb(MpegEncContext *s, int16_t block[6][64], diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c index 2c61735d9d..7a3858b966 100644 --- a/libavcodec/msmpeg4enc.c +++ b/libavcodec/msmpeg4enc.c @@ -32,7 +32,6 @@ #include "libavutil/attributes.h" #include "libavutil/avutil.h" -#include "libavutil/mem.h" #include "mpegvideo.h" #include "h263.h" #include "internal.h" @@ -46,13 +45,11 @@ static uint8_t rl_length[NB_RL_TABLES][MAX_LEVEL+1][MAX_RUN+1][2]; /* build the table which associate a (x,y) motion vector to a vlc */ -static av_cold int init_mv_table(MVTable *tab) +static av_cold void init_mv_table(MVTable *tab, uint16_t table_mv_index[4096]) { int i, x, y; - tab->table_mv_index = av_malloc(sizeof(uint16_t) * 4096); - if (!tab->table_mv_index) - return AVERROR(ENOMEM); + tab->table_mv_index = table_mv_index; /* mark all entries as not used */ for(i=0;i<4096;i++) @@ -63,8 +60,6 @@ static av_cold int init_mv_table(MVTable *tab) y = tab->table_mvy[i]; tab->table_mv_index[(x << 6) | y] = i; } - - return 0; } void ff_msmpeg4_code012(PutBitContext *pb, int n) @@ -118,10 +113,10 @@ static int get_size_of_code(MpegEncContext * s, RLTable *rl, int last, int run, return size; } -av_cold int ff_msmpeg4_encode_init(MpegEncContext *s) +av_cold void ff_msmpeg4_encode_init(MpegEncContext *s) { static int init_done=0; - int i, ret; + int i; ff_msmpeg4_common_init(s); if(s->msmpeg4_version>=4){ @@ -130,12 +125,12 @@ av_cold int ff_msmpeg4_encode_init(MpegEncContext *s) } if (!init_done) { + static uint16_t mv_index_tables[2][4096]; /* init various encoding tables */ init_done = 1; - if ((ret = init_mv_table(&ff_mv_tables[0])) < 0) - return ret; - if ((ret = init_mv_table(&ff_mv_tables[1])) < 0) - return ret; + init_mv_table(&ff_mv_tables[0], mv_index_tables[0]); + init_mv_table(&ff_mv_tables[1], mv_index_tables[1]); + for(i=0;i X-Patchwork-Id: 24501 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id BB35544A39A for ; Thu, 10 Dec 2020 13:24:27 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AB71A68A98D; Thu, 10 Dec 2020 13:19:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 83F6368A800 for ; Thu, 10 Dec 2020 13:19:20 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id y17so5042955wrr.10 for ; Thu, 10 Dec 2020 03:19:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=yrhvCzthtGjo2HOxPPngNN9Vf6DuVpJvrLUG4FTe79s=; b=rymC/xxBCHasMxdcVaUVoPFzyqh7WvlGEPTPWialOFimE9OhXlZzYT7+fjj9JJNjy6 w/EPqv6DQVZ7t2AP3WrolnWru8jh2c7oCkRuDXvtbEmHMg8anjCEsk8GC4wYAZuwziTR f35ZXAbstZL+JlYYue6hQ44YfTA0Lp5A/wi3RfqLhpYaJnbzrFCcLk5M3lfud3RfNpCM Lv6WsVHdc5zWQtNjnXqm+S1+vmT8vuT0+P+3jjYo6eFsbcow1O8YiwlXyJlIOCwZIOOD KIfcCPCy67CklwPa8NsDKDGfcfQ24+oj33d+Wmtn67Wk7Nl7GHeas9ykkLGviAZStEGr avMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=yrhvCzthtGjo2HOxPPngNN9Vf6DuVpJvrLUG4FTe79s=; b=OD9+Nra1fzGeyk1V1lI7qjoEb9QoaL7ewbZPIaGbdGtT3uxINzJCovvsvOcbIPwN5P y3lpRYVWKBMdoAbncC8JreU0etgSYDJpOn3wOlq35fHs/ZB3iBAMYjaPqmSEViPNSUuE 9oHdMOmtD/03MTAq2/lzb5zD8ob7E0kfbdziBw3scxBoho5eXW+MtNRq/szHsKhKWMyk sNm6CXgXTvmpeX9N02FTsNIbLYMhVNz6UxeaAMtL5pluVmqu+r5SQ9rLQPV2LF0PXrwA vv1qi+VM9DlQfILaNMkIn2khABfoYbB87raOXvYEXK/FNWaLrQ0cJCsh3xMndBbHW3gt D8pg== X-Gm-Message-State: AOAM5325AieeVRim1WaiFy0PfaODcb5Bc1eMaI/q3Z0ArXgr00jPJjC8 LhBu47FgS5vPTWOpAmwhNO3RuRCdpTemrg== X-Google-Smtp-Source: ABdhPJyA6bdWe4xK0a43gQ2MqnBLgvwa+DUujfKn0U7Hr5pMgfRSKH4VzKKUF979XWXU/X2+09SbXg== X-Received: by 2002:a5d:5385:: with SMTP id d5mr3769219wrv.384.1607599159735; Thu, 10 Dec 2020 03:19:19 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:19 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:51 +0100 Message-Id: <20201210111657.2276739-34-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 33/39] avcodec/msmpeg4: Factor out common RLTable initialization code X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, both the msmpeg4 decoders and encoders initialized several RLTables common to them (the decoders also initialized the VLCs of these RLTables). This is an obstacle to making these codecs init-threadsafe. So move this initialization to ff_msmpeg4_common_init() that already contains this initialization code. This allows to reuse the AVOnce used for initializing ff_v2_dc_lum/chroma_table which automatically makes initializing these RLTables thread-safe. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4.c | 12 +++++++++++- libavcodec/msmpeg4data.c | 1 - libavcodec/msmpeg4data.h | 1 - libavcodec/msmpeg4dec.c | 5 +---- libavcodec/msmpeg4enc.c | 3 --- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/libavcodec/msmpeg4.c b/libavcodec/msmpeg4.c index 93b6e4bbbb..91581dcfe2 100644 --- a/libavcodec/msmpeg4.c +++ b/libavcodec/msmpeg4.c @@ -104,6 +104,16 @@ static av_cold void init_h263_dc_for_msmpeg4(void) } } +static av_cold void msmpeg4_common_init_static(void) +{ + static uint8_t rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3]; + + for (int i = 0; i < NB_RL_TABLES; i++) + ff_rl_init(&ff_rl_table[i], rl_table_store[i]); + + init_h263_dc_for_msmpeg4(); +} + av_cold void ff_msmpeg4_common_init(MpegEncContext *s) { static AVOnce init_static_once = AV_ONCE_INIT; @@ -146,7 +156,7 @@ av_cold void ff_msmpeg4_common_init(MpegEncContext *s) } //Note the default tables are set in common_init in mpegvideo.c - ff_thread_once(&init_static_once, init_h263_dc_for_msmpeg4); + ff_thread_once(&init_static_once, msmpeg4_common_init_static); } /* predict coded block */ diff --git a/libavcodec/msmpeg4data.c b/libavcodec/msmpeg4data.c index b9c1d8ec0b..adfccb7977 100644 --- a/libavcodec/msmpeg4data.c +++ b/libavcodec/msmpeg4data.c @@ -33,7 +33,6 @@ uint32_t ff_v2_dc_lum_table[512][2]; uint32_t ff_v2_dc_chroma_table[512][2]; -uint8_t ff_static_rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3]; VLC ff_msmp4_mb_i_vlc; VLC ff_msmp4_dc_luma_vlc[2]; diff --git a/libavcodec/msmpeg4data.h b/libavcodec/msmpeg4data.h index 02199d0123..95d009aaa7 100644 --- a/libavcodec/msmpeg4data.h +++ b/libavcodec/msmpeg4data.h @@ -60,7 +60,6 @@ extern const uint8_t ff_wmv1_scantable[WMV1_SCANTABLE_COUNT][64]; #define NB_RL_TABLES 6 extern RLTable ff_rl_table[NB_RL_TABLES]; -extern uint8_t ff_static_rl_table_store[NB_RL_TABLES][2][2 * MAX_RUN + MAX_LEVEL + 3]; extern uint32_t ff_v2_dc_lum_table[512][2]; extern uint32_t ff_v2_dc_chroma_table[512][2]; diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index d059e8eecc..f2779b8fdd 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -300,7 +300,7 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) { MpegEncContext *s = avctx->priv_data; static volatile int done = 0; - int i, ret; + int ret; MVTable *mv; if ((ret = av_image_check_size(avctx->width, avctx->height, 0, avctx)) < 0) @@ -312,9 +312,6 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) ff_msmpeg4_common_init(s); if (!done) { - for(i=0;i X-Patchwork-Id: 24502 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 7137D44A39A for ; Thu, 10 Dec 2020 13:24:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 88C4068A965; Thu, 10 Dec 2020 13:19:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D07A568A8E6 for ; Thu, 10 Dec 2020 13:19:21 +0200 (EET) Received: by mail-wr1-f47.google.com with SMTP id r14so5070065wrn.0 for ; Thu, 10 Dec 2020 03:19:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=PGtrzwXcH0Hqz10RactpJh7IPMxPkMBhNRQ6n28QSik=; b=fMXsPRRzZ+o+tXojz2zP3YMsiZIRvI1TthbzaaAbvSriKEdaLfBduUoow7To2yR6iO 32/xZn/EPGLyVai+H9LCBRLsykJOQuOGkaaXFrbzDGqJLkzXeKQvQEikdnJD456ZdI7S Z/2BVEFWkBbjNshUvgv/x7Ws3+/dd90vvEvkRDxImz+tVvrSqpBEshNqe3/eJvfC/SKF pknofLdmIlVgpq09ZUj8rBTMEet2/pgrYaU9yqu7jl6V6X18R5fWv70ew2s5Ij9Zsv66 MRRg2WF4oAA74sZ62Tc4uAdRIbCiCdo5zSysC46iX4T6+lZQtsdKmdFHtXcT4iNRX4mh Uukg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=PGtrzwXcH0Hqz10RactpJh7IPMxPkMBhNRQ6n28QSik=; b=MIyqZmLYRPHODAZkejkxGwyrUonlBjN6BvSTBVno75XXsgHZV+9rb6v6xflvChKuiJ qJ0z8V0QmzJz49Jo3+HDrWZtFuO2sLVyUWiIBPBq/tG/ajWJEJ6ErC7vORYTZ0Tf92iC QcnhuKFpdGGWsEny34tVjrXwLbxNNyQLFAqq2Vo2pnFb/wPFy3QzGUXrSoc7Nn7Y1dKK uGwMRLynUBaPIZLGGqc5NgRp/KQ8VzyAKohsegBEfKZ5rDoYzkLEEfBL7hYOVUrRmb8C 7Tw2g+wOvYlvE0LSYNIWPl/MhpdlEsZ4xW0tFTUa8mBaFXWjZio04y9SIv59OVMWwBZc Khhg== X-Gm-Message-State: AOAM533UXI+TnG4IS2dXr7q4CjqRdIlLJ1T6UHIpn+C2cxnLbC0BkXK8 h0QHVCKnTL6JRC3hK4tOS/rnQaWdKamIfg== X-Google-Smtp-Source: ABdhPJyvdRsGZTNz5de9quWfAD9cp9hy842BlW3XRlzW/GtlC1xIwG1mJ1xCF42SjHQGmkaNMKVSQg== X-Received: by 2002:a5d:5147:: with SMTP id u7mr7826978wrt.114.1607599160848; Thu, 10 Dec 2020 03:19:20 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:20 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:52 +0100 Message-Id: <20201210111657.2276739-35-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 34/39] avcodec/msmpeg4enc: Make msmpeg4 encoders init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo_enc.c | 6 +++--- libavcodec/msmpeg4enc.c | 33 +++++++++++++++++++-------------- libavcodec/wmv2enc.c | 2 +- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 8f4876b0ca..e3f217c22d 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -4836,7 +4836,7 @@ AVCodec ff_msmpeg4v2_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &msmpeg4v2_class, }; @@ -4857,7 +4857,7 @@ AVCodec ff_msmpeg4v3_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &msmpeg4v3_class, }; @@ -4878,7 +4878,7 @@ AVCodec ff_wmv1_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &wmv1_class, }; diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c index 6d9911c2fb..3fd4d38820 100644 --- a/libavcodec/msmpeg4enc.c +++ b/libavcodec/msmpeg4enc.c @@ -32,6 +32,7 @@ #include "libavutil/attributes.h" #include "libavutil/avutil.h" +#include "libavutil/thread.h" #include "mpegvideo.h" #include "h263.h" #include "internal.h" @@ -72,7 +73,9 @@ void ff_msmpeg4_code012(PutBitContext *pb, int n) } } -static int get_size_of_code(MpegEncContext * s, RLTable *rl, int last, int run, int level, int intra){ +static int get_size_of_code(const RLTable *rl, int last, int run, + int level, int intra) +{ int size=0; int code; int run_diff= intra ? 0 : 1; @@ -113,21 +116,10 @@ static int get_size_of_code(MpegEncContext * s, RLTable *rl, int last, int run, return size; } -av_cold void ff_msmpeg4_encode_init(MpegEncContext *s) +static av_cold void msmpeg4_encode_init_static(void) { - static int init_done=0; int i; - - ff_msmpeg4_common_init(s); - if(s->msmpeg4_version>=4){ - s->min_qcoeff= -255; - s->max_qcoeff= 255; - } - - if (!init_done) { static uint16_t mv_index_tables[2][4096]; - /* init various encoding tables */ - init_done = 1; init_mv_table(&ff_mv_tables[0], mv_index_tables[0]); init_mv_table(&ff_mv_tables[1], mv_index_tables[1]); @@ -138,12 +130,25 @@ av_cold void ff_msmpeg4_encode_init(MpegEncContext *s) for(run=0; run<=MAX_RUN; run++){ int last; for(last=0; last<2; last++){ - rl_length[i][level][run][last]= get_size_of_code(s, &ff_rl_table[ i], last, run, level, 0); + rl_length[i][level][run][last] = get_size_of_code(&ff_rl_table[i], last, run, level, 0); } } } } +} + +av_cold void ff_msmpeg4_encode_init(MpegEncContext *s) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + + ff_msmpeg4_common_init(s); + if(s->msmpeg4_version>=4){ + s->min_qcoeff= -255; + s->max_qcoeff= 255; } + + /* init various encoding tables */ + ff_thread_once(&init_static_once, msmpeg4_encode_init_static); } static void find_best_tables(MpegEncContext * s) diff --git a/libavcodec/wmv2enc.c b/libavcodec/wmv2enc.c index 312dbc0834..781873a4b3 100644 --- a/libavcodec/wmv2enc.c +++ b/libavcodec/wmv2enc.c @@ -231,7 +231,7 @@ AVCodec ff_wmv2_encoder = { .init = wmv2_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, }; From patchwork Thu Dec 10 11:16:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24503 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 090BA44A39A for ; Thu, 10 Dec 2020 13:24:50 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 728EC68A96A; Thu, 10 Dec 2020 13:19:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B6E0B68A96E for ; Thu, 10 Dec 2020 13:19:22 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id w5so1321456wrm.11 for ; Thu, 10 Dec 2020 03:19:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=p0od2AXWL+Vmpk4I7sy3Z0pl/d1ZA199Cv7/lbnzcCI=; b=QAdfIV5cSdjHOFnpyxRfollVbkL6zfhxNjMBWmxX/4r0PL8ir00j5HuUQ7gPkL8MaQ S6hgUD3/1f5APjfhvkMPmozwd0Unt1WyZIyhv6+/UrDI1cEh5Q0KGLWybO4ztVpG0hGN 96LZw+cdxgSwzbGAw5c8D7VI4Y27uKZj67Kq1vFWFFegOk8yirQ17Njjvsw72BZsA+/a wqBIdYxWgiSK9cQ0ZoWPsBzjX+Fge4mi1FeXpl48LSSTTyt4QNlk05ihy/GKvJ0t7oZ8 0GridThg8SIcxSpRjv3DbAl/e1F3VLiW3hkjTuvEK3gSn1xaMENK5JWgwJSOSN79e9Sh q7aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=p0od2AXWL+Vmpk4I7sy3Z0pl/d1ZA199Cv7/lbnzcCI=; b=goW1P5hZENonCRu3zkBZT8hzymxgpVJbnvC4AO9iOiOjq0IbDryUxW3WjKwN6rQ0mZ aFt1EQ4/2OGoTrGZBGy0sIwz2DU7wungSMqeYkVE1/reHKAFLWLUGFEViYDOk2szUKtC apQ+TzNaTimT/Mj0tFtOG7yeCe9pfdg5+DiUPRVdEJvBUgJtxhgOQ/ga+9gIe4gKtoN3 5Eui/MK5gUylN90SNprziHGM9e+OqncJmp3RQrkJaCGqhqH8FnXm58zZFWP8bO5ridUX euo82n4ngGcTdVdyYC6aCE8CSxU7PIed6QsV/I5Q91sfJ7gjm/qbm1HfqJEeXTPZYPTq GM6w== X-Gm-Message-State: AOAM5328/fs/dCsrYhULKzldvKgtxWPVwlQlKzAP5sRNGuZSwjB/fqz+ 6ekUx3GP1VWMxhOcLn2iMlwmpDpu23Djlw== X-Google-Smtp-Source: ABdhPJywIhzUWNnl3Aq4HAwPc6BCx/s2bSh2LX3EisOqK50An8V3u8cuuqvqXHWMDfE4H3Cb46FsWQ== X-Received: by 2002:adf:d081:: with SMTP id y1mr7702091wrh.388.1607599161761; Thu, 10 Dec 2020 03:19:21 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:21 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:53 +0100 Message-Id: <20201210111657.2276739-36-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 35/39] avcodec/msmpeg4enc: Reindent after the last commit X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4enc.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/libavcodec/msmpeg4enc.c b/libavcodec/msmpeg4enc.c index 3fd4d38820..0b000e9017 100644 --- a/libavcodec/msmpeg4enc.c +++ b/libavcodec/msmpeg4enc.c @@ -118,23 +118,19 @@ static int get_size_of_code(const RLTable *rl, int last, int run, static av_cold void msmpeg4_encode_init_static(void) { - int i; - static uint16_t mv_index_tables[2][4096]; - init_mv_table(&ff_mv_tables[0], mv_index_tables[0]); - init_mv_table(&ff_mv_tables[1], mv_index_tables[1]); - - for(i=0; i X-Patchwork-Id: 24504 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 81E9D44A39A for ; Thu, 10 Dec 2020 13:25:00 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5AE1268A9C9; Thu, 10 Dec 2020 13:19:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 17D6C68A964 for ; Thu, 10 Dec 2020 13:19:23 +0200 (EET) Received: by mail-wr1-f48.google.com with SMTP id r14so5070210wrn.0 for ; Thu, 10 Dec 2020 03:19:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=UwrSOAufXk9n2fC06zCpgVk8G5awhzgvO7aXoCoo6DU=; b=rFIz90JiKhLghDNeBn4HS1ntgzAiveP54F0pyrGX3qxpJkryR+R930/K7XWfZxF/2/ gFhEzyIWjcDaSuyz5mT3QMgmwsAFNg6mXKMXoshJLVxbj1EcjcMnsjOLld6oV1zNP5zs KIfkkMpMrBqbGgk2qTL/JWCnw96FWk/DV2e0MeUInn5ccZQN1Y/cQ9nddF+eNdLbvUKG 9kC6CA0lulQZPf4dbBz59KckXauesvapPzF11nrCX+wKO5xAdGPT5FmiluoNTe3k1SPu csT0psmxaiKNVNHfvnsBpQSkDrwfCRTphkytXHTPkbXBuuG8INEOJiqKI4dn2c7i0HKI k5dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=UwrSOAufXk9n2fC06zCpgVk8G5awhzgvO7aXoCoo6DU=; b=DSGcaQTjvCojez9tCxrmMCTaPBjYhQ2B0e3hggzO/dW+dHh1a8K2W+mT1aY8YGfKVW YfwMIX6D/aLgK74LNWUiA1qoRKv5Fd+xSmui18qt+9Nbb83W7wt6VrsDWfKWoax9wzeE Jak0uuOo2gVPaYJSf6QF61pvSfNITuaPjMUaFl7X9jWmPKmxYlZQ+6lXFSab2zB/Un+s w4lUoWvKUYfm8haQCqOOrbuJrjSAIDG3GlLPrX4w5JFM8RVEB6XOrRfX+ComKwbAnQAF RB/R6FOG9F8bxFrYXe0F75GANHFcfWdJqIO/jSOKUxBHWypReCQT+duXPHImNXym6WIb 4Tug== X-Gm-Message-State: AOAM531b1k8MRhrVsvl5YumrZTpkYS1Xwz6uHzO6ZwHXgMn17LnNHm9m wjvdShIj3Yn5fDY9jzNn8OO1jesoKcW0tg== X-Google-Smtp-Source: ABdhPJxbKYtEcnbcVmVYF/xUtYKuE7BFaasqt2jQblZW4RD8QPbM7xyPE4ASomTASaGBDVlet+aXig== X-Received: by 2002:a05:6000:124e:: with SMTP id j14mr1248266wrx.310.1607599163080; Thu, 10 Dec 2020 03:19:23 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:22 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:54 +0100 Message-Id: <20201210111657.2276739-37-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 36/39] avcodec/speedhqenc: Call correct function X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Up until now, the SpeedHQ encoder called a wrong function for init: void ff_init_uni_ac_vlc(const uint8_t huff_size_ac[256], uint8_t *uni_ac_vlc_len); Yet the first argument actually used is of type RLTable; the size of said struct is less than 256 if the size of a pointer is four, leading to an access beyond the end of the RLTable. This commit fixes this by calling the actually intended function: init_uni_ac_vlc() from mpeg12enc.c. It was intended to use this function [1], yet doing so was forgotten when the patch was actually applied. [1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2020-July/266187.html Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 2 +- libavcodec/mpeg12.h | 1 + libavcodec/mpeg12enc.c | 11 ++++++++--- libavcodec/speedhqenc.c | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 7f018e313b..450781886d 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -626,7 +626,7 @@ OBJS-$(CONFIG_SONIC_DECODER) += sonic.o OBJS-$(CONFIG_SONIC_ENCODER) += sonic.o OBJS-$(CONFIG_SONIC_LS_ENCODER) += sonic.o OBJS-$(CONFIG_SPEEDHQ_DECODER) += speedhq.o mpeg12.o mpeg12data.o simple_idct.o -OBJS-$(CONFIG_SPEEDHQ_ENCODER) += speedhq.o mpeg12data.o speedhqenc.o +OBJS-$(CONFIG_SPEEDHQ_ENCODER) += speedhq.o mpeg12data.o mpeg12enc.o speedhqenc.o OBJS-$(CONFIG_SP5X_DECODER) += sp5xdec.o OBJS-$(CONFIG_SRGC_DECODER) += mscc.o OBJS-$(CONFIG_SRT_DECODER) += srtdec.o ass.o htmlsubtitles.o diff --git a/libavcodec/mpeg12.h b/libavcodec/mpeg12.h index 76fc0bf955..4cd48b5d20 100644 --- a/libavcodec/mpeg12.h +++ b/libavcodec/mpeg12.h @@ -35,6 +35,7 @@ void ff_mpeg12_common_init(MpegEncContext *s); } void ff_init_2d_vlc_rl(RLTable *rl, unsigned static_size, int flags); +void ff_mpeg1_init_uni_ac_vlc(const RLTable *rl, uint8_t *uni_ac_vlc_len); static inline int decode_dc(GetBitContext *gb, int component) { diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index e38cd074e1..a05c2db6cb 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -27,6 +27,7 @@ #include +#include "config.h" #include "libavutil/attributes.h" #include "libavutil/avassert.h" #include "libavutil/log.h" @@ -44,6 +45,7 @@ #include "mpegvideo.h" #include "profiles.h" +#if CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER static const uint8_t svcd_scan_offset_placeholder[] = { 0x10, 0x0E, 0x00, 0x80, 0x81, 0x00, 0x80, 0x81, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, @@ -61,8 +63,9 @@ static uint32_t mpeg1_lum_dc_uni[512]; static uint32_t mpeg1_chr_dc_uni[512]; #define A53_MAX_CC_COUNT 0x1f +#endif /* CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER */ -static av_cold void init_uni_ac_vlc(RLTable *rl, uint8_t *uni_ac_vlc_len) +av_cold void ff_mpeg1_init_uni_ac_vlc(const RLTable *rl, uint8_t *uni_ac_vlc_len) { int i; @@ -97,6 +100,7 @@ static av_cold void init_uni_ac_vlc(RLTable *rl, uint8_t *uni_ac_vlc_len) } } +#if CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER static int find_frame_rate_index(MpegEncContext *s) { int i; @@ -1039,8 +1043,8 @@ static av_cold void mpeg12_encode_init_static(void) ff_rl_init(&ff_rl_mpeg1, mpeg12_static_rl_table_store[0]); ff_rl_init(&ff_rl_mpeg2, mpeg12_static_rl_table_store[1]); - init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); - init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); + ff_mpeg1_init_uni_ac_vlc(&ff_rl_mpeg1, uni_mpeg1_ac_vlc_len); + ff_mpeg1_init_uni_ac_vlc(&ff_rl_mpeg2, uni_mpeg2_ac_vlc_len); /* build unified dc encoding tables */ for (int i = -255; i < 256; i++) { @@ -1216,3 +1220,4 @@ AVCodec ff_mpeg2video_encoder = { .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .priv_class = &mpeg2_class, }; +#endif /* CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER */ diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c index 9807024980..a5bedd5301 100644 --- a/libavcodec/speedhqenc.c +++ b/libavcodec/speedhqenc.c @@ -96,7 +96,7 @@ static av_cold void speedhq_init_static_data(void) speedhq_chr_dc_uni[i + 255] = bits + (code << 8); } - ff_init_uni_ac_vlc(&ff_rl_speedhq, uni_speedhq_ac_vlc_len); + ff_mpeg1_init_uni_ac_vlc(&ff_rl_speedhq, uni_speedhq_ac_vlc_len); } av_cold int ff_speedhq_encode_init(MpegEncContext *s) From patchwork Thu Dec 10 11:16:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24506 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 526E444AFC6 for ; Thu, 10 Dec 2020 13:25:11 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5E5F168A9E8; Thu, 10 Dec 2020 13:19:27 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C7EBE68A13F for ; Thu, 10 Dec 2020 13:19:24 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id r3so5080775wrt.2 for ; Thu, 10 Dec 2020 03:19:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=z4B7XoHpfpYfrDlZFZHhTGgJ6FwCLa0QFwygJZ1s+Bs=; b=o5WDB6Ar0y/LB5QfBsvDjJhp6//MY0JCZq/QCeM6VB/EBYz6TYGJ/IC9C6+3u56WYF EpFJBnhmCs9iHplmNP9pPDhxJe4k6v6XIiIWwok0anrcrBdg0AT4Zg/4nmiVdrJ2kVbY smdNZfM19WNnp2WPU2eWpPBEQM1+8nSs2zVnYKzoW7520SnYMtNiJiGedjKFwB0LoKBG SFSH8cBSrNVyEFdIZFEx5y5Qcwkxc+29DA7ua4MnKLm1R7LSgcRJeNAoZPTJwujCIvc+ E+ixfw/abjJxDuurjVRFUUpRP013hajRNVyFpkwcqStOTwfVF29LzHsw3HMMRUrn4i0W 8REw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=z4B7XoHpfpYfrDlZFZHhTGgJ6FwCLa0QFwygJZ1s+Bs=; b=opl5QqzB2EFYj6y4J2AGQdnLXI0QCTTjD+jyULkg5dujdND+F+6XHGaLNOhElPaMLE RDDSDO0WXXfP0Aen62qFrh7v1xRlIvO26yR9bP0amZgfHE+Q+e/xC4V7wQyqfKenNTmE 0MKRZgGLKtvUI3Oz3dHb2OTE3kFIhyxNjMQ3rLJ74VaZAaW060U4chylGS/AjHKCTQdu zzxeyT5eCZfb0Nq3/C1h2Ceb/dBGjkpBTjfHNWbdhr7aXy4kbvFCm0F/DoGIrrThnDyM 6xY8nVdPNgwJv6Uf9NlRP0g8tdihFK3g1JBDlQ5t+rQvDH+uQ5+C0amWmkR1bPgoQymU hjrQ== X-Gm-Message-State: AOAM532LOJUV3hDwu+v1Kp9qlFKV/onBy6AzxxvLniMpSogefF8le3oj a2heinfxiJNDt+TtxoKaSELkBh4wTcaSQA== X-Google-Smtp-Source: ABdhPJynyi4AtSdzVpJzmH5Zawt1lCMQDbsEtAPLncVNpTyOg1AH/adk4KkMYuVzrId/GfZrTytV8Q== X-Received: by 2002:a5d:510d:: with SMTP id s13mr7785107wrt.380.1607599163977; Thu, 10 Dec 2020 03:19:23 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:23 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:55 +0100 Message-Id: <20201210111657.2276739-38-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 37/39] avcodec/speedhq, speedhqenc: Make codecs init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The SpeedHQ decoder uses and initializes a RLTable's VLC, yet it also initializes other parts of the RLTable that it does not use. This has downsides besides being wasteful: Because the SpeedHQ encoder also initializes these additional fields, there is a potential for data races (and therefore undefined behaviour). In fact, removing the superfluous initializations from the decoder automatically makes both the decoder and the encoder init-threadsafe. This commit does so. Signed-off-by: Andreas Rheinhardt --- libavcodec/speedhq.c | 4 +--- libavcodec/speedhqenc.c | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/libavcodec/speedhq.c b/libavcodec/speedhq.c index 0c08894315..0312ed6f0b 100644 --- a/libavcodec/speedhq.c +++ b/libavcodec/speedhq.c @@ -152,8 +152,6 @@ static const uint8_t unscaled_quant_matrix[64] = { 27, 29, 35, 38, 46, 56, 69, 83 }; -static uint8_t speedhq_static_rl_table_store[2][2*MAX_RUN + MAX_LEVEL + 3]; - static VLC dc_lum_vlc_le; static VLC dc_chroma_vlc_le; static VLC dc_alpha_run_vlc_le; @@ -570,7 +568,6 @@ static av_cold void speedhq_static_init(void) ff_mpeg12_vlc_dc_chroma_code, 2, 2, INIT_VLC_OUTPUT_LE, 514); - ff_rl_init(&ff_rl_speedhq, speedhq_static_rl_table_store); INIT_2D_VLC_RL(ff_rl_speedhq, 674, INIT_VLC_LE); compute_alpha_vlcs(); @@ -655,4 +652,5 @@ AVCodec ff_speedhq_decoder = { .init = speedhq_decode_init, .decode = speedhq_decode_frame, .capabilities = AV_CODEC_CAP_DR1, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c index a5bedd5301..dbc638cb82 100644 --- a/libavcodec/speedhqenc.c +++ b/libavcodec/speedhqenc.c @@ -298,7 +298,7 @@ AVCodec ff_speedhq_encoder = { .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_NONE From patchwork Thu Dec 10 11:16:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24508 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 55CDD44AFC6 for ; Thu, 10 Dec 2020 13:25:21 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4B67B68A9D9; Thu, 10 Dec 2020 13:19:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f65.google.com (mail-wr1-f65.google.com [209.85.221.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D06C668A9C7 for ; Thu, 10 Dec 2020 13:19:25 +0200 (EET) Received: by mail-wr1-f65.google.com with SMTP id m5so5061878wrx.9 for ; Thu, 10 Dec 2020 03:19:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=TSlNDAQSYi68opEMK37WUpKwL/AfDM3KV+Kkvs2vUk8=; b=kKK8hdMxt+smDsDThmMKZjQ33VotnrW8OPZCVmH6IoUqFppOY8uRLzCjj1XyTMr1ni ibXo84nkgc01YOUvbTlv/01xrykyKJJ2+ic24BDPvwMGjZbxgVm2PVjfyH4wGlN8GHcY C5ZhWb60297XQ9NCtAlFOis3V30TVO2ekIYwAceDuXq7BZORUJXvmH8Huct/eCRkusYA 3VeCyKNoYouAMpi6H+QC72cflmgCELwvyk4wiqUZKqlkKxdaGDAzo8g6r+XX13mudSYv 1SZvY9gFEDwktiATluawGpKGdv8O2pSu2Rz2NXKRGN7SR4LIxwTpUphrkFOqIvTSjAxN ShWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=TSlNDAQSYi68opEMK37WUpKwL/AfDM3KV+Kkvs2vUk8=; b=HCSkqaEvISO2+enP2ZKoWzAiqV2Ed16dg8wPPvITQp0ecJ5TZ2WKDDcaxZGj5KkHxq moiIa09Fazx8ZnN8kWnS0/r1MRAXqHqEyCLZ9sh0dMN8lNzlJ6SPBIULfUxgB6A0hEj+ 6LTug1kXZjOS7BYaW9foGTxovZ0q/qZyPFvJF1/ftawz6GyPLKO20fIxUC8ErOKRN1tU oihZ+q+obdtYFSwIkdvJbk07IDieIqUAc78DMOxGd+U2507rhpo3lc9TuXD1GLLJMoVd 9GiMr/xk0IiPFviEJzx5WSnlXLc2wtD/Ug96/UBHXBEjQsUT97nznCe0S7ER3fgX2U/v E64g== X-Gm-Message-State: AOAM530BQLaH70aGjW15cIeS2eBGaEdtHA1I/dyX7jNRl21vPKl2jEl7 zm6G9aS036ZvM+yGfzjygfEGrHTJWmel4w== X-Google-Smtp-Source: ABdhPJwsxyBCYWfuC1/oBpC2k1MsoglVT+G1lUuu8cqj9hC2Gygih8YaKJu1IO48i3UGxLQdRBjP7Q== X-Received: by 2002:adf:e541:: with SMTP id z1mr7620127wrm.143.1607599165109; Thu, 10 Dec 2020 03:19:25 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:24 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:56 +0100 Message-Id: <20201210111657.2276739-39-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 38/39] avcodec/speedhqenc: Hardcode table to save space X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The SpeedHQ encoder currently reverses the entries of two small tables and stores them in other tables. These other tables have a size of 48 bytes, yet the code for their initialization takes 135 bytes (GCC 9.3, x64, O3 albeit in an av_cold function). So remove the runtime initialization and hardcode the tables. Signed-off-by: Andreas Rheinhardt --- libavcodec/speedhqenc.c | 31 +++++++------------------------ 1 file changed, 7 insertions(+), 24 deletions(-) diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c index dbc638cb82..abad87632f 100644 --- a/libavcodec/speedhqenc.c +++ b/libavcodec/speedhqenc.c @@ -38,8 +38,13 @@ extern RLTable ff_rl_speedhq; static uint8_t speedhq_static_rl_table_store[2][2*MAX_RUN + MAX_LEVEL + 3]; -static uint16_t mpeg12_vlc_dc_lum_code_reversed[12]; -static uint16_t mpeg12_vlc_dc_chroma_code_reversed[12]; +/* Exactly the same as MPEG-2, except little-endian. */ +static const uint16_t mpeg12_vlc_dc_lum_code_reversed[12] = { + 0x1, 0x0, 0x2, 0x5, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF +}; +static const uint16_t mpeg12_vlc_dc_chroma_code_reversed[12] = { + 0x0, 0x2, 0x1, 0x3, 0x7, 0xF, 0x1F, 0x3F, 0x7F, 0xFF, 0x1FF, 0x3FF +}; /* simple include everything table for dc, first byte is bits * number next 3 are code */ @@ -48,30 +53,8 @@ static uint32_t speedhq_chr_dc_uni[512]; static uint8_t uni_speedhq_ac_vlc_len[64 * 64 * 2]; -static uint32_t reverse(uint32_t num, int bits) -{ - return bitswap_32(num) >> (32 - bits); -} - -static void reverse_code(const uint16_t *code, const uint8_t *bits, - uint16_t *reversed_code, int num_entries) -{ - for (int i = 0; i < num_entries; i++) - reversed_code[i] = reverse(code[i], bits[i]); -} - static av_cold void speedhq_init_static_data(void) { - /* Exactly the same as MPEG-2, except little-endian. */ - reverse_code(ff_mpeg12_vlc_dc_lum_code, - ff_mpeg12_vlc_dc_lum_bits, - mpeg12_vlc_dc_lum_code_reversed, - 12); - reverse_code(ff_mpeg12_vlc_dc_chroma_code, - ff_mpeg12_vlc_dc_chroma_bits, - mpeg12_vlc_dc_chroma_code_reversed, - 12); - ff_rl_init(&ff_rl_speedhq, speedhq_static_rl_table_store); /* build unified dc encoding tables */ From patchwork Thu Dec 10 11:16:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24509 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 6825644AFC6 for ; Thu, 10 Dec 2020 13:25:32 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3B6A168A9DF; Thu, 10 Dec 2020 13:19:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f67.google.com (mail-wm1-f67.google.com [209.85.128.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 62FF168A9EA for ; Thu, 10 Dec 2020 13:19:27 +0200 (EET) Received: by mail-wm1-f67.google.com with SMTP id a3so4892505wmb.5 for ; Thu, 10 Dec 2020 03:19:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=I4BfSVgkYXdmvAXvARt15Du7mYJvVELKFFALuYYArXM=; b=C4BD393idru5WuTyTbu2kqaCguGwuMnZKg2cW+ZuvN4dtSswvHv/rHezuztrHzAg6f c+9IiZg3ZPK+8QZLgAdj7dDA2Enbm2jps554T0iBTAtU3E7WZxeDGR1/6MHyC7M4Lqn6 wvxwgar18y8CCF736hZm4vidH5xUapPDdWznjE/BsV6TiDmbReBX0XrrQkuqSJ64BlUZ n5eFUVQDwIPgih50qRkQ2np6xCTCt/YZlJ47rsBFRA2fsF4OIMPZsiUgTM5deoI2bxGf 7K/+9NAI50jSysFP1akwpQR2oYq0tBIJU6quq4LCUtdluNbtzEwRty/yywIxW2GcQDkw hEPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=I4BfSVgkYXdmvAXvARt15Du7mYJvVELKFFALuYYArXM=; b=sRigAjiOLHwTXJ6UQxV6xVxMlSok90Rs8qLI7ruK8IMWQNZOP3n8KSkBlKNYbHEb2I x+kU9ubov/CpVZ+MfnK/dj6DCk/jvZQU/UEgL7lM3Z9eHN6Qpu+ta1264qpR0A0fTIVX 8fsTf/niIHDNGSmchvPeJfmoyE8l/ovohZM1xU7ttIxYn2H+GuqbC1+Xc+7r3gQcircz joEZFaTys4kaduJlmVsKR7pwMgUnjIepY0mf1nK4hITMMaOKh2Qoypj1osX7ITnfFA3W 9R0k6mC0UrKSREU4Yy5+Ek1C/cWkcJ/1loDU9/bxz3FpvvMTnWNegSQexnEDcrAuRQTW /Yzw== X-Gm-Message-State: AOAM533kuiwiXBeUbsbVWPjvWkc03vhPQg4pValjTfgJIOvS182AjnN9 p6KZ1Z1vA0Cbx1bCFtb4zjIWA0Z86acaJw== X-Google-Smtp-Source: ABdhPJxBpPfFjTDIyVepgBsWkM9nTjvK1owfRVnqq9cNSgQeBbNRuY7QYJCq3H8ALmfNndaaoeU0NA== X-Received: by 2002:a1c:f617:: with SMTP id w23mr7493131wmc.52.1607599166641; Thu, 10 Dec 2020 03:19:26 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s133sm8942330wmf.38.2020.12.10.03.19.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Dec 2020 03:19:26 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 10 Dec 2020 12:16:57 +0100 Message-Id: <20201210111657.2276739-40-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 39/39] configure, libavcodec/speedhq: Fix compiling SpeedHQ encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Andreas Rheinhardt --- configure | 1 + libavcodec/speedhq.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/configure b/configure index 90914752f1..249d7afe02 100755 --- a/configure +++ b/configure @@ -2846,6 +2846,7 @@ sonic_encoder_select="golomb rangecoder" sonic_ls_encoder_select="golomb rangecoder" sp5x_decoder_select="mjpeg_decoder" speedhq_decoder_select="mpegvideo" +speedhq_encoder_select="mpegvideoenc" srgc_decoder_deps="zlib" svq1_decoder_select="hpeldsp" svq1_encoder_select="hpeldsp me_cmp mpegvideoenc" diff --git a/libavcodec/speedhq.c b/libavcodec/speedhq.c index 0312ed6f0b..739e64fbc5 100644 --- a/libavcodec/speedhq.c +++ b/libavcodec/speedhq.c @@ -26,6 +26,7 @@ #define BITSTREAM_READER_LE +#include "config.h" #include "libavutil/attributes.h" #include "avcodec.h" @@ -140,6 +141,7 @@ RLTable ff_rl_speedhq = { speedhq_level, }; +#if CONFIG_SPEEDHQ_DECODER /* NOTE: The first element is always 16, unscaled. */ static const uint8_t unscaled_quant_matrix[64] = { 16, 16, 19, 22, 26, 27, 29, 34, @@ -654,3 +656,4 @@ AVCodec ff_speedhq_decoder = { .capabilities = AV_CODEC_CAP_DR1, .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; +#endif /* CONFIG_SPEEDHQ_DECODER */ From patchwork Tue Dec 29 21:53:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24680 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 09D1144AFEA for ; Wed, 30 Dec 2020 00:17:30 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8931668A708; Wed, 30 Dec 2020 00:17:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f46.google.com (mail-lf1-f46.google.com [209.85.167.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D8AF68A31F for ; Wed, 30 Dec 2020 00:17:21 +0200 (EET) Received: by mail-lf1-f46.google.com with SMTP id y19so33722079lfa.13 for ; Tue, 29 Dec 2020 14:17:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ktWTvSNrkbTunYiSlkOmMq598DT7J4Dj1SxjZWn3ii0=; b=JqcoEYgCPZCzbTQ8c9RdztXVHcADavqTUJYLY1HN4ZgAprR8faX7C/n3VXwY+1Kjwn VB75Bbg3Sx54vl4qUZJudslKDMaup58XRNuP5PM2wBxKt5W2BRhw84QqV66buZYBGFLE OX6ykk03ychLIhorgwU3QqDvU1qmHy3wA6eHWJu8Ounc58u1CohHxKykVOZzpVBEeouS U3D2MzmIyd1lIBpN5g5D0eY4BHVPcIu1M6ICPrzStZFer7YcqUsaS/2Tq9edNcSe5UVM bp8jIBdyStfvfGuxG+8zcgqkiegt21UIDDmlIr7q7f9K/fyXgmiuCTi+l8ysr6hDiJ43 7pOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ktWTvSNrkbTunYiSlkOmMq598DT7J4Dj1SxjZWn3ii0=; b=UX3YLpRYhTDPNtMf6XibrHrD+c+/ooV1QDt3Z2wixGOsVYkYY4h2pjY8IpEOvPzRsw JxLyFczTQpWaCI8qITA79ooFAxqG+Z8hG3AKxO7G5FGakViGVfeyOqB5G6SGjE6NhmcD XN3xmjvxqePxQANSoRA5ElIYBaZmIgS2nMLbGXYVckJJU9teVoCYIYWwTTZPIlTDX04h K9BYj18+iClkxgHfQfSGxSN/hjSImZ2dqT3ATiOjxoTJb6VnkwwY3Ccyqkd2DLhovpAG 2bj5SUAS3FqB+JFUgQgAALu1oCoU7CrKmJ3w4hN2bYUgPGXuVwab8E/NYIM5IJug/trO k4Tw== X-Gm-Message-State: AOAM531vkjk6x5UyUPTayHCkrWu1P+pJFwseUtr2dlwOW6OePfHJq7YF tBEDt3/mI4beDpa9p9UjRrYjBwpdjYY= X-Google-Smtp-Source: ABdhPJyMxU4mW/oDLpK5hZiMjjox8whQ2OGVIMLDl3v9bIu14mBnagr4KkbmYf2lIVVX7azIxQh0Yw== X-Received: by 2002:a17:907:3e23:: with SMTP id hp35mr47609621ejc.254.1609278837317; Tue, 29 Dec 2020 13:53:57 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id s5sm18623396eju.98.2020.12.29.13.53.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 29 Dec 2020 13:53:56 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 29 Dec 2020 22:53:50 +0100 Message-Id: <20201229215350.659208-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> References: <20201210111657.2276739-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 40/40] avcodec/h261dec: Make VLC smaller X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The VLC for the macroblock address increment uses nine bits; yet there is no code with this length: All codes are either shorter or longer. So one can make the table smaller without changing the amount of codes that need more than one round of parsing. Signed-off-by: Andreas Rheinhardt --- libavcodec/h261dec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/h261dec.c b/libavcodec/h261dec.c index 817453f60c..2b3408d7b3 100644 --- a/libavcodec/h261dec.c +++ b/libavcodec/h261dec.c @@ -35,7 +35,7 @@ #include "h261.h" #include "internal.h" -#define H261_MBA_VLC_BITS 9 +#define H261_MBA_VLC_BITS 8 #define H261_MTYPE_VLC_BITS 6 #define H261_MV_VLC_BITS 7 #define H261_CBP_VLC_BITS 9 @@ -52,7 +52,7 @@ static av_cold void h261_decode_init_static(void) { INIT_VLC_STATIC(&h261_mba_vlc, H261_MBA_VLC_BITS, 35, ff_h261_mba_bits, 1, 1, - ff_h261_mba_code, 1, 1, 662); + ff_h261_mba_code, 1, 1, 540); INIT_VLC_STATIC(&h261_mtype_vlc, H261_MTYPE_VLC_BITS, 10, ff_h261_mtype_bits, 1, 1, ff_h261_mtype_code, 1, 1, 80);