diff --git a/libavutil/eval.c b/libavutil/eval.c index dc6b3697bc..349015d4fa 100644 --- a/libavutil/eval.c +++ b/libavutil/eval.c @@ -35,6 +35,7 @@ #include "internal.h" #include "log.h" #include "mathematics.h" +#include "sfc64.h" #include "time.h" #include "avstring.h" #include "timer.h" @@ -55,6 +56,7 @@ typedef struct Parser { void *log_ctx; #define VARS 10 double *var; + FFSFC64 *prng_state; } Parser; static const AVClass eval_class = { @@ -173,6 +175,7 @@ struct AVExpr { } a; struct AVExpr *param[3]; double *var; + FFSFC64 *prng_state; }; static double etime(double v) @@ -231,8 +234,14 @@ static double eval_expr(Parser *p, AVExpr *e) #define COMPUTE_NEXT_RANDOM() \ int idx = av_clip(eval_expr(p, e->param[0]), 0, VARS-1); \ - uint64_t r = isnan(p->var[idx]) ? 0 : p->var[idx]; \ - r = r * 1664525 + 1013904223; \ + FFSFC64 *s = p->prng_state + idx; \ + uint64_t r; \ + \ + if (!s->counter) { \ + r = isnan(p->var[idx]) ? 0 : p->var[idx]; \ + ff_sfc64_init(s, r, r, r, 12); \ + } \ + r = ff_sfc64_get(s); \ p->var[idx] = r; \ case e_random: { @@ -329,7 +338,11 @@ static double eval_expr(Parser *p, AVExpr *e) case e_div: return e->value * (d2 ? (d / d2) : d * INFINITY); case e_add: return e->value * (d + d2); case e_last:return e->value * d2; - case e_st : return e->value * (p->var[av_clip(d, 0, VARS-1)]= d2); + case e_st : { + int index = av_clip(d, 0, VARS-1); + p->prng_state[index].counter = 0; + return e->value * (p->var[index]= d2); + } case e_hypot:return e->value * hypot(d, d2); case e_atan2:return e->value * atan2(d, d2); case e_bitand: return isnan(d) || isnan(d2) ? NAN : e->value * ((long int)d & (long int)d2); @@ -349,6 +362,7 @@ void av_expr_free(AVExpr *e) av_expr_free(e->param[1]); av_expr_free(e->param[2]); av_freep(&e->var); + av_freep(&e->prng_state); av_freep(&e); } @@ -736,7 +750,8 @@ int av_expr_parse(AVExpr **expr, const char *s, goto end; } e->var= av_mallocz(sizeof(double) *VARS); - if (!e->var) { + e->prng_state = av_mallocz(sizeof(*e->prng_state) *VARS); + if (!e->var || !e->prng_state) { ret = AVERROR(ENOMEM); goto end; } @@ -778,6 +793,7 @@ double av_expr_eval(AVExpr *e, const double *const_values, void *opaque) { Parser p = { 0 }; p.var= e->var; + p.prng_state= e->prng_state; p.const_values = const_values; p.opaque = opaque; diff --git a/libavutil/sfc64.h b/libavutil/sfc64.h new file mode 100644 index 0000000000..a1593a0a7b --- /dev/null +++ b/libavutil/sfc64.h @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2024 Michael Niedermayer + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +/** + * @file + * simple Pseudo Random Number Generator + * + * This is a implementation of SFC64, a 64-bit PRNG by Chris Doty-Humphrey. + * + * This Generator is much faster (0m1.872s) than 64bit KISS (0m3.823s) and PCG-XSH-RR-64/32 (0m2.700s) + * And passes testu01 and practrand test suits. + */ + +#ifndef AVUTIL_SFC64_H +#define AVUTIL_SFC64_H + +#include + +typedef struct FFSFC64 { + uint64_t a,b,c,counter; +} FFSFC64; + +static inline uint64_t ff_sfc64_get(FFSFC64 *s) { + uint64_t tmp = s->a + s->b + s->counter++; + s->a = s->b ^ (s->b >> 11); + s->b = s->c + (s->c << 3); // This is a multiply by 9 + s->c = (s->c << 24 | s->c >> 40) + tmp; + return tmp; +} + +/** + * Return the previous random value, and step the generator backward. + * + * It is safe to take values before the first, but such values can be highly + * correlated to the seeds. + */ +static inline uint64_t ff_sfc64_reverse_get(FFSFC64 *s) { + uint64_t prev_c = s->b * 0x8E38E38E38E38E39; + uint64_t tmp = s->c - (prev_c << 24 | prev_c >> 40); + s->b = s->a ^ (s->a >> 11); + s->b ^= s->b >> 22; + s->b ^= s->b >> 44; + + s->a = tmp - s->b - --s->counter; + s->c = prev_c; + + return tmp; +} + +/** + * Initialize sfc64 with up to 3 seeds. + * + * @param rounds number of rounds mixing up state during init. Generally 8-18, larger numbers will help with bad quality seeds. + * 12 is a good choice if all 3 seeds are equal + * + */ +static inline void ff_sfc64_init(FFSFC64 *s, uint64_t seeda, uint64_t seedb, uint64_t seedc, int rounds) { + s->a = seeda; + s->b = seedb; + s->c = seedc; + s->counter = 1; + while (rounds--) + ff_sfc64_get(s); +} + +#endif // AVUTIL_SFC64_H diff --git a/tests/fate/libswresample.mak b/tests/fate/libswresample.mak index 0d29f76024..2fc55ea61a 100644 --- a/tests/fate/libswresample.mak +++ b/tests/fate/libswresample.mak @@ -367,17 +367,17 @@ fate-swr-resample_async-$(3)-$(1)-$(2): FUZZ = 0.1 fate-swr-resample_async-$(3)-$(1)-$(2): REF = tests/data/asynth-$(1)-1.wav endef -fate-swr-resample_async-fltp-44100-8000: CMP_TARGET = 4020.60 -fate-swr-resample_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_async-fltp-44100-8000: CMP_TARGET = 3802.05 +fate-swr-resample_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_async-fltp-8000-44100: CMP_TARGET = 11186.66 -fate-swr-resample_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_async-fltp-8000-44100: CMP_TARGET = 10451.40 +fate-swr-resample_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_async-s16p-44100-8000: CMP_TARGET = 4020.71 -fate-swr-resample_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_async-s16p-44100-8000: CMP_TARGET = 3802.16 +fate-swr-resample_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_async-s16p-8000-44100: CMP_TARGET = 11186.94 -fate-swr-resample_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_async-s16p-8000-44100: CMP_TARGET = 10451.66 +fate-swr-resample_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20350 define ARESAMPLE_EXACT FATE_SWR_RESAMPLE += fate-swr-resample_exact-$(3)-$(1)-$(2) @@ -641,77 +641,77 @@ fate-swr-resample_exact_async-$(3)-$(1)-$(2): FUZZ = 0.1 fate-swr-resample_exact_async-$(3)-$(1)-$(2): REF = tests/data/asynth-$(1)-1.wav endef -fate-swr-resample_exact_async-dblp-44100-48000: CMP_TARGET = 7791.50 -fate-swr-resample_exact_async-dblp-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_async-dblp-44100-48000: CMP_TARGET = 5947.75 +fate-swr-resample_exact_async-dblp-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_async-dblp-44100-8000: CMP_TARGET = 4022.87 -fate-swr-resample_exact_async-dblp-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_async-dblp-44100-8000: CMP_TARGET = 3804.22 +fate-swr-resample_exact_async-dblp-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_async-dblp-48000-44100: CMP_TARGET = 1923.97 -fate-swr-resample_exact_async-dblp-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_async-dblp-48000-44100: CMP_TARGET = 3056.62 +fate-swr-resample_exact_async-dblp-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_async-dblp-48000-8000: CMP_TARGET = 2592.00 -fate-swr-resample_exact_async-dblp-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_async-dblp-48000-8000: CMP_TARGET = 3408.30 +fate-swr-resample_exact_async-dblp-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_async-dblp-8000-44100: CMP_TARGET = 11187.24 -fate-swr-resample_exact_async-dblp-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-dblp-8000-44100: CMP_TARGET = 10450.99 +fate-swr-resample_exact_async-dblp-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-dblp-8000-48000: CMP_TARGET = 11326.80 -fate-swr-resample_exact_async-dblp-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-dblp-8000-48000: CMP_TARGET = 10371.47 +fate-swr-resample_exact_async-dblp-8000-48000: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-fltp-44100-48000: CMP_TARGET = 7791.50 -fate-swr-resample_exact_async-fltp-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_async-fltp-44100-48000: CMP_TARGET = 5947.75 +fate-swr-resample_exact_async-fltp-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_async-fltp-44100-8000: CMP_TARGET = 4022.87 -fate-swr-resample_exact_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_async-fltp-44100-8000: CMP_TARGET = 3804.22 +fate-swr-resample_exact_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_async-fltp-48000-44100: CMP_TARGET = 1923.97 -fate-swr-resample_exact_async-fltp-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_async-fltp-48000-44100: CMP_TARGET = 3056.62 +fate-swr-resample_exact_async-fltp-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_async-fltp-48000-8000: CMP_TARGET = 2592.00 -fate-swr-resample_exact_async-fltp-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_async-fltp-48000-8000: CMP_TARGET = 3408.30 +fate-swr-resample_exact_async-fltp-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_async-fltp-8000-44100: CMP_TARGET = 11187.24 -fate-swr-resample_exact_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-fltp-8000-44100: CMP_TARGET = 10450.99 +fate-swr-resample_exact_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-fltp-8000-48000: CMP_TARGET = 11326.80 -fate-swr-resample_exact_async-fltp-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-fltp-8000-48000: CMP_TARGET = 10371.47 +fate-swr-resample_exact_async-fltp-8000-48000: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-s16p-44100-48000: CMP_TARGET = 7791.50 -fate-swr-resample_exact_async-s16p-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_async-s16p-44100-48000: CMP_TARGET = 5947.75 +fate-swr-resample_exact_async-s16p-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_async-s16p-44100-8000: CMP_TARGET = 4023.05 -fate-swr-resample_exact_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_async-s16p-44100-8000: CMP_TARGET = 3804.37 +fate-swr-resample_exact_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_async-s16p-48000-44100: CMP_TARGET = 1923.96 -fate-swr-resample_exact_async-s16p-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_async-s16p-48000-44100: CMP_TARGET = 3056.62 +fate-swr-resample_exact_async-s16p-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_async-s16p-48000-8000: CMP_TARGET = 2592.15 -fate-swr-resample_exact_async-s16p-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_async-s16p-48000-8000: CMP_TARGET = 3408.50 +fate-swr-resample_exact_async-s16p-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_async-s16p-8000-44100: CMP_TARGET = 11187.58 -fate-swr-resample_exact_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-s16p-8000-44100: CMP_TARGET = 10451.23 +fate-swr-resample_exact_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-s16p-8000-48000: CMP_TARGET = 11327.48 -fate-swr-resample_exact_async-s16p-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-s16p-8000-48000: CMP_TARGET = 10372.00 +fate-swr-resample_exact_async-s16p-8000-48000: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-s32p-44100-48000: CMP_TARGET = 7791.50 -fate-swr-resample_exact_async-s32p-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_async-s32p-44100-48000: CMP_TARGET = 5947.75 +fate-swr-resample_exact_async-s32p-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_async-s32p-44100-8000: CMP_TARGET = 4022.87 -fate-swr-resample_exact_async-s32p-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_async-s32p-44100-8000: CMP_TARGET = 3804.22 +fate-swr-resample_exact_async-s32p-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_async-s32p-48000-44100: CMP_TARGET = 1923.96 -fate-swr-resample_exact_async-s32p-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_async-s32p-48000-44100: CMP_TARGET = 3056.62 +fate-swr-resample_exact_async-s32p-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_async-s32p-48000-8000: CMP_TARGET = 2592.00 -fate-swr-resample_exact_async-s32p-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_async-s32p-48000-8000: CMP_TARGET = 3408.30 +fate-swr-resample_exact_async-s32p-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_async-s32p-8000-44100: CMP_TARGET = 11187.24 -fate-swr-resample_exact_async-s32p-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-s32p-8000-44100: CMP_TARGET = 10450.96 +fate-swr-resample_exact_async-s32p-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_async-s32p-8000-48000: CMP_TARGET = 11326.79 -fate-swr-resample_exact_async-s32p-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_async-s32p-8000-48000: CMP_TARGET = 10371.47 +fate-swr-resample_exact_async-s32p-8000-48000: SIZE_TOLERANCE = 96000 - 20350 define ARESAMPLE_EXACT_LIN FATE_SWR_RESAMPLE += fate-swr-resample_exact_lin-$(3)-$(1)-$(2) @@ -975,77 +975,77 @@ fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): FUZZ = 0.1 fate-swr-resample_exact_lin_async-$(3)-$(1)-$(2): REF = tests/data/asynth-$(1)-1.wav endef -fate-swr-resample_exact_lin_async-dblp-44100-48000: CMP_TARGET = 7791.72 -fate-swr-resample_exact_lin_async-dblp-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_lin_async-dblp-44100-48000: CMP_TARGET = 5948.03 +fate-swr-resample_exact_lin_async-dblp-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_lin_async-dblp-44100-8000: CMP_TARGET = 4023.01 -fate-swr-resample_exact_lin_async-dblp-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_lin_async-dblp-44100-8000: CMP_TARGET = 3804.55 +fate-swr-resample_exact_lin_async-dblp-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_lin_async-dblp-48000-44100: CMP_TARGET = 1923.79 -fate-swr-resample_exact_lin_async-dblp-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_lin_async-dblp-48000-44100: CMP_TARGET = 3056.76 +fate-swr-resample_exact_lin_async-dblp-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_lin_async-dblp-48000-8000: CMP_TARGET = 2591.72 -fate-swr-resample_exact_lin_async-dblp-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_lin_async-dblp-48000-8000: CMP_TARGET = 3408.48 +fate-swr-resample_exact_lin_async-dblp-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_lin_async-dblp-8000-44100: CMP_TARGET = 11187.24 -fate-swr-resample_exact_lin_async-dblp-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-dblp-8000-44100: CMP_TARGET = 10451.07 +fate-swr-resample_exact_lin_async-dblp-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-dblp-8000-48000: CMP_TARGET = 11326.80 -fate-swr-resample_exact_lin_async-dblp-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-dblp-8000-48000: CMP_TARGET = 10371.52 +fate-swr-resample_exact_lin_async-dblp-8000-48000: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-fltp-44100-48000: CMP_TARGET = 7791.72 -fate-swr-resample_exact_lin_async-fltp-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_lin_async-fltp-44100-48000: CMP_TARGET = 5948.03 +fate-swr-resample_exact_lin_async-fltp-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_lin_async-fltp-44100-8000: CMP_TARGET = 4023.01 -fate-swr-resample_exact_lin_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_lin_async-fltp-44100-8000: CMP_TARGET = 3804.55 +fate-swr-resample_exact_lin_async-fltp-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_lin_async-fltp-48000-44100: CMP_TARGET = 1923.79 -fate-swr-resample_exact_lin_async-fltp-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_lin_async-fltp-48000-44100: CMP_TARGET = 3056.76 +fate-swr-resample_exact_lin_async-fltp-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_lin_async-fltp-48000-8000: CMP_TARGET = 2591.72 -fate-swr-resample_exact_lin_async-fltp-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_lin_async-fltp-48000-8000: CMP_TARGET = 3408.48 +fate-swr-resample_exact_lin_async-fltp-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_lin_async-fltp-8000-44100: CMP_TARGET = 11187.25 -fate-swr-resample_exact_lin_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-fltp-8000-44100: CMP_TARGET = 10451.07 +fate-swr-resample_exact_lin_async-fltp-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-fltp-8000-48000: CMP_TARGET = 11326.80 -fate-swr-resample_exact_lin_async-fltp-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-fltp-8000-48000: CMP_TARGET = 10371.52 +fate-swr-resample_exact_lin_async-fltp-8000-48000: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-s16p-44100-48000: CMP_TARGET = 7791.72 -fate-swr-resample_exact_lin_async-s16p-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_lin_async-s16p-44100-48000: CMP_TARGET = 5948.03 +fate-swr-resample_exact_lin_async-s16p-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_lin_async-s16p-44100-8000: CMP_TARGET = 4023.19 -fate-swr-resample_exact_lin_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_lin_async-s16p-44100-8000: CMP_TARGET = 3804.70 +fate-swr-resample_exact_lin_async-s16p-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_lin_async-s16p-48000-44100: CMP_TARGET = 1923.79 -fate-swr-resample_exact_lin_async-s16p-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_lin_async-s16p-48000-44100: CMP_TARGET = 3056.76 +fate-swr-resample_exact_lin_async-s16p-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_lin_async-s16p-48000-8000: CMP_TARGET = 2591.85 -fate-swr-resample_exact_lin_async-s16p-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_lin_async-s16p-48000-8000: CMP_TARGET = 3408.68 +fate-swr-resample_exact_lin_async-s16p-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_lin_async-s16p-8000-44100: CMP_TARGET = 11187.57 -fate-swr-resample_exact_lin_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-s16p-8000-44100: CMP_TARGET = 10451.31 +fate-swr-resample_exact_lin_async-s16p-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-s16p-8000-48000: CMP_TARGET = 11327.48 -fate-swr-resample_exact_lin_async-s16p-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-s16p-8000-48000: CMP_TARGET = 10372.05 +fate-swr-resample_exact_lin_async-s16p-8000-48000: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-s32p-44100-48000: CMP_TARGET = 7791.72 -fate-swr-resample_exact_lin_async-s32p-44100-48000: SIZE_TOLERANCE = 529200 - 20300 +fate-swr-resample_exact_lin_async-s32p-44100-48000: CMP_TARGET = 5948.03 +fate-swr-resample_exact_lin_async-s32p-44100-48000: SIZE_TOLERANCE = 529200 - 20394 -fate-swr-resample_exact_lin_async-s32p-44100-8000: CMP_TARGET = 4023.02 -fate-swr-resample_exact_lin_async-s32p-44100-8000: SIZE_TOLERANCE = 529200 - 20310 +fate-swr-resample_exact_lin_async-s32p-44100-8000: CMP_TARGET = 3804.54 +fate-swr-resample_exact_lin_async-s32p-44100-8000: SIZE_TOLERANCE = 529200 - 20386 -fate-swr-resample_exact_lin_async-s32p-48000-44100: CMP_TARGET = 1923.77 -fate-swr-resample_exact_lin_async-s32p-48000-44100: SIZE_TOLERANCE = 576000 - 20298 +fate-swr-resample_exact_lin_async-s32p-48000-44100: CMP_TARGET = 3056.76 +fate-swr-resample_exact_lin_async-s32p-48000-44100: SIZE_TOLERANCE = 576000 - 20392 -fate-swr-resample_exact_lin_async-s32p-48000-8000: CMP_TARGET = 2591.71 -fate-swr-resample_exact_lin_async-s32p-48000-8000: SIZE_TOLERANCE = 576000 - 20304 +fate-swr-resample_exact_lin_async-s32p-48000-8000: CMP_TARGET = 3408.47 +fate-swr-resample_exact_lin_async-s32p-48000-8000: SIZE_TOLERANCE = 576000 - 20388 -fate-swr-resample_exact_lin_async-s32p-8000-44100: CMP_TARGET = 11187.25 -fate-swr-resample_exact_lin_async-s32p-8000-44100: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-s32p-8000-44100: CMP_TARGET = 10451.04 +fate-swr-resample_exact_lin_async-s32p-8000-44100: SIZE_TOLERANCE = 96000 - 20350 -fate-swr-resample_exact_lin_async-s32p-8000-48000: CMP_TARGET = 11326.81 -fate-swr-resample_exact_lin_async-s32p-8000-48000: SIZE_TOLERANCE = 96000 - 20344 +fate-swr-resample_exact_lin_async-s32p-8000-48000: CMP_TARGET = 10371.53 +fate-swr-resample_exact_lin_async-s32p-8000-48000: SIZE_TOLERANCE = 96000 - 20350 $(call CROSS_TEST,$(SAMPLERATES),ARESAMPLE,s16p,s16le,s16) $(call CROSS_TEST,$(SAMPLERATES),ARESAMPLE,s32p,s32le,s16) diff --git a/tests/ref/fate/eval b/tests/ref/fate/eval index 5b4d93f427..441f9846c4 100644 --- a/tests/ref/fate/eval +++ b/tests/ref/fate/eval @@ -257,7 +257,7 @@ Evaluating 'root(sin(ld(0))+6+sin(ld(0)/12)-log(ld(0)), 100)' 'root(sin(ld(0))+6+sin(ld(0)/12)-log(ld(0)), 100)' -> 60.965601 Evaluating '7000000B*random(0)' -'7000000B*random(0)' -> 0.003078 +'7000000B*random(0)' -> 12864914.486611 Evaluating 'squish(2)' 'squish(2)' -> 0.000335