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