remove unused TempoMap::tempo_at_beat(). implement unused tempo_at_quarter_note().
[ardour.git] / libs / panners / vbap / vbap_speakers.cc
index 1cf78797b74bb618223c019484ce8c8a495aba2b..898a95de5141ca6e1294674b57d00eea91302946 100644 (file)
@@ -34,7 +34,6 @@
 #include <cmath>
 #include <algorithm>
 #include <stdlib.h>
-#include <alloca.h>
 
 #include "pbd/cartesian.h"
 
@@ -117,7 +116,8 @@ VBAPSpeakers::choose_speaker_triplets(struct ls_triplet_chain **ls_triplets)
        int i,j,k,l,table_size;
        int n_speakers = _speakers.size ();
 
-       if (n_speakers == 0) {
+       if (n_speakers < 3) {
+               fprintf(stderr, "VBAP: at least 3 speakers need to be defined.");
                return;
        }
 
@@ -537,7 +537,8 @@ VBAPSpeakers::choose_speaker_pairs (){
        */
        const int n_speakers = _speakers.size();
 
-       if (n_speakers == 0) {
+       if (n_speakers < 2) {
+               fprintf(stderr, "VBAP: at least 2 speakers need to be defined.");
                return;
        }
 
@@ -558,6 +559,11 @@ VBAPSpeakers::choose_speaker_pairs (){
        }
 
        /* sort loudspeakers according their aximuth angle */
+#ifdef __clang_analyzer__
+       // sort_2D_lss() assigns values to all of sorted_speakers
+       // "uninitialized value"
+       memset(sorted_speakers, 0, sizeof(*sorted_speakers));
+#endif
        sort_2D_lss (sorted_speakers);
 
        /* adjacent loudspeakers are the loudspeaker pairs to be used.*/
@@ -625,13 +631,14 @@ VBAPSpeakers::sort_2D_lss (int* sorted_speakers)
        vector<Speaker> tmp = _speakers;
        vector<Speaker>::iterator s;
        azimuth_sorter sorter;
-       int n;
+       unsigned int n;
 
        sort (tmp.begin(), tmp.end(), sorter);
 
        for (n = 0, s = tmp.begin(); s != tmp.end(); ++s, ++n) {
                sorted_speakers[n] = (*s).id;
        }
+       assert(n == _speakers.size ());
 }
 
 int