[FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )

Zhao Zhili quinkblack at foxmail.com
Fri Jul 26 11:37:33 EEST 2024



> On Jul 26, 2024, at 14:42, Lynne via ffmpeg-devel <ffmpeg-devel at ffmpeg.org> wrote:
> 
> 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.
> ---
> 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);

Isn’t the first argument of av_log is a pointer to pointer to AVClass, not pointer to AVClass?

> }
> 
> 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
> 
> -- 
> 2.45.2.753.g447d99e1c3b
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".



More information about the ffmpeg-devel mailing list