1715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten/*
2715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * Copyright (C) 2016 The Android Open Source Project
3715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten *
4715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
5715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * you may not use this file except in compliance with the License.
6715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * You may obtain a copy of the License at
7715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten *
8715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
9715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten *
10715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * Unless required by applicable law or agreed to in writing, software
11715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
12715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * See the License for the specific language governing permissions and
14715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten * limitations under the License.
15715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten */
16715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten
17715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten#include <math.h>
18715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten#include <stdio.h>
19715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten#include <stdlib.h>
20715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten#include <audio_utils/limiter.h>
21715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten
22715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kastenint main(int argc, char **argv)
23715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten{
24715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten    int i;
25715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten    if (argc > 1) {
26715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten        for (i = 1; i < argc; i++) {
27715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            float x = atof(argv[i]);
28715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            printf("limit(%g)=%g\n", x, limiter(x));
29715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten        }
30715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten    } else {
31715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten        for (i = 0; i <= 150; i++) {
32715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            float in = (float) ((double) i * 0.01);
33715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            float out = limiter(in);
34715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            printf("%g,%g\n", in, out);
35715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            if (i != 0) {
36715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten                out = limiter(-in);
37715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten                printf("%g,%g\n", -in, out);
38715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten            }
39715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten        }
40715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten    }
41715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten    return EXIT_SUCCESS;
42715183bb3c39de2fb0b9d7ee4bc04a22f3ab56c9Glenn Kasten}
43