1/*** 2 This file is part of PulseAudio. 3 4 PulseAudio is free software; you can redistribute it and/or modify 5 it under the terms of the GNU Lesser General Public License as published 6 by the Free Software Foundation; either version 2.1 of the License, 7 or (at your option) any later version. 8 9 PulseAudio is distributed in the hope that it will be useful, but 10 WITHOUT ANY WARRANTY; without even the implied warranty of 11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 General Public License for more details. 13 14 You should have received a copy of the GNU Lesser General Public License 15 along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. 16***/ 17 18#ifdef HAVE_CONFIG_H 19#include <config.h> 20#endif 21 22#include <stdio.h> 23#include <stdlib.h> 24 25#include <check.h> 26 27#include <pulse/timeval.h> 28 29#include <pulsecore/log.h> 30#include <pulsecore/time-smoother.h> 31 32START_TEST (smoother_test) { 33 pa_usec_t x; 34 unsigned u = 0; 35 pa_smoother *s; 36 int m; 37 38/* unsigned msec[] = { */ 39/* 200, 200, */ 40/* 300, 320, */ 41/* 400, 400, */ 42/* 500, 480, */ 43/* 0, 0 */ 44/* }; */ 45 46 int msec[200]; 47 48 srand(0); 49 50 if (!getenv("MAKE_CHECK")) 51 pa_log_set_level(PA_LOG_DEBUG); 52 53 for (m = 0, u = 0; u < PA_ELEMENTSOF(msec); u+= 2) { 54 55 msec[u] = m+1 + (rand() % 100) - 50; 56 msec[u+1] = m + (rand() % 2000) - 1000 + 5000; 57 58 m += rand() % 100; 59 60 if (msec[u] < 0) 61 msec[u] = 0; 62 63 if (msec[u+1] < 0) 64 msec[u+1] = 0; 65 } 66 67 s = pa_smoother_new(700*PA_USEC_PER_MSEC, 2000*PA_USEC_PER_MSEC, false, true, 6, 0, true); 68 69 for (x = 0, u = 0; x < PA_USEC_PER_SEC * 10; x += PA_USEC_PER_MSEC) { 70 71 while (u < PA_ELEMENTSOF(msec) && (pa_usec_t) msec[u]*PA_USEC_PER_MSEC < x) { 72 pa_smoother_put(s, (pa_usec_t) msec[u] * PA_USEC_PER_MSEC, (pa_usec_t) msec[u+1] * PA_USEC_PER_MSEC); 73 pa_log_debug("%i\t\t%i", msec[u], msec[u+1]); 74 u += 2; 75 76 if (u < PA_ELEMENTSOF(msec)) 77 pa_smoother_resume(s, (pa_usec_t) msec[u] * PA_USEC_PER_MSEC, true); 78 } 79 80 pa_log_debug("%llu\t%llu", (unsigned long long) (x/PA_USEC_PER_MSEC), (unsigned long long) (pa_smoother_get(s, x)/PA_USEC_PER_MSEC)); 81 } 82 83 pa_smoother_free(s); 84} 85END_TEST 86 87int main(int argc, char *argv[]) { 88 int failed = 0; 89 Suite *s; 90 TCase *tc; 91 SRunner *sr; 92 93 s = suite_create("Smoother"); 94 tc = tcase_create("smoother"); 95 tcase_add_test(tc, smoother_test); 96 suite_add_tcase(s, tc); 97 98 sr = srunner_create(s); 99 srunner_run_all(sr, CK_NORMAL); 100 failed = srunner_ntests_failed(sr); 101 srunner_free(sr); 102 103 return (failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; 104} 105