Re: [ecasound] warning on cop-add/set during processing normal?

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: Re: [ecasound] warning on cop-add/set during processing normal?
From: Kai Vehmanen (k_AT_eca.cx)
Date: Sat Feb 15 2003 - 04:10:20 EET


On 3 Feb 2003, Adam Linson wrote:

> when using cop-add/set with a running engine, I sometimes get:
[...]
> Warning: DBC_REQUIRE failed - "is_enabled() != true",
> eca-chainsetup.cpp, 1922
[...]
> however, everything seems to work, despite the warning (and when using
> an eci app written in C, "eci_last_error()" returns an empty string).

Yup, the above warning is actually incorrect. In this particular case we
are doing something dangerous during real-time processing, but here we
break the rule on purpose (and without consequences), so the warning is
not needed. I've fixed this in CVS.

> i checked the source, and saw a "FIXME" about "adding effects
> on-the-fly", but I wasn't too clear on the significance this has, since

Yes, the trick is that we've stopped the engine before adding the effect.
The check was there in case some other part of the codebase tries to add
effects without first stopping the engine.

Anyways, the check was still good as it forced me to a) not forget this
issus, and b) really go through all related code-paths.

But do report about these. You should not see any DBC-warnings during
normal use. Some of these are not actually critical, but they still need
to be fixed sooner or later.

> the docs still seem to indicate that cop-add/set can be used with a
> connected chainsetup and/or during processing (I assume this means with
> a running engine).

Yes. The cop-add handler can stop and then restart the engine. cop-set is
really rt-safe (we can edit effect parameter values while the engine is
running).

> PS while I am "here", I might as well ask if there is a
> "last_string_list()" implementation for the C-version of eci. i can't
> seem to find any way to invoke this.

In C, this functionality is implemented using two functions:

int eci_last_string_list_count(void);
const char* eci_last_string_list_item(int n);

With the first one you can query the length of the string list, and
then with the second one get the indivial list items (and at a time of
course).

-- 
 http://www.eca.cx
 Audio software for Linux!


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sat Feb 15 2003 - 04:03:38 EET