Recognizes if input is ogg or not.
[xiph.git] / postfish / multicompand.h
blob575800750190ef79f38102b9063974df9347baa3
1 /*
3 * postfish
4 *
5 * Copyright (C) 2002-2005 Monty and Xiph.Org
7 * Postfish is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
12 * Postfish is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with Postfish; see the file COPYING. If not, write to the
19 * Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24 #include "postfish.h"
26 #define multicomp_freqs_max 20
27 #define multicomp_banks 3
29 static const int multicomp_freqs[multicomp_banks]={10,20,5};
30 static const float multicomp_freq_list[multicomp_banks][multicomp_freqs_max+1]={
32 {31.5,63,125,250,500,1000,2000,4000,8000,16000,9e10},
34 {31.5,44,63,88,125,175,250,350,500,700,1000,1400,
35 2000,2800,4000,5600,8000,11000,16000,20000,9e10},
37 {31.5,125,500,2000,8000,9e10},
41 static char * const multicomp_freq_labels[multicomp_banks][multicomp_freqs_max]={
42 {"31.5","63","125","250","500","1k","2k","4k","8k","16k"},
43 {"31.5","44","63","88","125","175","250","350","500","700","1k","1.4k",
44 "2k","2.8k","4k","5.6k","8k","11k","16k","20k"},
45 {"31.5","125","500","2k","8k"},
48 typedef struct {
49 sig_atomic_t static_o[multicomp_freqs_max];
50 sig_atomic_t static_u[multicomp_freqs_max];
51 } banked_multicompand_settings;
53 typedef struct {
55 banked_multicompand_settings bc[multicomp_banks];
57 sig_atomic_t over_mode;
58 sig_atomic_t over_softknee;
59 sig_atomic_t over_ratio;
60 sig_atomic_t over_attack;
61 sig_atomic_t over_decay;
62 sig_atomic_t over_lookahead;
64 sig_atomic_t base_mode;
65 sig_atomic_t base_attack;
66 sig_atomic_t base_decay;
67 sig_atomic_t base_ratio;
69 sig_atomic_t under_mode;
70 sig_atomic_t under_softknee;
71 sig_atomic_t under_ratio;
72 sig_atomic_t under_attack;
73 sig_atomic_t under_decay;
74 sig_atomic_t under_lookahead;
76 sig_atomic_t active_bank;
78 sig_atomic_t panel_active;
79 sig_atomic_t panel_visible;
80 } multicompand_settings;
82 extern void multicompand_reset();
83 extern int multicompand_load(int outch);
85 extern time_linkage *multicompand_read_channel(time_linkage *in);
86 extern time_linkage *multicompand_read_master(time_linkage *in);
88 extern int pull_multicompand_feedback_channel(float **peak,float **rms,int *bands);
89 extern int pull_multicompand_feedback_master(float **peak,float **rms,int *bands);
91 extern multicompand_settings multi_master_set;
92 extern multicompand_settings *multi_channel_set;