[pulseaudio-discuss] [V2 PATCH] tests: add tolerant variation for comparing the rewind result

Alexander E. Patrakov patrakov at gmail.com
Mon May 25 05:16:10 PDT 2015


25.05.2015 17:05, Hui Wang wrote:
> On 32bits OS, this test case fails. The reason is when rewinding to
> the middle of a block, some of float parameters in the saved_state
> are stored in the memory from FPU registers, and those parameters will
> be used for next time to process data with lfe. Here if FPU register
> is over 32bits, the storing from FPU register to memory will introduce
> some variation, and this small variation will introduce small
> variation to the rewinding result.
>
> So adding the tolerant variation for comparing the rewind result, make
> this test case can work on both 64bits OS and 32bits OS.
>
> Signed-off-by: Hui Wang <hui.wang at canonical.com>
> ---
>   src/tests/lfe-filter-test.c | 10 ++++++----
>   1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/src/tests/lfe-filter-test.c b/src/tests/lfe-filter-test.c
> index 2c6d597..81682cb 100644
> --- a/src/tests/lfe-filter-test.c
> +++ b/src/tests/lfe-filter-test.c
> @@ -37,6 +37,7 @@ static uint8_t *ori_sample_ptr;
>
>   #define ONE_BLOCK_SAMPLES 4096
>   #define TOTAL_SAMPLES 8192
> +#define TOLERANT_VARIATION 1
>
>   static void save_data_block(struct lfe_filter_test *lft, void *d, pa_memblock *blk) {
>       uint8_t *dst = d, *src;
> @@ -63,11 +64,12 @@ static pa_memblock* generate_data_block(struct lfe_filter_test *lft, int start)
>   static int compare_data_block(struct lfe_filter_test *lft, void *a, void *b) {
>       int ret = 0;
>       uint32_t i;
> -    uint32_t fz = pa_frame_size(lft->ss);
> -    uint8_t *r = a, *u = b;
> +    uint16_t *r = a, *u = b;
> +
> +    pa_assert_se(lft->ss->format == PA_SAMPLE_S16NE);

There is no side effect, thus it looks a bit strange to use the _se 
version. But there are already some pa_assert_se() calls in tests that 
don't actually contain side effects. Other than that minor thing, ACK.

>
> -    for (i = 0; i < ONE_BLOCK_SAMPLES * fz; i++) {
> -        if (*r++ != *u++) {
> +    for (i = 0; i < ONE_BLOCK_SAMPLES; i++) {
> +        if (abs(*r++ - *u++) > TOLERANT_VARIATION) {
>               pa_log_error("lfe-filter-test: test failed, the output data in the position 0x%x of a block does not equal!\n", i);
>               ret = -1;
>               break;
>


-- 
Alexander E. Patrakov


More information about the pulseaudio-discuss mailing list