]> code.delx.au - pulseaudio/blob - src/tests/smoother-test.c
catch up with trunk HEAD (i.e. 2118:2213)
[pulseaudio] / src / tests / smoother-test.c
1 /* $Id$ */
2
3 /***
4 This file is part of PulseAudio.
5
6 PulseAudio is free software; you can redistribute it and/or modify
7 it under the terms of the GNU Lesser General Public License as published
8 by the Free Software Foundation; either version 2 of the License,
9 or (at your option) any later version.
10
11 PulseAudio is distributed in the hope that it will be useful, but
12 WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with PulseAudio; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19 USA.
20 ***/
21
22 #ifdef HAVE_CONFIG_H
23 #include <config.h>
24 #endif
25
26 #include <stdio.h>
27 #include <stdlib.h>
28
29 #include <pulsecore/time-smoother.h>
30 #include <pulse/timeval.h>
31
32 int main(int argc, char*argv[]) {
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 for (m = 0, u = 0; u < PA_ELEMENTSOF(msec)-2; u+= 2) {
51
52 msec[u] = m+1;
53 msec[u+1] = m + rand() % 2000 - 1000;
54
55 m += rand() % 100;
56
57 if (msec[u+1] < 0)
58 msec[u+1] = 0;
59 }
60
61 msec[PA_ELEMENTSOF(msec)-2] = 0;
62 msec[PA_ELEMENTSOF(msec)-1] = 0;
63
64 s = pa_smoother_new(1000*PA_USEC_PER_MSEC, 2000*PA_USEC_PER_MSEC, TRUE);
65
66 for (x = 0, u = 0; x < PA_USEC_PER_SEC * 10; x += PA_USEC_PER_MSEC) {
67
68 while (msec[u] > 0 && (pa_usec_t) msec[u]*PA_USEC_PER_MSEC < x) {
69 pa_smoother_put(s, msec[u]*PA_USEC_PER_MSEC, msec[u+1]*PA_USEC_PER_MSEC);
70 printf("%i\t\t%i\n", msec[u], msec[u+1]);
71 u += 2;
72 }
73
74 printf("%llu\t%llu\n", (unsigned long long) (x/PA_USEC_PER_MSEC), (unsigned long long) (pa_smoother_get(s, x)/PA_USEC_PER_MSEC));
75 }
76
77 pa_smoother_free(s);
78
79 return 0;
80 }