annotate libaf/af_delay.c @ 36959:97a4746e7888

Utilize item defaults given in the skin configuration as start values. Do so for movie position, volume and balance (and hence show these values before playback). Add new btnValue() to retrieve the value and replace the btnModify() calls with btnValue() calls. (The btnModify() calls will be performed in the windows' draw handler prior to rendering anyway.) Initialize last_balance with -1 in order to be able to initialize balance (and volume) with the start values prior to playback (in GUI_SET_AUDIO).
author ib
date Mon, 24 Mar 2014 10:48:55 +0000
parents 2b9bc3c2933d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 * This audio filter delays the output signal for the different
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
3 * channels and can be used for simple position panning.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
4 * An extension for this filter would be a reverb.
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 * This file is part of MPlayer.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
7 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
8 * 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
9 * 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
10 * 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
11 * (at your option) any later version.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
12 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
13 * 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
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
16 * GNU General Public License for more details.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
17 *
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
18 * 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
19 * 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
20 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
21 */
72d0b1444141 Replace informal license notices by standard license header
diego
parents: 24888
diff changeset
22
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
23 #include <stdio.h>
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
24 #include <stdlib.h>
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
25 #include <string.h>
8698
739ecaea201b fix compilation on solaris
attila
parents: 8675
diff changeset
26 #include <inttypes.h>
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
27
36395
2b9bc3c2933d Remove some macros and switch to libavutil equivalents.
reimar
parents: 34174
diff changeset
28 #include "libavutil/common.h"
34174
a93891202051 Add missing mp_msg.h #includes, remove some unnecessary ones.
diego
parents: 32537
diff changeset
29 #include "mp_msg.h"
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
30 #include "af.h"
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
31
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
32 #define L 65536
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
33
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
34 #define UPDATEQI(qi) qi=(qi+1)&(L-1)
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
35
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
36 // Data for specific instances of this filter
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
37 typedef struct af_delay_s
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
38 {
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
39 void* q[AF_NCH]; // Circular queues used for delaying audio signal
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
40 int wi[AF_NCH]; // Write index
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
41 int ri; // Read index
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29049
diff changeset
42 float d[AF_NCH]; // Delay [ms]
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
43 }af_delay_t;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
44
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
45 // Initialization and runtime control
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
46 static int control(struct af_instance_s* af, int cmd, void* arg)
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
47 {
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
48 af_delay_t* s = af->setup;
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
49 switch(cmd){
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
50 case AF_CONTROL_REINIT:{
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
51 int i;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
52
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
53 // Free prevous delay queues
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 30633
diff changeset
54 for(i=0;i<af->data->nch;i++)
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 30633
diff changeset
55 free(s->q[i]);
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
56
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
57 af->data->rate = ((af_data_t*)arg)->rate;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
58 af->data->nch = ((af_data_t*)arg)->nch;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
59 af->data->format = ((af_data_t*)arg)->format;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
60 af->data->bps = ((af_data_t*)arg)->bps;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
61
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
62 // Allocate new delay queues
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
63 for(i=0;i<af->data->nch;i++){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
64 s->q[i] = calloc(L,af->data->bps);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
65 if(NULL == s->q[i])
29049
8c706ce21c6f Remove af_msg special-casing API in libaf.
bircoph
parents: 28229
diff changeset
66 mp_msg(MSGT_AFILTER, MSGL_FATAL, "[delay] Out of memory\n");
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
67 }
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
68
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
69 return control(af,AF_CONTROL_DELAY_LEN | AF_CONTROL_SET,s->d);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
70 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
71 case AF_CONTROL_COMMAND_LINE:{
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
72 int n = 1;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
73 int i = 0;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
74 char* cl = arg;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
75 while(n && i < AF_NCH ){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
76 sscanf(cl,"%f:%n",&s->d[i],&n);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
77 if(n==0 || cl[n-1] == '\0')
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
78 break;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
79 cl=&cl[n];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
80 i++;
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
81 }
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
82 return AF_OK;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
83 }
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
84 case AF_CONTROL_DELAY_LEN | AF_CONTROL_SET:{
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
85 int i;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
86 if(AF_OK != af_from_ms(AF_NCH, arg, s->wi, af->data->rate, 0.0, 1000.0))
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
87 return AF_ERROR;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
88 s->ri = 0;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
89 for(i=0;i<AF_NCH;i++){
29049
8c706ce21c6f Remove af_msg special-casing API in libaf.
bircoph
parents: 28229
diff changeset
90 mp_msg(MSGT_AFILTER, MSGL_DBG2, "[delay] Channel %i delayed by %0.3fms\n",
36395
2b9bc3c2933d Remove some macros and switch to libavutil equivalents.
reimar
parents: 34174
diff changeset
91 i,av_clipf(s->d[i],0.0,1000.0));
29049
8c706ce21c6f Remove af_msg special-casing API in libaf.
bircoph
parents: 28229
diff changeset
92 mp_msg(MSGT_AFILTER, MSGL_DBG3, "[delay] Channel %i delayed by %i samples\n",
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
93 i,s->wi[i]);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
94 }
8607
d6f40a06867b Changes includes:
anders
parents: 8348
diff changeset
95 return AF_OK;
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
96 }
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
97 case AF_CONTROL_DELAY_LEN | AF_CONTROL_GET:{
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
98 int i;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
99 for(i=0;i<AF_NCH;i++){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
100 if(s->ri > s->wi[i])
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
101 s->wi[i] = L - (s->ri - s->wi[i]);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
102 else
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
103 s->wi[i] = s->wi[i] - s->ri;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
104 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
105 return af_to_ms(AF_NCH, s->wi, arg, af->data->rate);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
106 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
107 }
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
108 return AF_UNKNOWN;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
109 }
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
110
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29049
diff changeset
111 // Deallocate memory
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
112 static void uninit(struct af_instance_s* af)
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
113 {
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
114 int i;
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 30633
diff changeset
115
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 30633
diff changeset
116 free(af->data);
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
117 for(i=0;i<AF_NCH;i++)
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
118 free(((af_delay_t*)(af->setup))->q[i]);
32537
8fa2f43cb760 Remove most of the NULL pointer check before free all over the code
cboesch
parents: 30633
diff changeset
119 free(af->setup);
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
120 }
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
121
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
122 // Filter data through filter
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
123 static af_data_t* play(struct af_instance_s* af, af_data_t* data)
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
124 {
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
125 af_data_t* c = data; // Current working data
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
126 af_delay_t* s = af->setup; // Setup for this instance
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
127 int nch = c->nch; // Number of channels
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
128 int len = c->len/c->bps; // Number of sample in data chunk
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
129 int ri = 0;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
130 int ch,i;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
131 for(ch=0;ch<nch;ch++){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
132 switch(c->bps){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
133 case 1:{
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
134 int8_t* a = c->audio;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29049
diff changeset
135 int8_t* q = s->q[ch];
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
136 int wi = s->wi[ch];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
137 ri = s->ri;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
138 for(i=ch;i<len;i+=nch){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
139 q[wi] = a[i];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
140 a[i] = q[ri];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
141 UPDATEQI(wi);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
142 UPDATEQI(ri);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
143 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
144 s->wi[ch] = wi;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
145 break;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
146 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
147 case 2:{
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
148 int16_t* a = c->audio;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29049
diff changeset
149 int16_t* q = s->q[ch];
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
150 int wi = s->wi[ch];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
151 ri = s->ri;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
152 for(i=ch;i<len;i+=nch){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
153 q[wi] = a[i];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
154 a[i] = q[ri];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
155 UPDATEQI(wi);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
156 UPDATEQI(ri);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
157 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
158 s->wi[ch] = wi;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
159 break;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
160 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
161 case 4:{
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
162 int32_t* a = c->audio;
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 29049
diff changeset
163 int32_t* q = s->q[ch];
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
164 int wi = s->wi[ch];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
165 ri = s->ri;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
166 for(i=ch;i<len;i+=nch){
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
167 q[wi] = a[i];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
168 a[i] = q[ri];
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
169 UPDATEQI(wi);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
170 UPDATEQI(ri);
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
171 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
172 s->wi[ch] = wi;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
173 break;
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
174 }
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
175 }
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
176 }
8675
54c386615a70 Extending delay to have different delays for different channels
anders
parents: 8607
diff changeset
177 s->ri = ri;
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
178 return c;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
179 }
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
180
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
181 // 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: 8698
diff changeset
182 static int af_open(af_instance_t* af){
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
183 af->control=control;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
184 af->uninit=uninit;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
185 af->play=play;
24888
b2402b4f0afa libaf: change filter input/output ratio calculations
uau
parents: 22746
diff changeset
186 af->mul=1;
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
187 af->data=calloc(1,sizeof(af_data_t));
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
188 af->setup=calloc(1,sizeof(af_delay_t));
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
189 if(af->data == NULL || af->setup == NULL)
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
190 return AF_ERROR;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
191 return AF_OK;
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
192 }
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
193
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
194 // Description of this filter
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
195 af_info_t af_info_delay = {
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
196 "Delay audio filter",
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
197 "delay",
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
198 "Anders",
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
199 "",
7615
c67328dd459a Adding Support for non-reentrant audio filters
anders
parents: 7568
diff changeset
200 AF_FLAGS_REENTRANT,
22746
fd6f824ef894 Rename open to af_open so as not to conflict with a previous header definition.
diego
parents: 8698
diff changeset
201 af_open
7568
d08513b9fed6 Adding new audio output filter layer libaf
anders
parents:
diff changeset
202 };