Mercurial > mplayer.hg
annotate libaf/af_sweep.c @ 30927:9a9d57f6d788
Use calloc instead of malloc+memset
author | reimar |
---|---|
date | Sat, 27 Mar 2010 15:35:59 +0000 |
parents | 32725ca88fed |
children | 8fa2f43cb760 |
rev | line source |
---|---|
25529
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
1 /* |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
2 * Copyright (c) 2004 Michael Niedermayer <michaelni@gmx.at> |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
3 * |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
4 * This file is part of MPlayer. |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
5 * |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
6 * MPlayer is free software; you can redistribute it and/or modify |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
7 * it under the terms of the GNU General Public License as published by |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
8 * the Free Software Foundation; either version 2 of the License, or |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
9 * (at your option) any later version. |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
10 * |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
11 * MPlayer is distributed in the hope that it will be useful, |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
14 * GNU General Public License for more details. |
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
15 * |
26740
b3a38b361fef
Use standard license headers with standard formatting.
diego
parents:
25529
diff
changeset
|
16 * You should have received a copy of the GNU General Public License along |
b3a38b361fef
Use standard license headers with standard formatting.
diego
parents:
25529
diff
changeset
|
17 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
b3a38b361fef
Use standard license headers with standard formatting.
diego
parents:
25529
diff
changeset
|
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
25529
867ee1c2114b
Relicense GPL v2 files as GPL v2+ and add proper license headers.
diego
parents:
24888
diff
changeset
|
19 */ |
13721 | 20 |
21 #include <stdio.h> | |
22 #include <stdlib.h> | |
23 #include <string.h> | |
24 #include <inttypes.h> | |
25 #include <math.h> | |
26 | |
16982 | 27 #include "config.h" |
13721 | 28 #include "af.h" |
29 | |
30 typedef struct af_sweep_s{ | |
31 double x; | |
32 double delta; | |
33 }af_sweept; | |
34 | |
35 | |
36 // Initialization and runtime control | |
37 static int control(struct af_instance_s* af, int cmd, void* arg) | |
38 { | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26740
diff
changeset
|
39 af_sweept* s = (af_sweept*)af->setup; |
13721 | 40 af_data_t *data= (af_data_t*)arg; |
41 | |
42 switch(cmd){ | |
43 case AF_CONTROL_REINIT: | |
44 af->data->nch = data->nch; | |
14245 | 45 af->data->format = AF_FORMAT_S16_NE; |
13721 | 46 af->data->bps = 2; |
47 af->data->rate = data->rate; | |
48 | |
49 return AF_OK; | |
50 case AF_CONTROL_COMMAND_LINE: | |
51 sscanf((char*)arg,"%lf", &s->delta); | |
52 return AF_OK; | |
53 /* case AF_CONTROL_RESAMPLE_RATE | AF_CONTROL_SET: | |
54 af->data->rate = *(int*)arg; | |
55 return AF_OK;*/ | |
56 } | |
57 return AF_UNKNOWN; | |
58 } | |
59 | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26740
diff
changeset
|
60 // Deallocate memory |
13721 | 61 static void uninit(struct af_instance_s* af) |
62 { | |
63 if(af->data) | |
64 free(af->data); | |
65 if(af->setup){ | |
66 af_sweept *s = af->setup; | |
67 free(s); | |
68 } | |
69 } | |
70 | |
71 // Filter data through filter | |
72 static af_data_t* play(struct af_instance_s* af, af_data_t* data) | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26740
diff
changeset
|
73 { |
13721 | 74 af_sweept *s = af->setup; |
75 int i, j; | |
76 int16_t *in = (int16_t*)data->audio; | |
77 int chans = data->nch; | |
78 int in_len = data->len/(2*chans); | |
79 | |
80 for(i=0; i<in_len; i++){ | |
81 for(j=0; j<chans; j++) | |
82 in[i*chans+j]= 32000*sin(s->x*s->x); | |
83 s->x += s->delta; | |
84 if(2*s->x*s->delta >= 3.141592) s->x=0; | |
85 } | |
86 | |
87 return data; | |
88 } | |
89 | |
22746
fd6f824ef894
Rename open to af_open so as not to conflict with a previous header definition.
diego
parents:
16982
diff
changeset
|
90 static int af_open(af_instance_t* af){ |
13721 | 91 af->control=control; |
92 af->uninit=uninit; | |
93 af->play=play; | |
24888 | 94 af->mul=1; |
13721 | 95 af->data=calloc(1,sizeof(af_data_t)); |
96 af->setup=calloc(1,sizeof(af_sweept)); | |
97 return AF_OK; | |
98 } | |
99 | |
100 af_info_t af_info_sweep = { | |
101 "sine sweep", | |
102 "sweep", | |
103 "Michael Niedermayer", | |
104 "", | |
105 AF_FLAGS_REENTRANT, | |
22746
fd6f824ef894
Rename open to af_open so as not to conflict with a previous header definition.
diego
parents:
16982
diff
changeset
|
106 af_open |
13721 | 107 }; |