[FFmpeg-devel] [PATCH 1/2] avfilter/af_ladspa: refactor code setting input control ports values
Stefano Sabatini
stefasab at gmail.com
Fri Sep 27 09:27:01 CEST 2013
On date Tuesday 2013-09-24 16:48:59 +0000, Paul B Mahol encoded:
> Signed-off-by: Paul B Mahol <onemda at gmail.com>
> ---
> libavfilter/af_ladspa.c | 61 ++++++++++++++++++++++++++++++-------------------
> 1 file changed, 37 insertions(+), 24 deletions(-)
>
> diff --git a/libavfilter/af_ladspa.c b/libavfilter/af_ladspa.c
> index d1e3e23..f25699e 100644
> --- a/libavfilter/af_ladspa.c
> +++ b/libavfilter/af_ladspa.c
> @@ -349,6 +349,40 @@ static void *try_load(const char *dir, const char *soname)
> return ret;
> }
>
> +static int set_control(AVFilterContext *ctx, int port, LADSPA_Data value)
> +{
> + LADSPAContext *s = ctx->priv;
> + const char *label = s->desc->Label;
> + LADSPA_PortRangeHint *h = (LADSPA_PortRangeHint *)s->desc->PortRangeHints +
> + s->icmap[port];
> +
> + if (port < 0 || port >= s->nb_inputcontrols) {
> + av_log(ctx, AV_LOG_ERROR, "Control c%d is out of range [0 - %lu].\n",
> + port, s->nb_inputcontrols);
> + return AVERROR(EINVAL);
> + }
> +
> + if (LADSPA_IS_HINT_BOUNDED_BELOW(h->HintDescriptor) &&
> + value < h->LowerBound) {
> + av_log(ctx, AV_LOG_ERROR,
> + "%s: input control c%d is below lower boundary of %0.4f.\n",
> + label, port, h->LowerBound);
> + return AVERROR(EINVAL);
> + }
> +
> + if (LADSPA_IS_HINT_BOUNDED_ABOVE(h->HintDescriptor) &&
> + value > h->UpperBound) {
> + av_log(ctx, AV_LOG_ERROR,
> + "%s: input control c%d is above upper boundary of %0.4f.\n",
> + label, port, h->UpperBound);
> + return AVERROR(EINVAL);
> + }
> +
> + s->ictlv[port] = value;
> +
> + return 0;
> +}
> +
> static av_cold int init(AVFilterContext *ctx)
> {
> LADSPAContext *s = ctx->priv;
> @@ -495,8 +529,8 @@ static av_cold int init(AVFilterContext *ctx)
> // Parse control parameters
> p = s->options;
> while (s->options) {
> - LADSPA_PortRangeHint *h;
> LADSPA_Data val;
> + int ret;
>
> if (!(arg = av_strtok(p, "|", &saveptr)))
> break;
> @@ -507,30 +541,9 @@ static av_cold int init(AVFilterContext *ctx)
> return AVERROR(EINVAL);
> }
>
> - if (i < 0 || i >= s->nb_inputcontrols) {
> - av_log(ctx, AV_LOG_ERROR,
> - "Control c%d is out of range [0 - %lu].\n",
> - i, s->nb_inputcontrols);
> - return AVERROR(EINVAL);
> - }
> -
> - h = (LADSPA_PortRangeHint *)s->desc->PortRangeHints + s->icmap[i];
> - s->ictlv[i] = val;
> + if ((ret = set_control(ctx, i, val)) < 0)
> + return ret;
> s->ctl_needs_value[i] = 0;
> - if (LADSPA_IS_HINT_BOUNDED_BELOW(h->HintDescriptor) &&
> - val < h->LowerBound) {
> - av_log(ctx, AV_LOG_ERROR,
> - "%s: input control c%d is below lower boundary of %0.4f.\n",
> - s->desc->Label, i, h->LowerBound);
> - return AVERROR(EINVAL);
> - }
> - if (LADSPA_IS_HINT_BOUNDED_ABOVE(h->HintDescriptor) &&
> - val > h->UpperBound) {
> - av_log(ctx, AV_LOG_ERROR,
> - "%s: input control c%d is above upper boundary of %0.4f.\n",
> - s->desc->Label, i, h->UpperBound);
> - return AVERROR(EINVAL);
> - }
> }
>
> // Check if any controls are not set
LGTM.
--
FFmpeg = Fundamental and Foolish Mere Pure Exuberant Gangster
More information about the ffmpeg-devel
mailing list