int BM3D_Basic_Data::arguments_process(const VSMap *in, VSMap *out)
{
    if (_Mybase::arguments_process(in, out))
    {
        return 1;
    }

    int error;

    // hard_thr - float
    para.lambda = vsapi->propGetFloat(in, "hard_thr", 0, &error);

    if (error)
    {
        para.lambda = para_default.lambda;
    }
    else if (para.lambda <= 0)
    {
        setError(out, "Invalid \"hard_thr\" assigned, must be a positive floating point number");
        return 1;
    }

    // Initialize filter data for hard-threshold filtering
    init_filter_data();

    return 0;
}
int VBM3D_Final_Data::arguments_process(const VSMap *in, VSMap *out)
{
    if (_Mybase::arguments_process(in, out))
    {
        return 1;
    }

    // Initialize filter data for empirical Wiener filtering
    init_filter_data();

    return 0;
}