Thank you, it worked perfectly.

On Sat, Feb 6, 2021 at 1:10 AM Paul B Mahol <[email protected]> wrote:

> Nope, initialization is done only once, To set options at runtime
> use avfilter_graph_send_command()
>
> On Fri, Feb 5, 2021 at 11:07 PM ilkercan Kaya <[email protected]>
> wrote:
>
>> I see and whenever I toggle my enable flag I have to recall
>> avfilter_init_str() to make sure filtergraph takes the newest set enable
>> flag right?
>>
>> On Sat, Feb 6, 2021, 01:00 Paul B Mahol <[email protected]> wrote:
>>
>>>
>>>
>>> On Fri, Feb 5, 2021 at 10:57 PM ilkercan Kaya <[email protected]>
>>> wrote:
>>>
>>>> There are two APIs to set options,
>>>>
>>>> Is the other one through a dictionary? I tried to find it through
>>>> examples but that's all I got.
>>>>
>>>> Could you tell me the other API so I can try to set the enable flag
>>>> through there.
>>>>
>>>
>>> The one where you concat options as string with values.... might not be
>>> friendly.
>>>
>>> avfilter_init_str()
>>>
>>>
>>>>
>>>> On Fri, Feb 5, 2021 at 3:25 PM Paul B Mahol <[email protected]> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Fri, Feb 5, 2021 at 2:49 AM ilkercan Kaya <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> enable option is also command for every filter that supports
>>>>>>> timeline. Yes it looks like not documented explicitly.
>>>>>>
>>>>>> Does this mean that I can set "enable" as an option? if so I tried to
>>>>>> do the following before initializing the filter:
>>>>>>
>>>>>> if ((res = av_opt_set_int(ctx, "enable", 1, AV_OPT_SEARCH_CHILDREN)) == 
>>>>>> 0) {
>>>>>>     isOn = true;
>>>>>> } else {
>>>>>>     isFxBroken = true;
>>>>>>     LOGE("AvFX::activateFilter failed! %s %s", name,
>>>>>>          av_err2str(res));
>>>>>> }
>>>>>>
>>>>>> But the call always landed on else with " AvFX::activateFilter
>>>>>> failed!  agate Invalid argument"
>>>>>> Than I tried the following:
>>>>>>
>>>>>> if ((res = av_opt_set(ctx, "enable", "1", AV_OPT_SEARCH_CHILDREN)) == 0) 
>>>>>> {
>>>>>>     isOn = true;
>>>>>> } else {
>>>>>>     isFxBroken = true;
>>>>>>     LOGE("AvFX::activateFilter failed! %s %s", name,
>>>>>>          av_err2str(res));
>>>>>> }
>>>>>>
>>>>>> This time it did not land on else but this just makes it crash the
>>>>>> app when data is passed through the filtergraph with "null pointer
>>>>>> deference on libavfilter.so"
>>>>>>
>>>>>> How may I set this enable option through the code?
>>>>>>
>>>>>
>>>>> There is nothing wrong with your code. It is just bug in libavfilter,
>>>>> I posted patch to fix it on devel mailing list.
>>>>>
>>>>> There are two APIs to set options, one of them is not much tested and
>>>>> thus it got broken.
>>>>>
>>>>>
>>>>>>
>>>>>> On Tue, Feb 2, 2021 at 12:52 AM Paul B Mahol <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Feb 1, 2021 at 10:33 PM ilkercan Kaya <
>>>>>>> [email protected]> wrote:
>>>>>>>
>>>>>>>> A simpler solution, if you only need to implement enabling and
>>>>>>>>> disabling
>>>>>>>>> some of the filters, you can expect the "timeline" support does the
>>>>>>>>> trick:
>>>>>>>>
>>>>>>>>
>>>>>>>> I looked at timeline support, correct me if I am wrong but it is
>>>>>>>> done through the *enable_str  *property of *AVFilterContext*. It
>>>>>>>> is activated with *avfilter_init_str *call. This seems like
>>>>>>>> setting the *enable_str  * evaluation can only be done once
>>>>>>>> without reiniting the whole graph. If this is the case, is there a way 
>>>>>>>> to
>>>>>>>> pass a custom variable to the expression so that I can switch it on or 
>>>>>>>> off?
>>>>>>>> The case in the example at the documentation, smartblur is hardcoded 
>>>>>>>> to be
>>>>>>>> activated between 10 seconds to 3 minutes, in my case I can not foresee
>>>>>>>> when the filter will be turned on/off.
>>>>>>>>
>>>>>>>
>>>>>>> enable option is also command for every filter that supports
>>>>>>> timeline. Yes it looks like not documented explicitly.
>>>>>>>
>>>>>>> Just tried it and works.
>>>>>>>
>>>>>>> mpv crowd_run_1080p50.y4m -vf "lavfi=[sendcmd=2.0 colorcorrect
>>>>>>> enable 0,colorcorrect=saturation=0]"
>>>>>>>
>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Feb 1, 2021 at 11:10 PM Paul B Mahol <[email protected]>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> lowpass, highpass and agate on master git version have both
>>>>>>>>> timeline and command support.
>>>>>>>>>
>>>>>>>>> On Mon, Feb 1, 2021 at 7:39 PM ilkercan Kaya <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Hi Everyone,
>>>>>>>>>>
>>>>>>>>>> I am making a mobile music app where the user can add multiple
>>>>>>>>>> different FXS at runtime to current playing music through a two 
>>>>>>>>>> dimensional
>>>>>>>>>> pad with an effects header. I am using FFmpeg, libavfilter in C++ to 
>>>>>>>>>> add
>>>>>>>>>> multiple FX to the audio.
>>>>>>>>>>
>>>>>>>>>> My problem is, the user can disable any of the FX's I am using at
>>>>>>>>>> any time as they wish, the effects I use are agate, lowpass, 
>>>>>>>>>> highpass. The
>>>>>>>>>> graph is:
>>>>>>>>>>
>>>>>>>>>> abuffer -> lowpass -> highpass -> agate -> aformat -> abuffersink.
>>>>>>>>>>
>>>>>>>>>> From time to time, I want to disable some of the following
>>>>>>>>>> lowpass, highpass, agate. So I thought I could just reconfigure the 
>>>>>>>>>> graph
>>>>>>>>>> and basically get rid of links to fulfil my wish. I am not sure this 
>>>>>>>>>> is the
>>>>>>>>>> right way to do it tho. I tried to dig online but all I could find 
>>>>>>>>>> was a
>>>>>>>>>> thread from 2012 with no conclusion. Libavfilter documentation 
>>>>>>>>>> doesn't say
>>>>>>>>>> anything about reconfigure or reset existing filtergraph (of that I 
>>>>>>>>>> could
>>>>>>>>>> find).
>>>>>>>>>>
>>>>>>>>>> What would be the best way to do this?
>>>>>>>>>>
>>>>>>>>>> Thank you!
>>>>>>>>>> _______________________________________________
>>>>>>>>>> Libav-user mailing list
>>>>>>>>>> [email protected]
>>>>>>>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>>>>>>>
>>>>>>>>>> To unsubscribe, visit link above, or email
>>>>>>>>>> [email protected] with subject "unsubscribe".
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> Libav-user mailing list
>>>>>>>>> [email protected]
>>>>>>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>>>>>>
>>>>>>>>> To unsubscribe, visit link above, or email
>>>>>>>>> [email protected] with subject "unsubscribe".
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> Libav-user mailing list
>>>>>>>> [email protected]
>>>>>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>>>>>
>>>>>>>> To unsubscribe, visit link above, or email
>>>>>>>> [email protected] with subject "unsubscribe".
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Libav-user mailing list
>>>>>>> [email protected]
>>>>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>>>>
>>>>>>> To unsubscribe, visit link above, or email
>>>>>>> [email protected] with subject "unsubscribe".
>>>>>>
>>>>>> _______________________________________________
>>>>>> Libav-user mailing list
>>>>>> [email protected]
>>>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>>>
>>>>>> To unsubscribe, visit link above, or email
>>>>>> [email protected] with subject "unsubscribe".
>>>>>
>>>>> _______________________________________________
>>>>> Libav-user mailing list
>>>>> [email protected]
>>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>>
>>>>> To unsubscribe, visit link above, or email
>>>>> [email protected] with subject "unsubscribe".
>>>>
>>>> _______________________________________________
>>>> Libav-user mailing list
>>>> [email protected]
>>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>>
>>>> To unsubscribe, visit link above, or email
>>>> [email protected] with subject "unsubscribe".
>>>
>>> _______________________________________________
>>> Libav-user mailing list
>>> [email protected]
>>> https://ffmpeg.org/mailman/listinfo/libav-user
>>>
>>> To unsubscribe, visit link above, or email
>>> [email protected] with subject "unsubscribe".
>>
>> _______________________________________________
>> Libav-user mailing list
>> [email protected]
>> https://ffmpeg.org/mailman/listinfo/libav-user
>>
>> To unsubscribe, visit link above, or email
>> [email protected] with subject "unsubscribe".
>
> _______________________________________________
> Libav-user mailing list
> [email protected]
> https://ffmpeg.org/mailman/listinfo/libav-user
>
> To unsubscribe, visit link above, or email
> [email protected] with subject "unsubscribe".
_______________________________________________
Libav-user mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/libav-user

To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".

Reply via email to