From patchwork Sun Nov 26 22:51:11 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Darnley X-Patchwork-Id: 6375 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp966621jah; Sun, 26 Nov 2017 14:58:18 -0800 (PST) X-Google-Smtp-Source: AGs4zMaX9svzazqhtnxi8XDoRhQIOtv/Xx0HemDtLfXq9XPxwouAz5d+w8s1+PlTl+4yBh9m+kww X-Received: by 10.223.201.10 with SMTP id m10mr4731462wrh.68.1511737098705; Sun, 26 Nov 2017 14:58:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511737098; cv=none; d=google.com; s=arc-20160816; b=N2psRPTvZWx+CzppnE60Dd3zAiRMJ14fm2kLcG+lvODEGrvyAwLGZLP88vTfOeEd9z HEqzgsi8HNAyTW7EDGG+1qL7Gx3u/W59qsk4gU1JgekKk5qm3LNIObh0O5p2h8ESmamX s8jihoZceVshvkF+j1jK+hHuy8jM6UEdTU3cvhzU8tKAr+C3Fr5XdsRlHwselX3UUAHq 1JJ8FonFSjuOwGqAjzV1ojqqD7nMcpLeujOtNQvS/r8pbd+fDnd461GOVgEWY8dQh3f1 vLIxQomFMDxOe7SSxzkdqZWJujOlN/S2YbHp4BxbZr1Lwa9lpyocSa7qzFneMPiU/f4f /R1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=qbzEHNZOspEEQ/NDGMixEibt6D+/ySpImj+PVU3B/ow=; b=RFgOSaEysuGWGJQOVSjYlfnswshyyAVBJzRaHk5rOj09FxNVFU3zhtVhA2X6UGC1FW u7l3crDJqV8ZQgCqlTCDfhXtFwyVsYGzJu5ETtAJ5Et3KrJZVwuE0BYTKlOhWUKcgsph nDnRHEJZOyMXk+CdQLgmbJrLx19asJgJx9RSOSJBI5W5lnkUyYJ8Ck1jaZGunX7Lloea xjcTMnga9IaM4XoscN9PJlLTvj1mQGWM2q6yoTgAWpX7F92DJ4MMBXLdMOA7N1UW+iQm y6ottYHhiWhEgfhkyPhrtkRosLQGkCnnzTjfn02jxwwI9P3UExgwOasTlwswS/uTQ6ZO 5I4A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=u7qyk8SQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j62si11765671wmf.191.2017.11.26.14.58.18; Sun, 26 Nov 2017 14:58:18 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=u7qyk8SQ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CE74768A325; Mon, 27 Nov 2017 00:58:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f66.google.com (mail-wm0-f66.google.com [74.125.82.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C96A368A2DE for ; Mon, 27 Nov 2017 00:58:09 +0200 (EET) Received: by mail-wm0-f66.google.com with SMTP id r68so30928162wmr.3 for ; Sun, 26 Nov 2017 14:58:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=9ef9CSnlHtG0vmlwMl0/QmQuG2Kws7KCr3aAbfyQVsU=; b=u7qyk8SQjbyInyYySKAiJ4LtuLBNLgyHFUV8wFGL0Q+k/9mjd7RiT+35qtMgmRVY5R c0a7FqdRfZZlttoexjLH1yY0l3xfCYxaFXYsVa/t62WqyhRFhKED8EDVbv2Vhs55MQrj 3XnUnFaWsvUkiZDhee7w6Wg6AL8KUjN+D7L4D0IKSm5FaO1fAlIeyms/qCJoCIWwfydu 3rOhbkCU7QlBNSYKsRpWGMdknolPZpjtewQjJL0ky6a2PIy1s3cheenj6wd1EYCf2v5a 6x/UNLe7641xQF84s+JCZB4tUjNAjsN8YfjaBdUdN1BlJWbffo5VB8F6106zeG2KOH3g Vf2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=9ef9CSnlHtG0vmlwMl0/QmQuG2Kws7KCr3aAbfyQVsU=; b=BTsVCCvqNXiZYBmWr7pLn0gj2bbChrjt6DQG3TDSz9oiSO3Km+qx4hc+Jp5sZuJvQM 5FAlbBMsipg69pac75zawK3CEyx6WPfEnKxfasz1dvvBlJe7BP9zYgHoC3mDkl34JyXy Oh0mDklzM2ELTdq3I+B+JZqPq5Mqbo/OWycpfA7IUO93ei1gl0uqJQKkZwDF44Bkth6Q m53rOulNxxSDHW+zf4A9AQRRfr6tgs8wPeYlu/3wdZPJURJma+dzNp3pSRnuBv5gzFin 1106641nVXodrYecmeLdDJr6t6X4Dm6CFkdsU1jcTFeJgmm85X9SX+KIAExMMZ7nBNXI LW5Q== X-Gm-Message-State: AJaThX6eFv8jtwko6IiJq9izpaAqLOrmHDy6pejPoD7EseaVMrrkjRec hn+CDwe8/eO8NLERpyg4KjfE1w== X-Received: by 10.80.187.99 with SMTP id y90mr44564670ede.154.1511736726777; Sun, 26 Nov 2017 14:52:06 -0800 (PST) Received: from Highwind.systemlords.lan (d51a44418.access.telenet.be. [81.164.68.24]) by smtp.gmail.com with ESMTPSA id h56sm22545791ede.15.2017.11.26.14.52.06 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 26 Nov 2017 14:52:06 -0800 (PST) From: James Darnley To: ffmpeg-devel@ffmpeg.org Date: Sun, 26 Nov 2017 23:51:11 +0100 Message-Id: <20171126225111.5108-9-james.darnley@gmail.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20171126225111.5108-1-james.darnley@gmail.com> References: <20171126225111.5108-1-james.darnley@gmail.com> Subject: [FFmpeg-devel] [PATCH 8/8] checkasm: add tests for flacenc lpc coder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- tests/checkasm/flacdsp.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/tests/checkasm/flacdsp.c b/tests/checkasm/flacdsp.c index dccb54d672..08e5e264ea 100644 --- a/tests/checkasm/flacdsp.c +++ b/tests/checkasm/flacdsp.c @@ -20,13 +20,16 @@ #include #include "checkasm.h" +#include "libavcodec/flac.h" #include "libavcodec/flacdsp.h" #include "libavutil/common.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" +#include "libavcodec/mathops.h" #define BUF_SIZE 256 #define MAX_CHANNELS 8 +#define BLOCKSIZE 4608 #define randomize_buffers() \ do { \ @@ -53,6 +56,23 @@ static void check_decorrelate(uint8_t **ref_dst, uint8_t **ref_src, uint8_t **ne bench_new(new_dst, (int32_t **)new_src, channels, BUF_SIZE / sizeof(int32_t), 8); } +static void randomize_coefs(int32_t coef[32], int bits) +{ + int i; + for (i = 0; i < 32; i++) + coef[i] = sign_extend(rnd(), bits); +} + +static void randomize_audio(int32_t *a, int32_t *b, int bits) +{ + int i; + for (i = 0; i < BLOCKSIZE; i++) { + int32_t value = sign_extend(rnd(), bits); + a[i] = value; + b[i] = value; + } +} + void checkasm_check_flacdsp(void) { LOCAL_ALIGNED_16(uint8_t, ref_dst, [BUF_SIZE*MAX_CHANNELS]); @@ -87,4 +107,56 @@ void checkasm_check_flacdsp(void) } report("decorrelate"); + + if (check_func(h.lpc16_encode, "flacdsp.lpc16_encode")) { + int32_t samples_ref[BLOCKSIZE]; + int32_t samples_new[BLOCKSIZE]; + int32_t residual_ref[BLOCKSIZE+23]; + int32_t residual_new[BLOCKSIZE+23]; + int32_t coefs[32]; + declare_func(void, int32_t *res, const int32_t *smp, int len, int order, + const int32_t coefs[32], int shift); + int order; + + randomize_audio(samples_ref, samples_new, 16); + randomize_coefs(coefs, 16); + for (order = 1; order < 32; order++) { + int shift = rnd() & 15; + call_ref(residual_ref, samples_ref, BLOCKSIZE, order, coefs, shift); + call_new(residual_new, samples_new, BLOCKSIZE, order, coefs, shift); + if (memcmp(samples_ref, samples_new, sizeof samples_ref) + || memcmp(residual_ref, residual_new, BLOCKSIZE * sizeof(int32_t))) { + fprintf(stderr, "failed at order= %d\n", order); + fail(); + } + bench_new(residual_new, samples_new, BLOCKSIZE, order, coefs, shift); + } + } + report("flacdsp.lpc16_encode"); + + if (check_func(h.lpc32_encode, "flacdsp.lpc32_encode")) { + int32_t samples_ref[BLOCKSIZE]; + int32_t samples_new[BLOCKSIZE]; + int32_t residual_ref[BLOCKSIZE+23]; + int32_t residual_new[BLOCKSIZE+23]; + int32_t coefs[32]; + declare_func(void, int32_t *res, const int32_t *smp, int len, int order, + const int32_t coefs[32], int shift); + int order; + + randomize_audio(samples_ref, samples_new, 24); + randomize_coefs(coefs, 24); + for (order = 1; order < 32; order++) { + int shift = rnd() & 15; + call_ref(residual_ref, samples_ref, BLOCKSIZE, order, coefs, shift); + call_new(residual_new, samples_new, BLOCKSIZE, order, coefs, shift); + if (memcmp(samples_ref, samples_new, sizeof samples_ref) + || memcmp(residual_ref, residual_new, BLOCKSIZE * sizeof(int32_t))) { + fprintf(stderr, "failed at order= %d\n", order); + fail(); + } + bench_new(residual_new, samples_new, BLOCKSIZE, order, coefs, shift); + } + } + report("flacdsp.lpc32_encode"); }