962193e452212b9efa8fdfdbea5baebba0acb19e
[vlc.git] / test / libvlc / equalizer.c
1 /*
2  * equalizer.c - libvlc smoke test
3  */
4
5 #include <string.h>
6
7 #include "test.h"
8
9 static void test_equalizer (const char ** argv, int argc)
10 {
11     libvlc_instance_t *vlc;
12     libvlc_media_player_t *mp;
13     libvlc_equalizer_t *equalizer;
14     unsigned u_presets, u_bands;
15
16     log ("Testing equalizer\n");
17
18     vlc = libvlc_new (argc, argv);
19     assert (NULL != vlc);
20
21     mp = libvlc_media_player_new (vlc);
22     assert (NULL != mp);
23
24     // presets
25
26     log ("Testing equalizer presets\n");
27
28     u_presets = libvlc_audio_equalizer_get_preset_count();
29     assert (u_presets > 0);
30
31     for (unsigned i = 0; i < u_presets; i++)
32     {
33         assert (NULL != libvlc_audio_equalizer_get_preset_name(i));
34
35         equalizer = libvlc_audio_equalizer_new_from_preset(i);
36         assert (equalizer);
37
38         libvlc_audio_equalizer_release(equalizer);
39     }
40
41     // preset out of range
42
43     assert (NULL == libvlc_audio_equalizer_get_preset_name(u_presets));
44     assert (NULL == libvlc_audio_equalizer_new_from_preset(u_presets));
45
46     // bands
47
48     log ("Testing equalizer bands\n");
49
50     u_bands = libvlc_audio_equalizer_get_band_count();
51     assert (u_bands > 0);
52
53     for (unsigned i = 0; i < u_bands; i++)
54         assert (-1.0f != libvlc_audio_equalizer_get_band_frequency(i));
55
56     // band out of range
57
58     assert (-1.0f == libvlc_audio_equalizer_get_band_frequency(u_bands));
59
60     // initialisation
61
62     log ("Testing equalizer initialisation\n");
63
64     equalizer = libvlc_audio_equalizer_new();
65     assert (equalizer);
66
67     assert (libvlc_audio_equalizer_get_preamp(equalizer) == 0.0f);
68
69     for (unsigned i = 0; i < u_bands; i++)
70         assert (libvlc_audio_equalizer_get_amp_at_index(equalizer, i) == 0.0f);
71
72     // preamp (range -20.0 to 20.0)
73
74     log ("Testing equalizer preamp\n");
75
76     assert (0 == libvlc_audio_equalizer_set_preamp (equalizer, 19.9f));
77     assert (libvlc_audio_equalizer_get_preamp(equalizer) == 19.9f);
78
79     assert (0 == libvlc_audio_equalizer_set_preamp (equalizer, 20.0f));
80     assert (libvlc_audio_equalizer_get_preamp(equalizer) == 20.0f);
81
82     assert (0 == libvlc_audio_equalizer_set_preamp (equalizer, 20.1f));
83     assert (libvlc_audio_equalizer_get_preamp(equalizer) == 20.0f);
84
85     assert (0 == libvlc_audio_equalizer_set_preamp (equalizer, -19.9f));
86     assert (libvlc_audio_equalizer_get_preamp(equalizer) == -19.9f);
87
88     assert (0 == libvlc_audio_equalizer_set_preamp (equalizer, -20.0f));
89     assert (libvlc_audio_equalizer_get_preamp(equalizer) == -20.0f);
90
91     assert (0 == libvlc_audio_equalizer_set_preamp (equalizer, -20.1f));
92     assert (libvlc_audio_equalizer_get_preamp(equalizer) == -20.0f);
93
94     // amp at index (range -20.0 to 20.0)
95
96     log ("Testing equalizer amp at index\n");
97
98     for (unsigned i = 0; i < u_bands; i++)
99     {
100         assert (0 == libvlc_audio_equalizer_set_amp_at_index (equalizer, 19.9f, i));
101         assert (libvlc_audio_equalizer_get_amp_at_index (equalizer, i) == 19.9f);
102
103         assert (0 == libvlc_audio_equalizer_set_amp_at_index (equalizer, 20.0f, i));
104         assert (libvlc_audio_equalizer_get_amp_at_index (equalizer, i) == 20.0f);
105
106         assert (0 == libvlc_audio_equalizer_set_amp_at_index (equalizer, 20.1f, i));
107         assert (libvlc_audio_equalizer_get_amp_at_index (equalizer, i) == 20.0f);
108
109         assert (0 == libvlc_audio_equalizer_set_amp_at_index (equalizer, -19.9f, i));
110         assert (libvlc_audio_equalizer_get_amp_at_index (equalizer, i) == -19.9f);
111
112         assert (0 == libvlc_audio_equalizer_set_amp_at_index (equalizer, -20.0f, i));
113         assert (libvlc_audio_equalizer_get_amp_at_index (equalizer, i) == -20.0f);
114
115         assert (0 == libvlc_audio_equalizer_set_amp_at_index (equalizer, -20.1f, i));
116         assert (libvlc_audio_equalizer_get_amp_at_index (equalizer, i) == -20.0f);
117     }
118
119     // amp at index out of range
120
121     assert (0.0f == libvlc_audio_equalizer_get_amp_at_index (equalizer, u_bands));
122     assert (-1 == libvlc_audio_equalizer_set_amp_at_index (equalizer, 19.9f, u_bands));
123
124     // no equalizer
125
126     log ("Testing equalizer null\n");
127
128     assert (0.0f == libvlc_audio_equalizer_get_preamp (NULL));
129     assert (-1 == libvlc_audio_equalizer_set_preamp (NULL, 0.0f));
130     assert (0.0f == libvlc_audio_equalizer_get_amp_at_index (NULL, 0));
131     assert (-1 == libvlc_audio_equalizer_set_amp_at_index (NULL, 0.0f, 0));
132
133     libvlc_audio_equalizer_release (NULL);
134
135     // media player
136
137     assert (0 == libvlc_media_player_set_equalizer(mp, NULL));
138     assert (0 == libvlc_media_player_set_equalizer(mp, equalizer));
139
140     // cleanup
141
142     log ("Testing equalizer cleanup\n");
143
144     libvlc_audio_equalizer_release (equalizer);
145
146     log ("Finished testing equalizer\n");
147
148     libvlc_media_player_release (mp);
149
150     libvlc_release (vlc);
151 }
152
153 int main (void)
154 {
155     test_init();
156
157     test_equalizer (test_defaults_args, test_defaults_nargs);
158
159     return 0;
160 }