Mercurial > mplayer.hg
annotate libaf/af_volume.c @ 35967:76d4f38ffdf9
Fix crash with file selector after pressing OK.
The crash would occur with the "dot directory" selected and pressing OK
when previously either the "directory up" button or OK (to refresh the
file list) has been pressed.
author | ib |
---|---|
date | Wed, 27 Mar 2013 18:56:13 +0000 |
parents | a93891202051 |
children | 2f815fdd521c |
rev | line source |
---|---|
28229
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
1 /* |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
2 * Copyright (C)2002 Anders Johansson ajh@atri.curtin.edu.au |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
3 * |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
4 * This file is part of MPlayer. |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
5 * |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
6 * MPlayer is free software; you can redistribute it and/or modify |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
9 * (at your option) any later version. |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
10 * |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
11 * MPlayer is distributed in the hope that it will be useful, |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
14 * GNU General Public License for more details. |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
15 * |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
17 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
72d0b1444141
Replace informal license notices by standard license header
diego
parents:
24888
diff
changeset
|
19 */ |
8607 | 20 |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
21 /* This audio filter changes the volume of the sound, and can be used |
8607 | 22 when the mixer doesn't support the PCM channel. It can handle |
29826 | 23 between 1 and AF_NCH channels. The volume can be adjusted between -60dB |
8607 | 24 to +20dB and is set on a per channels basis. The is accessed through |
25 AF_CONTROL_VOLUME_LEVEL. | |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
26 |
8607 | 27 The filter has support for soft-clipping, it is enabled by |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
28 AF_CONTROL_VOLUME_SOFTCLIPP. It has also a probing feature which |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
29 can be used to measure the power in the audio stream, both an |
8607 | 30 instantaneous value and the maximum value can be probed. The |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
31 probing is enable by AF_CONTROL_VOLUME_PROBE_ON_OFF and is done on a |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
32 per channel basis. The result from the probing is obtained using |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
33 AF_CONTROL_VOLUME_PROBE_GET and AF_CONTROL_VOLUME_PROBE_GET_MAX. The |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
34 probed values are calculated in dB. |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
35 */ |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
36 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
37 #include <stdio.h> |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
38 #include <stdlib.h> |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
39 #include <string.h> |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
40 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
41 #include <inttypes.h> |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
42 #include <math.h> |
8607 | 43 #include <limits.h> |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
44 |
34174
a93891202051
Add missing mp_msg.h #includes, remove some unnecessary ones.
diego
parents:
32537
diff
changeset
|
45 #include "mp_msg.h" |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
46 #include "af.h" |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
47 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
48 // Data for specific instances of this filter |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
49 typedef struct af_volume_s |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
50 { |
8607 | 51 int enable[AF_NCH]; // Enable/disable / channel |
52 float pow[AF_NCH]; // Estimated power level [dB] | |
53 float max[AF_NCH]; // Max Power level [dB] | |
54 float level[AF_NCH]; // Gain level for each channel | |
55 float time; // Forgetting factor for power estimate | |
56 int soft; // Enable/disable soft clipping | |
57 int fast; // Use fix-point volume control | |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
58 }af_volume_t; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
59 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
60 // Initialization and runtime control |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
61 static int control(struct af_instance_s* af, int cmd, void* arg) |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
62 { |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
63 af_volume_t* s = (af_volume_t*)af->setup; |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
64 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
65 switch(cmd){ |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
66 case AF_CONTROL_REINIT: |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
67 // Sanity check |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
68 if(!arg) return AF_ERROR; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
69 |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
70 af->data->rate = ((af_data_t*)arg)->rate; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
71 af->data->nch = ((af_data_t*)arg)->nch; |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
72 |
14245 | 73 if(s->fast && (((af_data_t*)arg)->format != (AF_FORMAT_FLOAT_NE))){ |
74 af->data->format = AF_FORMAT_S16_NE; | |
8607 | 75 af->data->bps = 2; |
76 } | |
77 else{ | |
78 // Cutoff set to 10Hz for forgetting factor | |
79 float x = 2.0*M_PI*15.0/(float)af->data->rate; | |
80 float t = 2.0-cos(x); | |
81 s->time = 1.0 - (t - sqrt(t*t - 1)); | |
29049 | 82 mp_msg(MSGT_AFILTER, MSGL_DBG2, "[volume] Forgetting factor = %0.5f\n",s->time); |
14245 | 83 af->data->format = AF_FORMAT_FLOAT_NE; |
8607 | 84 af->data->bps = 4; |
85 } | |
86 return af_test_output(af,(af_data_t*)arg); | |
7993
ea0680d87f3f
Changing the behavour of the commandline parameter -af to conform with -vop. Adding new commanline parameter -af-adv for advanced af options. Adding changes to volume control to support commandline parameters.
anders
parents:
7974
diff
changeset
|
87 case AF_CONTROL_COMMAND_LINE:{ |
14068
f1372a7d9ee9
very old 10l, discussed a long time ago but never fixed (default should be same vol, not -10 dB)
rfelker
parents:
13602
diff
changeset
|
88 float v=0.0; |
8607 | 89 float vol[AF_NCH]; |
90 int i; | |
91 sscanf((char*)arg,"%f:%i", &v, &s->soft); | |
92 for(i=0;i<AF_NCH;i++) vol[i]=v; | |
93 return control(af,AF_CONTROL_VOLUME_LEVEL | AF_CONTROL_SET, vol); | |
7993
ea0680d87f3f
Changing the behavour of the commandline parameter -af to conform with -vop. Adding new commanline parameter -af-adv for advanced af options. Adding changes to volume control to support commandline parameters.
anders
parents:
7974
diff
changeset
|
94 } |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
95 case AF_CONTROL_POST_CREATE: |
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
96 s->fast = ((((af_cfg_t*)arg)->force & AF_INIT_FORMAT_MASK) == |
8868
398e3fb7c103
10l bug for float conversion control + feature fix in volume control
anders
parents:
8867
diff
changeset
|
97 AF_INIT_FLOAT) ? 0 : 1; |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
98 return AF_OK; |
8607 | 99 case AF_CONTROL_VOLUME_ON_OFF | AF_CONTROL_SET: |
100 memcpy(s->enable,(int*)arg,AF_NCH*sizeof(int)); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
101 return AF_OK; |
8607 | 102 case AF_CONTROL_VOLUME_ON_OFF | AF_CONTROL_GET: |
103 memcpy((int*)arg,s->enable,AF_NCH*sizeof(int)); | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
104 return AF_OK; |
8607 | 105 case AF_CONTROL_VOLUME_SOFTCLIP | AF_CONTROL_SET: |
106 s->soft = *(int*)arg; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
107 return AF_OK; |
8607 | 108 case AF_CONTROL_VOLUME_SOFTCLIP | AF_CONTROL_GET: |
109 *(int*)arg = s->soft; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
110 return AF_OK; |
8607 | 111 case AF_CONTROL_VOLUME_LEVEL | AF_CONTROL_SET: |
112 return af_from_dB(AF_NCH,(float*)arg,s->level,20.0,-200.0,60.0); | |
113 case AF_CONTROL_VOLUME_LEVEL | AF_CONTROL_GET: | |
114 return af_to_dB(AF_NCH,s->level,(float*)arg,20.0); | |
115 case AF_CONTROL_VOLUME_PROBE | AF_CONTROL_GET: | |
116 return af_to_dB(AF_NCH,s->pow,(float*)arg,10.0); | |
117 case AF_CONTROL_VOLUME_PROBE_MAX | AF_CONTROL_GET: | |
118 return af_to_dB(AF_NCH,s->max,(float*)arg,10.0); | |
8186 | 119 case AF_CONTROL_PRE_DESTROY:{ |
120 float m = 0.0; | |
121 int i; | |
8868
398e3fb7c103
10l bug for float conversion control + feature fix in volume control
anders
parents:
8867
diff
changeset
|
122 if(!s->fast){ |
398e3fb7c103
10l bug for float conversion control + feature fix in volume control
anders
parents:
8867
diff
changeset
|
123 for(i=0;i<AF_NCH;i++) |
398e3fb7c103
10l bug for float conversion control + feature fix in volume control
anders
parents:
8867
diff
changeset
|
124 m=max(m,s->max[i]); |
12641
61f3fce1e933
remove the latest use of log10 in favor of the better af_to_dB helper function, patch by Reimar Doffinger
alex
parents:
9043
diff
changeset
|
125 af_to_dB(1, &m, &m, 10.0); |
29049 | 126 mp_msg(MSGT_AFILTER, MSGL_INFO, "[volume] The maximum volume was %0.2fdB \n", m); |
8868
398e3fb7c103
10l bug for float conversion control + feature fix in volume control
anders
parents:
8867
diff
changeset
|
127 } |
8186 | 128 return AF_OK; |
129 } | |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
130 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
131 return AF_UNKNOWN; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
132 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
133 |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
134 // Deallocate memory |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
135 static void uninit(struct af_instance_s* af) |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
136 { |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
137 free(af->data); |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
138 free(af->setup); |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
139 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
140 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
141 // Filter data through filter |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
142 static af_data_t* play(struct af_instance_s* af, af_data_t* data) |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
143 { |
8607 | 144 af_data_t* c = data; // Current working data |
145 af_volume_t* s = (af_volume_t*)af->setup; // Setup for this instance | |
146 int ch = 0; // Channel counter | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
147 register int nch = c->nch; // Number of channels |
8607 | 148 register int i = 0; |
149 | |
150 // Basic operation volume control only (used on slow machines) | |
14245 | 151 if(af->data->format == (AF_FORMAT_S16_NE)){ |
8607 | 152 int16_t* a = (int16_t*)c->audio; // Audio data |
153 int len = c->len/2; // Number of samples | |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
154 for(ch = 0; ch < nch ; ch++){ |
8607 | 155 if(s->enable[ch]){ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
156 register int vol = (int)(255.0 * s->level[ch]); |
8607 | 157 for(i=ch;i<len;i+=nch){ |
158 register int x = (a[i] * vol) >> 8; | |
159 a[i]=clamp(x,SHRT_MIN,SHRT_MAX); | |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
160 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
161 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
162 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
163 } |
8607 | 164 // Machine is fast and data is floating point |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
165 else if(af->data->format == (AF_FORMAT_FLOAT_NE)){ |
8607 | 166 float* a = (float*)c->audio; // Audio data |
167 int len = c->len/4; // Number of samples | |
168 for(ch = 0; ch < nch ; ch++){ | |
169 // Volume control (fader) | |
170 if(s->enable[ch]){ | |
171 float t = 1.0 - s->time; | |
172 for(i=ch;i<len;i+=nch){ | |
173 register float x = a[i]; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
29049
diff
changeset
|
174 register float pow = x*x; |
8607 | 175 // Check maximum power value |
176 if(pow > s->max[ch]) | |
177 s->max[ch] = pow; | |
178 // Set volume | |
179 x *= s->level[ch]; | |
180 // Peak meter | |
181 pow = x*x; | |
182 if(pow > s->pow[ch]) | |
183 s->pow[ch] = pow; | |
184 else | |
185 s->pow[ch] = t*s->pow[ch] + pow*s->time; // LP filter | |
186 /* Soft clipping, the sound of a dream, thanks to Jon Wattes | |
187 post to Musicdsp.org */ | |
14623 | 188 if(s->soft) |
189 x=af_softclip(x); | |
8607 | 190 // Hard clipping |
191 else | |
192 x=clamp(x,-1.0,1.0); | |
193 a[i] = x; | |
194 } | |
195 } | |
196 } | |
197 } | |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
198 return c; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
199 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
200 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
201 // Allocate memory and set function pointers |
22746
fd6f824ef894
Rename open to af_open so as not to conflict with a previous header definition.
diego
parents:
14623
diff
changeset
|
202 static int af_open(af_instance_t* af){ |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
203 int i = 0; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
204 af->control=control; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
205 af->uninit=uninit; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
206 af->play=play; |
24888 | 207 af->mul=1; |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
208 af->data=calloc(1,sizeof(af_data_t)); |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
209 af->setup=calloc(1,sizeof(af_volume_t)); |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
210 if(af->data == NULL || af->setup == NULL) |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
211 return AF_ERROR; |
9043
1d75a7ecf3b8
Changing initial volume level to 0dB after loud intensive complaints
anders
parents:
8868
diff
changeset
|
212 // Enable volume control and set initial volume to 0dB. |
8607 | 213 for(i=0;i<AF_NCH;i++){ |
214 ((af_volume_t*)af->setup)->enable[i] = 1; | |
9043
1d75a7ecf3b8
Changing initial volume level to 0dB after loud intensive complaints
anders
parents:
8868
diff
changeset
|
215 ((af_volume_t*)af->setup)->level[i] = 1.0; |
8607 | 216 } |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
217 return AF_OK; |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
218 } |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
219 |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
220 // Description of this filter |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
221 af_info_t af_info_volume = { |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
222 "Volume control audio filter", |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
223 "volume", |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
224 "Anders", |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
225 "", |
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
226 AF_FLAGS_NOT_REENTRANT, |
22746
fd6f824ef894
Rename open to af_open so as not to conflict with a previous header definition.
diego
parents:
14623
diff
changeset
|
227 af_open |
7745
1d3a3dc1f488
Adding volume control and moving control() call parameters to a seperate file
anders
parents:
diff
changeset
|
228 }; |