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