* [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
@ 2023-05-24 20:35 Lynne
2023-05-24 20:44 ` Paul B Mahol
2023-05-24 21:24 ` Leo Izen
0 siblings, 2 replies; 19+ messages in thread
From: Lynne @ 2023-05-24 20:35 UTC (permalink / raw)
To: Ffmpeg Devel
[-- Attachment #1: Type: text/plain, Size: 17 bytes --]
Patch attached.
[-- Attachment #2: 0001-lavu-tx-stop-using-av_log-NULL.patch --]
[-- Type: text/x-diff, Size: 2319 bytes --]
From 2813dcb5b885bdf0c3f78f8aead43f4b11149a70 Mon Sep 17 00:00:00 2001
From: Lynne <dev@lynne.ee>
Date: Wed, 24 May 2023 21:57:25 +0200
Subject: [PATCH] lavu/tx: stop using av_log(NULL, )
---
libavutil/tx.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/libavutil/tx.c b/libavutil/tx.c
index e25abf998f..34fbe3f6c7 100644
--- a/libavutil/tx.c
+++ b/libavutil/tx.c
@@ -29,6 +29,12 @@
((x) == AV_TX_DOUBLE_ ## type) || \
((x) == AV_TX_INT32_ ## type))
+static 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)
{
@@ -631,7 +637,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, AV_LOG_DEBUG, "%s\n", bp.str);
+ av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
}
static void print_tx_structure(AVTXContext *s, int depth)
@@ -639,7 +645,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);
@@ -798,10 +804,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_DEBUG, "%s\n", bp.str);
+ av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
for (int i = 0; i < nb_cd_matches; i++) {
- av_log(NULL, AV_LOG_DEBUG, " %i: ", i + 1);
+ av_log((void *)&tx_class, AV_LOG_DEBUG, " %i: ", i + 1);
print_cd_info(cd_matches[i].cd, cd_matches[i].prio, 0, 1);
}
#endif
@@ -909,7 +915,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.40.0
[-- Attachment #3: 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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2023-05-24 20:35 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) Lynne
@ 2023-05-24 20:44 ` Paul B Mahol
2023-05-24 21:24 ` Leo Izen
1 sibling, 0 replies; 19+ messages in thread
From: Paul B Mahol @ 2023-05-24 20:44 UTC (permalink / raw)
To: FFmpeg development discussions and patches
On 5/24/23, Lynne <dev@lynne.ee> wrote:
> Patch attached.
>
>
Probably fine.
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2023-05-24 20:35 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) Lynne
2023-05-24 20:44 ` Paul B Mahol
@ 2023-05-24 21:24 ` Leo Izen
2023-05-25 0:32 ` Lynne
1 sibling, 1 reply; 19+ messages in thread
From: Leo Izen @ 2023-05-24 21:24 UTC (permalink / raw)
To: ffmpeg-devel
On 5/24/23 16:35, Lynne wrote:
> Patch attached.
>
+ av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
The type of the first argument to av_log should be AVClass **, but this
only appears to be AVClass *. See libavutil/log.c line 428.
- Leo Izen
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2023-05-24 21:24 ` Leo Izen
@ 2023-05-25 0:32 ` Lynne
2023-05-28 1:07 ` James Almer
0 siblings, 1 reply; 19+ messages in thread
From: Lynne @ 2023-05-25 0:32 UTC (permalink / raw)
To: FFmpeg development discussions and patches
May 24, 2023, 23:24 by leo.izen@gmail.com:
> On 5/24/23 16:35, Lynne wrote:
>
>> Patch attached.
>>
>
> + av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
>
> The type of the first argument to av_log should be AVClass **, but this only appears to be AVClass *. See libavutil/log.c line 428.
>
> - Leo Izen
>
Right, thanks, changed to:
> static const AVClass tx_class = {
> .class_name = "tx",
> .item_name = av_default_item_name,
> .version = LIBAVUTIL_VERSION_INT,
> };
>
> static const struct {
> const AVClass *tx_class;
> } tx_log = {
> &tx_class,
> };
Will push this tomorrow.
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2023-05-25 0:32 ` Lynne
@ 2023-05-28 1:07 ` James Almer
2023-05-28 2:48 ` Lynne
` (2 more replies)
0 siblings, 3 replies; 19+ messages in thread
From: James Almer @ 2023-05-28 1:07 UTC (permalink / raw)
To: ffmpeg-devel
On 5/24/2023 9:32 PM, Lynne wrote:
> May 24, 2023, 23:24 by leo.izen@gmail.com:
>
>> On 5/24/23 16:35, Lynne wrote:
>>
>>> Patch attached.
>>>
>>
>> + av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
>>
>> The type of the first argument to av_log should be AVClass **, but this only appears to be AVClass *. See libavutil/log.c line 428.
>>
>> - Leo Izen
>>
>
> Right, thanks, changed to:
>
>> static const AVClass tx_class = {
>> .class_name = "tx",
>> .item_name = av_default_item_name,
>> .version = LIBAVUTIL_VERSION_INT,
>> };
>>
>> static const struct {
>> const AVClass *tx_class;
>> } tx_log = {
>> &tx_class,
>> };
> Will push this tomorrow.
Can't add an AVClass* field to AVTXContext and set it to &tx_class
during init?
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2023-05-28 1:07 ` James Almer
@ 2023-05-28 2:48 ` Lynne
2023-05-28 17:00 ` Anton Khirnov
2023-05-28 2:53 ` [FFmpeg-devel] [PATCH 99/99] Vulkan patchset - complete Lynne
[not found] ` <NWVGWv4--3-9@lynne.ee-NWVGaUX----9>
2 siblings, 1 reply; 19+ messages in thread
From: Lynne @ 2023-05-28 2:48 UTC (permalink / raw)
To: FFmpeg development discussions and patches
May 28, 2023, 03:07 by jamrial@gmail.com:
> On 5/24/2023 9:32 PM, Lynne wrote:
>
>> May 24, 2023, 23:24 by leo.izen@gmail.com:
>>
>>> On 5/24/23 16:35, Lynne wrote:
>>>
>>>> Patch attached.
>>>>
>>>
>>> + av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
>>>
>>> The type of the first argument to av_log should be AVClass **, but this only appears to be AVClass *. See libavutil/log.c line 428.
>>>
>>> - Leo Izen
>>>
>>
>> Right, thanks, changed to:
>>
>>> static const AVClass tx_class = {
>>> .class_name = "tx",
>>> .item_name = av_default_item_name,
>>> .version = LIBAVUTIL_VERSION_INT,
>>> };
>>>
>>> static const struct {
>>> const AVClass *tx_class;
>>> } tx_log = {
>>> &tx_class,
>>> };
>>>
>> Will push this tomorrow.
>>
>
> Can't add an AVClass* field to AVTXContext and set it to &tx_class during init?
>
The struct is accessed from asm, didn't really want to fix all the loads
for something which only runs at init, and only if !CONFIG_SMALL.
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* [FFmpeg-devel] [PATCH 99/99] Vulkan patchset - complete
2023-05-28 1:07 ` James Almer
2023-05-28 2:48 ` Lynne
@ 2023-05-28 2:53 ` Lynne
[not found] ` <NWVGWv4--3-9@lynne.ee-NWVGaUX----9>
2 siblings, 0 replies; 19+ messages in thread
From: Lynne @ 2023-05-28 2:53 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1: Type: text/plain, Size: 257 bytes --]
This contains the entire Vulkan patchset, 99 patches from 4 authors.
Thanks to everyone who contributed code, reviewed code,
voiced their opinions and tested the code over the past 6 months.
Patchset attached (1.1 Mb uncompressed, too large for the ML).
[-- Attachment #2: vulkan_patchset.tar --]
[-- Type: application/x-tar, Size: 192957 bytes --]
[-- Attachment #3: 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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH 99/99] Vulkan patchset - complete
[not found] ` <NWVGWv4--3-9@lynne.ee-NWVGaUX----9>
@ 2023-05-28 3:16 ` Lynne
[not found] ` <NWVLl5S--3-9@lynne.ee-NWVLpfB----9>
1 sibling, 0 replies; 19+ messages in thread
From: Lynne @ 2023-05-28 3:16 UTC (permalink / raw)
To: FFmpeg development discussions and patches
[-- Attachment #1: Type: text/plain, Size: 458 bytes --]
May 28, 2023, 04:53 by dev@lynne.ee:
> This contains the entire Vulkan patchset, 99 patches from 4 authors.
>
> Thanks to everyone who contributed code, reviewed code,
> voiced their opinions and tested the code over the past 6 months.
>
> Patchset attached (1.1 Mb uncompressed, too large for the ML).
>
Forgot to git add the FATE ref files for the new pixfmts and
to exclude apache-licensed files from fate-source, bringing
the total up to 100 patches.
[-- Attachment #2: vulkan_patchset.tar --]
[-- Type: application/x-tar, Size: 198160 bytes --]
[-- Attachment #3: 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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2023-05-28 2:48 ` Lynne
@ 2023-05-28 17:00 ` Anton Khirnov
0 siblings, 0 replies; 19+ messages in thread
From: Anton Khirnov @ 2023-05-28 17:00 UTC (permalink / raw)
To: FFmpeg development discussions and patches
Quoting Lynne (2023-05-28 04:48:00)
> May 28, 2023, 03:07 by jamrial@gmail.com:
>
> > On 5/24/2023 9:32 PM, Lynne wrote:
> >
> >> May 24, 2023, 23:24 by leo.izen@gmail.com:
> >>
> >>> On 5/24/23 16:35, Lynne wrote:
> >>>
> >>>> Patch attached.
> >>>>
> >>>
> >>> + av_log((void *)&tx_class, AV_LOG_DEBUG, "%s\n", bp.str);
> >>>
> >>> The type of the first argument to av_log should be AVClass **, but this only appears to be AVClass *. See libavutil/log.c line 428.
> >>>
> >>> - Leo Izen
> >>>
> >>
> >> Right, thanks, changed to:
> >>
> >>> static const AVClass tx_class = {
> >>> .class_name = "tx",
> >>> .item_name = av_default_item_name,
> >>> .version = LIBAVUTIL_VERSION_INT,
> >>> };
> >>>
> >>> static const struct {
> >>> const AVClass *tx_class;
> >>> } tx_log = {
> >>> &tx_class,
> >>> };
> >>>
> >> Will push this tomorrow.
> >>
> >
> > Can't add an AVClass* field to AVTXContext and set it to &tx_class during init?
> >
>
> The struct is accessed from asm, didn't really want to fix all the loads
> for something which only runs at init, and only if !CONFIG_SMALL.
That's largely missing the point of having a non-NULL logging context,
which is that the log callback has access to the context. It's private
in this case, but AVOptions could still be used to retrieve things like
per-context opaque.
There have also been discussions recently about a per-context logging
callback being highly useful for some cases.
--
Anton Khirnov
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH 99/99] Vulkan patchset - complete
[not found] ` <NWVLl5S--3-9@lynne.ee-NWVLpfB----9>
@ 2023-05-28 23:16 ` Lynne
0 siblings, 0 replies; 19+ messages in thread
From: Lynne @ 2023-05-28 23:16 UTC (permalink / raw)
To: FFmpeg development discussions and patches
May 28, 2023, 05:16 by dev@lynne.ee:
> May 28, 2023, 04:53 by dev@lynne.ee:
>
>> This contains the entire Vulkan patchset, 99 patches from 4 authors.
>>
>> Thanks to everyone who contributed code, reviewed code,
>> voiced their opinions and tested the code over the past 6 months.
>>
>> Patchset attached (1.1 Mb uncompressed, too large for the ML).
>>
>
> Forgot to git add the FATE ref files for the new pixfmts and
> to exclude apache-licensed files from fate-source, bringing
> the total up to 100 patches.
>
Pushed the patchset.
Again, thanks to everyone who contributed code, reviews,
paid attention to it, and tested it.
This is still new code, depending on new drivers, and a spec
which was rather rushed out to be released, so issue reports
are welcome.
Currently, the spec has one known issue - sampling from
video textures which have been decoded into does not
trigger the boundary conditions, as the textures are oversized.
This is not a problem for the decoder, but rather for API
users who wish to present the images rather than download
them. Doing so, there's visible corruption in the bottom
2 lines of the video.
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 9:03 ` Andreas Rheinhardt
@ 2024-07-26 11:42 ` Lynne via ffmpeg-devel
0 siblings, 0 replies; 19+ messages in thread
From: Lynne via ffmpeg-devel @ 2024-07-26 11:42 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Lynne
[-- 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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
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
0 siblings, 1 reply; 19+ messages in thread
From: Andreas Rheinhardt @ 2024-07-26 9:03 UTC (permalink / raw)
To: ffmpeg-devel
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).
- Andreas
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 8:33 ` Lynne via ffmpeg-devel
@ 2024-07-26 8:43 ` Anton Khirnov
0 siblings, 0 replies; 19+ messages in thread
From: Anton Khirnov @ 2024-07-26 8:43 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Lynne
Quoting Lynne via ffmpeg-devel (2024-07-26 10:33:24)
> On 26/07/2024 09:47, Anton Khirnov wrote:
> > Quoting Lynne via ffmpeg-devel (2024-07-26 08:42:11)
> >> 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.
> >
> > No, it just hides the issue for the time being.
>
> If this means "it may get broken eventually, its not forbidden
> anywhere", then IMO we should just codify the current behavior such that
> it won't, unless there's some use-case you can think of.
It means "you're offloading fixing this issue properly on someone else",
which is a bad thing in my book. In my understanding of the API, it _is_
forbidden and UB.
> > I am against this patch, just add a proper AVClass. AVTXContext is
> > entirely opaque, so it should definitely be feasible.
> I'd like to avoid adding a pointer and allocating it if it can't be
> helped. And properly integrating each context into the AVClass system as
> a child of the parent context.
Consider the possibility that if your code depends on fixed layout of a
big and complex struct, then your code is...suboptimal. If it's about
offsets for SIMD, you could either
* generate them at build time
* move the things used by SIMD into a smaller struct embedded in the
main context
> If you think a NULL av_log is valid (you implied that a year ago), then
> I'm more than happy to drop this patch.
I didn't and I don't. To the contrary, I consider av_log(NULL) a
mispattern that we should be rid of.
--
Anton Khirnov
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 6:42 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) Lynne via ffmpeg-devel
2024-07-26 7:47 ` Anton Khirnov
2024-07-26 8:22 ` Andreas Rheinhardt
@ 2024-07-26 8:37 ` Zhao Zhili
2 siblings, 0 replies; 19+ messages in thread
From: Zhao Zhili @ 2024-07-26 8:37 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Lynne
> On Jul 26, 2024, at 14:42, Lynne via ffmpeg-devel <ffmpeg-devel@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@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 7:47 ` Anton Khirnov
@ 2024-07-26 8:33 ` Lynne via ffmpeg-devel
2024-07-26 8:43 ` Anton Khirnov
0 siblings, 1 reply; 19+ messages in thread
From: Lynne via ffmpeg-devel @ 2024-07-26 8:33 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Lynne
[-- Attachment #1.1.1.1: Type: text/plain, Size: 1333 bytes --]
On 26/07/2024 09:47, Anton Khirnov wrote:
> Quoting Lynne via ffmpeg-devel (2024-07-26 08:42:11)
>> 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.
>
> No, it just hides the issue for the time being.
If this means "it may get broken eventually, its not forbidden
anywhere", then IMO we should just codify the current behavior such that
it won't, unless there's some use-case you can think of.
> I am against this patch, just add a proper AVClass. AVTXContext is
> entirely opaque, so it should definitely be feasible.
I'd like to avoid adding a pointer and allocating it if it can't be
helped. And properly integrating each context into the AVClass system as
a child of the parent context.
If you think a NULL av_log is valid (you implied that a year ago), then
I'm more than happy to drop this patch.
[-- 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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 8:22 ` Andreas Rheinhardt
@ 2024-07-26 8:30 ` Lynne via ffmpeg-devel
2024-07-26 9:03 ` Andreas Rheinhardt
0 siblings, 1 reply; 19+ messages in thread
From: Lynne via ffmpeg-devel @ 2024-07-26 8:30 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Lynne
[-- Attachment #1.1.1.1: Type: text/plain, Size: 3574 bytes --]
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.
[-- 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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 6:42 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) Lynne via ffmpeg-devel
2024-07-26 7:47 ` Anton Khirnov
@ 2024-07-26 8:22 ` Andreas Rheinhardt
2024-07-26 8:30 ` Lynne via ffmpeg-devel
2024-07-26 8:37 ` Zhao Zhili
2 siblings, 1 reply; 19+ messages in thread
From: Andreas Rheinhardt @ 2024-07-26 8:22 UTC (permalink / raw)
To: ffmpeg-devel
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.
> ---
> 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).
- Andreas
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
2024-07-26 6:42 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) Lynne via ffmpeg-devel
@ 2024-07-26 7:47 ` Anton Khirnov
2024-07-26 8:33 ` Lynne via ffmpeg-devel
2024-07-26 8:22 ` Andreas Rheinhardt
2024-07-26 8:37 ` Zhao Zhili
2 siblings, 1 reply; 19+ messages in thread
From: Anton Khirnov @ 2024-07-26 7:47 UTC (permalink / raw)
To: FFmpeg development discussions and patches; +Cc: Lynne
Quoting Lynne via ffmpeg-devel (2024-07-26 08:42:11)
> 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.
No, it just hides the issue for the time being. I am against this patch,
just add a proper AVClass. AVTXContext is entirely opaque, so it should
definitely be feasible.
--
Anton Khirnov
_______________________________________________
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".
^ permalink raw reply [flat|nested] 19+ messages in thread
* [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, )
@ 2024-07-26 6:42 Lynne via ffmpeg-devel
2024-07-26 7:47 ` Anton Khirnov
` (2 more replies)
0 siblings, 3 replies; 19+ messages in thread
From: Lynne via ffmpeg-devel @ 2024-07-26 6:42 UTC (permalink / raw)
To: ffmpeg-devel; +Cc: Lynne
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);
}
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@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2024-07-26 11:42 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-24 20:35 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) 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
2023-05-28 2:53 ` [FFmpeg-devel] [PATCH 99/99] Vulkan patchset - complete Lynne
[not found] ` <NWVGWv4--3-9@lynne.ee-NWVGaUX----9>
2023-05-28 3:16 ` Lynne
[not found] ` <NWVLl5S--3-9@lynne.ee-NWVLpfB----9>
2023-05-28 23:16 ` Lynne
2024-07-26 6:42 [FFmpeg-devel] [PATCH] lavu/tx: stop using av_log(NULL, ) 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
2024-07-26 8:37 ` Zhao Zhili
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