Re: [Cin] [Libav-user] Dynamic_input filters and avfilter_pad_get_type

2025-05-13 Thread Andrew Randrianasulu via Cin
On Sat, May 10, 2025 at 11:14 AM Andrew Randrianasulu
 wrote:
>
> On Sat, May 10, 2025 at 9:05 AM Paul B Mahol  wrote:
> >
> >
> >
> > On Fri, May 9, 2025 at 11:38 PM Andrew Randrianasulu 
> >  wrote:
> >>
> >> I was looking at why our application (cinelerra-gg) crashed at trying to 
> >> use libplacebo
> >>
> >> I found that libplacebo defines itself
> >>
> >> https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html
> >>
> >> as
> >>
> >>  .flags = AVFILTER_FLAG_HWDEVICE | AVFILTER_FLAG_DYNAMIC_INPUTS,
> >>
> >> so only output pad is defined, as far as I can see:
> >>
> >> static const AVFilterPad libplacebo_outputs[] = {
> >>   {
> >>   .name = "default",
> >>   .type = AVMEDIA_TYPE_VIDEO,
> >>   .config_props = &libplacebo_config_output,
> >>   },
> >>  };
> >>
> >>
> >>
> >> then when our code calls
> >>
> >> avfilter_pad_get_type()
> >
> >
> > You need to call it only after filtergraph have been configured, not before 
> > because in such cases number of output pads may be 0 before configuration.
> > In  any case you need to check current number of input pads and output pads 
> > for each filter before trying to access them.
> >
>
> Thanks. Attached patch  makes this crash go away, just 32-bit cingg
> can't cope with 4k frames filtering en-masse :)

Sadly wtch ffmpeg.git patch does not work anymore.

I tried to use

int   nb_pads = avfilter_filter_pad_count(filter,0);

but this one apparently crashes when I try zscale :(

while may be zscale was just not compiled in?

I'll retry with some more env. options.

On the plus side ffmpeg.git + radv + h264 video = it mostly works.
Some vids still crash us ...


>
> Andrea, can you test attached patch +  this opts file put alongside
> test 4k HDR video  decodable by hardware?
>
>
>
> >
> >>
> >>
> >> it promptly crashes.
> >>
> >>  BC_Signals::dump_stack
> >> cin() [0x8b2c9e2]
> >> linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf7fb8590]
> >> cin(avfilter_pad_get_type+0x14) [0x99266a4]
> >> cin(_ZN13FFVideoStream13create_filterEPKc+0xbc) [0x865669c]
> >> cin(_ZN6FFMPEG12open_decoderEv+0x80f) [0x865732f]
> >> cin(_ZN10FileFFMPEG9check_sigEP5Asset+0x81) [0x8670071]
> >> cin(_ZN4File5probeEv+0x376) [0x867cd86]
> >> cin(_ZN4File9open_fileEP11PreferencesP5Assetii+0x378) [0x867d628]
> >> cin(_ZN7MWindow14load_filenamesEP9ArrayListIPcEiii+0x250) [0x87301f0]
> >> cin(_ZN17CommandLineThread3runEv+0x53) [0x86e2cd3]
> >> cin(_ZN6Thread10entrypointEPv+0x41) [0x8b70c11]
> >> /lib/libpthread.so.0(+0x7328) [0xf7df9328]
> >> /lib/libc.so.6(clone+0x66) [0xf0373f06]
> >>
> >>
> >>
> >> We still hope to get libplacebo's tonemapping  + vulkan hevc decoding 
> >> going, so any pointers how to talk to those dynamic_input filters will be 
> >> useful. Even swscale is dynamic_input in ffmpeg 7.1+, so I (we) really 
> >> hope to keep it working, too.
> >>
> >> Code:
> >>
> >> https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=1d0979df59f932628246678a920aca002d8dd88b;hb=HEAD#l3893
> >>
> >>
> >>
> >> ___
> >> Libav-user mailing list
> >> libav-u...@ffmpeg.org
> >> https://ffmpeg.org/mailman/listinfo/libav-user
> >>
> >> To unsubscribe, visit link above, or email
> >> libav-user-requ...@ffmpeg.org with subject "unsubscribe".
> >
> > ___
> > Libav-user mailing list
> > libav-u...@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/libav-user
> >
> > To unsubscribe, visit link above, or email
> > libav-user-requ...@ffmpeg.org with subject "unsubscribe".
-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin


Re: [Cin] [Libav-user] Dynamic_input filters and avfilter_pad_get_type

2025-05-10 Thread Andrew Randrianasulu via Cin
сб, 10 мая 2025 г., 16:20 Andrea paz :

> >> Andrea, can you test attached patch +  this opts file put alongside
> >> test 4k HDR video  decodable by hardware?
>
> I compiled with the patch and put the opts in .../bin/ffmpeg.
> I don't think I know what and how to test. I loaded the
> iPhone13_tonemapping_checker_rev2.mp4 file you had provided. The
> playback performance is good (even in reverse, with only a few
> freezes). However, the video card does not activate and the CPU (not
> particularly busy) does everything. The behavior is the same even
> removing the opts. Suggestions?
>
> PS: the same is true with the lines for zscale that you asked to put
> in the manual. Do I have to do an opts on it? How do I text it?
> I also don't quite understand how the line you report works.
>

you create file with .opts extension in same folder where your
main_media_file.mov located.

You name it main_media_file.opts

You put test lines there.

You might need

RADV_PERFTEST=video_decode set before you launch cin. I usually just launch
cin path_to_test_media/main_media_file.mov
It should pick up .opts file from there.

I did not try to put those lines in global decode.opts

you also need to set cin to Vulkan decoding (should be already in git).
-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin


Re: [Cin] [Libav-user] Dynamic_input filters and avfilter_pad_get_type

2025-05-10 Thread Andrea paz via Cin
>> Andrea, can you test attached patch +  this opts file put alongside
>> test 4k HDR video  decodable by hardware?

I compiled with the patch and put the opts in .../bin/ffmpeg.
I don't think I know what and how to test. I loaded the
iPhone13_tonemapping_checker_rev2.mp4 file you had provided. The
playback performance is good (even in reverse, with only a few
freezes). However, the video card does not activate and the CPU (not
particularly busy) does everything. The behavior is the same even
removing the opts. Suggestions?

PS: the same is true with the lines for zscale that you asked to put
in the manual. Do I have to do an opts on it? How do I text it?
I also don't quite understand how the line you report works.
-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin


Re: [Cin] [Libav-user] Dynamic_input filters and avfilter_pad_get_type

2025-05-10 Thread Andrew Randrianasulu via Cin
сб, 10 мая 2025 г., 11:14 Andrew Randrianasulu :

> On Sat, May 10, 2025 at 9:05 AM Paul B Mahol  wrote:
> >
> >
> >
> > On Fri, May 9, 2025 at 11:38 PM Andrew Randrianasulu <
> randrianas...@gmail.com> wrote:
> >>
> >> I was looking at why our application (cinelerra-gg) crashed at trying
> to use libplacebo
> >>
> >> I found that libplacebo defines itself
> >>
> >> https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html
> >>
> >> as
> >>
> >>  .flags = AVFILTER_FLAG_HWDEVICE | AVFILTER_FLAG_DYNAMIC_INPUTS,
> >>
> >> so only output pad is defined, as far as I can see:
> >>
> >> static const AVFilterPad libplacebo_outputs[] = {
> >>   {
> >>   .name = "default",
> >>   .type = AVMEDIA_TYPE_VIDEO,
> >>   .config_props = &libplacebo_config_output,
> >>   },
> >>  };
> >>
> >>
> >>
> >> then when our code calls
> >>
> >> avfilter_pad_get_type()
> >
> >
> > You need to call it only after filtergraph have been configured, not
> before because in such cases number of output pads may be 0 before
> configuration.
> > In  any case you need to check current number of input pads and output
> pads for each filter before trying to access them.
> >
>
> Thanks. Attached patch  makes this crash go away, just 32-bit cingg
> can't cope with 4k frames filtering en-masse :)
>
> Andrea, can you test attached patch +  this opts file put alongside
> test 4k HDR video  decodable by hardware?
>

Aw, tried to reduce resolution to very barest minimum allowed by hevc
encoder (228*128!) and while libplacebo works (sloowly!) with software
decoder, it does not  produce good frames with Vulkan hw decoder (even if I
seen in nvtop hw decoder really runs  sometimes at close to 100%).

So, something confuses libplacebo greatly if used like this.

I also tried *_vulkan filters on input, hoping they will also pick up hw
vulkan decoding  device but apparently no?


>
>
> >
> >>
> >>
> >> it promptly crashes.
> >>
> >>  BC_Signals::dump_stack
> >> cin() [0x8b2c9e2]
> >> linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf7fb8590]
> >> cin(avfilter_pad_get_type+0x14) [0x99266a4]
> >> cin(_ZN13FFVideoStream13create_filterEPKc+0xbc) [0x865669c]
> >> cin(_ZN6FFMPEG12open_decoderEv+0x80f) [0x865732f]
> >> cin(_ZN10FileFFMPEG9check_sigEP5Asset+0x81) [0x8670071]
> >> cin(_ZN4File5probeEv+0x376) [0x867cd86]
> >> cin(_ZN4File9open_fileEP11PreferencesP5Assetii+0x378) [0x867d628]
> >> cin(_ZN7MWindow14load_filenamesEP9ArrayListIPcEiii+0x250) [0x87301f0]
> >> cin(_ZN17CommandLineThread3runEv+0x53) [0x86e2cd3]
> >> cin(_ZN6Thread10entrypointEPv+0x41) [0x8b70c11]
> >> /lib/libpthread.so.0(+0x7328) [0xf7df9328]
> >> /lib/libc.so.6(clone+0x66) [0xf0373f06]
> >>
> >>
> >>
> >> We still hope to get libplacebo's tonemapping  + vulkan hevc decoding
> going, so any pointers how to talk to those dynamic_input filters will be
> useful. Even swscale is dynamic_input in ffmpeg 7.1+, so I (we) really hope
> to keep it working, too.
> >>
> >> Code:
> >>
> >>
> https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=1d0979df59f932628246678a920aca002d8dd88b;hb=HEAD#l3893
> >>
> >>
> >>
> >> ___
> >> Libav-user mailing list
> >> libav-u...@ffmpeg.org
> >> https://ffmpeg.org/mailman/listinfo/libav-user
> >>
> >> To unsubscribe, visit link above, or email
> >> libav-user-requ...@ffmpeg.org with subject "unsubscribe".
> >
> > ___
> > Libav-user mailing list
> > libav-u...@ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/libav-user
> >
> > To unsubscribe, visit link above, or email
> > libav-user-requ...@ffmpeg.org with subject "unsubscribe".
>
-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin


Re: [Cin] [Libav-user] Dynamic_input filters and avfilter_pad_get_type

2025-05-10 Thread Andrew Randrianasulu via Cin
On Sat, May 10, 2025 at 9:05 AM Paul B Mahol  wrote:
>
>
>
> On Fri, May 9, 2025 at 11:38 PM Andrew Randrianasulu 
>  wrote:
>>
>> I was looking at why our application (cinelerra-gg) crashed at trying to use 
>> libplacebo
>>
>> I found that libplacebo defines itself
>>
>> https://ffmpeg.org/doxygen/7.0/vf__libplacebo_8c.html
>>
>> as
>>
>>  .flags = AVFILTER_FLAG_HWDEVICE | AVFILTER_FLAG_DYNAMIC_INPUTS,
>>
>> so only output pad is defined, as far as I can see:
>>
>> static const AVFilterPad libplacebo_outputs[] = {
>>   {
>>   .name = "default",
>>   .type = AVMEDIA_TYPE_VIDEO,
>>   .config_props = &libplacebo_config_output,
>>   },
>>  };
>>
>>
>>
>> then when our code calls
>>
>> avfilter_pad_get_type()
>
>
> You need to call it only after filtergraph have been configured, not before 
> because in such cases number of output pads may be 0 before configuration.
> In  any case you need to check current number of input pads and output pads 
> for each filter before trying to access them.
>

Thanks. Attached patch  makes this crash go away, just 32-bit cingg
can't cope with 4k frames filtering en-masse :)

Andrea, can you test attached patch +  this opts file put alongside
test 4k HDR video  decodable by hardware?



>
>>
>>
>> it promptly crashes.
>>
>>  BC_Signals::dump_stack
>> cin() [0x8b2c9e2]
>> linux-gate.so.1(__kernel_rt_sigreturn+0) [0xf7fb8590]
>> cin(avfilter_pad_get_type+0x14) [0x99266a4]
>> cin(_ZN13FFVideoStream13create_filterEPKc+0xbc) [0x865669c]
>> cin(_ZN6FFMPEG12open_decoderEv+0x80f) [0x865732f]
>> cin(_ZN10FileFFMPEG9check_sigEP5Asset+0x81) [0x8670071]
>> cin(_ZN4File5probeEv+0x376) [0x867cd86]
>> cin(_ZN4File9open_fileEP11PreferencesP5Assetii+0x378) [0x867d628]
>> cin(_ZN7MWindow14load_filenamesEP9ArrayListIPcEiii+0x250) [0x87301f0]
>> cin(_ZN17CommandLineThread3runEv+0x53) [0x86e2cd3]
>> cin(_ZN6Thread10entrypointEPv+0x41) [0x8b70c11]
>> /lib/libpthread.so.0(+0x7328) [0xf7df9328]
>> /lib/libc.so.6(clone+0x66) [0xf0373f06]
>>
>>
>>
>> We still hope to get libplacebo's tonemapping  + vulkan hevc decoding going, 
>> so any pointers how to talk to those dynamic_input filters will be useful. 
>> Even swscale is dynamic_input in ffmpeg 7.1+, so I (we) really hope to keep 
>> it working, too.
>>
>> Code:
>>
>> https://git.cinelerra-gg.org/git/?p=goodguy/cinelerra.git;a=blob;f=cinelerra-5.1/cinelerra/ffmpeg.C;h=1d0979df59f932628246678a920aca002d8dd88b;hb=HEAD#l3893
>>
>>
>>
>> ___
>> Libav-user mailing list
>> libav-u...@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> libav-user-requ...@ffmpeg.org with subject "unsubscribe".
>
> ___
> Libav-user mailing list
> libav-u...@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> libav-user-requ...@ffmpeg.org with subject "unsubscribe".
From 73e74b064b80a0c4cdeb80a3733faf666fd0e4a9 Mon Sep 17 00:00:00 2001
From: Andrew Randrianasulu 
Date: Sat, 10 May 2025 11:06:44 +0300
Subject: [PATCH] Add check for nb_inputs before calling avfilter_get_pad_name,
 fixes crash

---
 cinelerra-5.1/cinelerra/ffmpeg.C | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/cinelerra-5.1/cinelerra/ffmpeg.C b/cinelerra-5.1/cinelerra/ffmpeg.C
index 1d0979df..82ae0856 100644
--- a/cinelerra-5.1/cinelerra/ffmpeg.C
+++ b/cinelerra-5.1/cinelerra/ffmpeg.C
@@ -3903,7 +3903,9 @@ int FFVideoStream::create_filter(const char *filter_spec)
 		while( --i>=0 && *sp!=0 && !strchr(" \t:=,",*sp) ) *np++ = *sp++;
 		*np = 0;
 		const AVFilter *filter = !filter_name[0] ? 0 : avfilter_get_by_name(filter_name);
-		if( !filter || avfilter_pad_get_type(filter->inputs,0) != AVMEDIA_TYPE_VIDEO ) {
+		//AVFilterContext *ctx = filter->ctx;
+		int   nb_pads = filter->nb_inputs;
+		if( !filter || (nb_pads>1 && avfilter_pad_get_type(filter->inputs,0)) != AVMEDIA_TYPE_VIDEO ) {
 			ff_err(AVERROR(EINVAL), "FFVideoStream::create_filter: %s\n", filter_spec);
 			return -1;
 		}
-- 
2.46.3



iPhone11_4K-recorder_59.940HDR10.opts
Description: Binary data
-- 
Cin mailing list
Cin@lists.cinelerra-gg.org
https://lists.cinelerra-gg.org/mailman/listinfo/cin