Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Lynne via ffmpeg-devel <ffmpeg-devel@ffmpeg.org>
To: ffmpeg-devel@ffmpeg.org
Cc: Lynne <dev@lynne.ee>
Subject: Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
Date: Fri, 26 Jul 2024 13:42:27 +0200
Message-ID: <071604fd-397e-4f70-b207-6926261f4933@lynne.ee> (raw)
In-Reply-To: <GV1P250MB0737FEB86CECFBAA9AC9C3758FB42@GV1P250MB0737.EURP250.PROD.OUTLOOK.COM>


[-- Attachment #1.1.1.1: Type: text/plain, Size: 4306 bytes --]

On 26/07/2024 11:03, Andreas Rheinhardt wrote:
> Lynne via ffmpeg-devel:
>> On 26/07/2024 10:22, Andreas Rheinhardt wrote:
>>> Lynne via ffmpeg-devel:
>>>> Its not feasible to add an AVClass in the main context, as
>>>> it would waste space, as the main context is recursive, and
>>>> every bit of assembly would need to be changed.
>>>>
>>>> While its true that on paper av_log has access to the main
>>>> context, that functionality is not used as no options are
>>>> available for setting. No options will be exposed either,
>>>> and it makes no sense.
>>>>
>>>> mpv has recently started warning if a NULL AVClass is used
>>>> as an FFmpeg bug. While I don't fully agree nor disagree with
>>>> this, this is a simple patch which fixes the issue.
>>>
>>> Really?
>>> https://github.com/mpv-player/mpv/commit/54d0763b92f3d8239aa2258f2193eebdc74a91ef
>>> is 13 years old and the check would only warn if a logcontext with NULL
>>> AVClass* is used.
>>
>> Odd, something started triggering the check on my system.
>>
>>>>    libavutil/tx.c | 16 +++++++++++-----
>>>>    1 file changed, 11 insertions(+), 5 deletions(-)
>>>>
>>>> diff --git a/libavutil/tx.c b/libavutil/tx.c
>>>> index 0aae4c7cf7..136d10c374 100644
>>>> --- a/libavutil/tx.c
>>>> +++ b/libavutil/tx.c
>>>> @@ -30,6 +30,12 @@
>>>>         ((x) == AV_TX_DOUBLE_ ## type) || \
>>>>         ((x) == AV_TX_INT32_ ## type))
>>>>    +static const AVClass tx_class = {
>>>> +    .class_name                = "tx",
>>>> +    .item_name                 = av_default_item_name,
>>>> +    .version                   = LIBAVUTIL_VERSION_INT,
>>>> +};
>>>> +
>>>>    /* Calculates the modular multiplicative inverse */
>>>>    static av_always_inline int mulinv(int n, int m)
>>>>    {
>>>> @@ -645,7 +651,7 @@ static void print_cd_info(const FFTXCodelet *cd,
>>>> int prio, int len, int print_pr
>>>>        if (print_prio)
>>>>            av_bprintf(&bp, ", prio: %i", prio);
>>>>    -    av_log(NULL, log_level, "%s\n", bp.str);
>>>> +    av_log((void *)&tx_class, log_level, "%s\n", bp.str);
>>>>    }
>>>>      static void print_tx_structure(AVTXContext *s, int depth)
>>>> @@ -653,7 +659,7 @@ static void print_tx_structure(AVTXContext *s,
>>>> int depth)
>>>>        const FFTXCodelet *cd = s->cd_self;
>>>>          for (int i = 0; i <= depth; i++)
>>>> -        av_log(NULL, AV_LOG_DEBUG, "    ");
>>>> +        av_log((void *)&tx_class, AV_LOG_DEBUG, "    ");
>>>>          print_cd_info(cd, cd->prio, s->len, 0, AV_LOG_DEBUG);
>>>>    @@ -818,10 +824,10 @@ av_cold int ff_tx_init_subtx(AVTXContext *s,
>>>> enum AVTXType type,
>>>>        AV_QSORT(cd_matches, nb_cd_matches, TXCodeletMatch, cmp_matches);
>>>>      #if !CONFIG_SMALL
>>>> -    av_log(NULL, AV_LOG_TRACE, "%s\n", bp.str);
>>>> +    av_log((void *)&tx_class, AV_LOG_TRACE, "%s\n", bp.str);
>>>>          for (int i = 0; i < nb_cd_matches; i++) {
>>>> -        av_log(NULL, AV_LOG_TRACE, "    %i: ", i + 1);
>>>> +        av_log((void *)&tx_class, AV_LOG_TRACE, "    %i: ", i + 1);
>>>>            print_cd_info(cd_matches[i].cd, cd_matches[i].prio, 0, 1,
>>>> AV_LOG_TRACE);
>>>>        }
>>>>    #endif
>>>> @@ -931,7 +937,7 @@ av_cold int av_tx_init(AVTXContext **ctx,
>>>> av_tx_fn *tx, enum AVTXType type,
>>>>        *tx  = tmp.fn[0];
>>>>      #if !CONFIG_SMALL
>>>> -    av_log(NULL, AV_LOG_DEBUG, "Transform tree:\n");
>>>> +    av_log((void *)&tx_class, AV_LOG_DEBUG, "Transform tree:\n");
>>>>        print_tx_structure(*ctx, 0);
>>>>    #endif
>>>>    
>>>
>>> Did you ever test this? av_log() expects a pointer to an AVClass-enabled
>>> struct, not a pointer to an AVClass. This will crash (it will interpret
>>> AVClass.class_name as pointer to an AVClass) when the log is active
>>> (when loglevel is high enough).
>>
>> No, I trusted that I did test it when I submitted it a year ago.
>>
> 
> You have been informed of this last year:
> https://patchwork.ffmpeg.org/project/ffmpeg/patch/NWETFS_--3-9@lynne.ee/
> Then as now there are lots of FATE failures with this patch (as
> patchwork shows).

There was humor in my response, maybe you didn't see it.

[-- Attachment #1.1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 624 bytes --]

[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

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

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

  reply	other threads:[~2024-07-26 11:42 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-26  6:42 Lynne via ffmpeg-devel
2024-07-26  7:47 ` Anton Khirnov
2024-07-26  8:33   ` Lynne via ffmpeg-devel
2024-07-26  8:43     ` Anton Khirnov
2024-07-26  8:22 ` Andreas Rheinhardt
2024-07-26  8:30   ` Lynne via ffmpeg-devel
2024-07-26  9:03     ` Andreas Rheinhardt
2024-07-26 11:42       ` Lynne via ffmpeg-devel [this message]
2024-07-26  8:37 ` Zhao Zhili
  -- strict thread matches above, loose matches on Subject: below --
2023-05-24 20:35 Lynne
2023-05-24 20:44 ` Paul B Mahol
2023-05-24 21:24 ` Leo Izen
2023-05-25  0:32   ` Lynne
2023-05-28  1:07     ` James Almer
2023-05-28  2:48       ` Lynne
2023-05-28 17:00         ` Anton Khirnov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=071604fd-397e-4f70-b207-6926261f4933@lynne.ee \
    --to=ffmpeg-devel@ffmpeg.org \
    --cc=dev@lynne.ee \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git