X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fpanners%2Fvbap%2Fvbap_speakers.cc;h=898a95de5141ca6e1294674b57d00eea91302946;hb=93ca7b42fb36e56f6e12d228398073c3a68f2e27;hp=4c662a8c6dd66a877a87aeb14260317604db53cd;hpb=57077093b706c5938f9fd70f70d031cae2c59217;p=ardour.git diff --git a/libs/panners/vbap/vbap_speakers.cc b/libs/panners/vbap/vbap_speakers.cc index 4c662a8c6d..898a95de51 100644 --- a/libs/panners/vbap/vbap_speakers.cc +++ b/libs/panners/vbap/vbap_speakers.cc @@ -116,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; } @@ -536,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; } @@ -557,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.*/ @@ -624,13 +631,14 @@ VBAPSpeakers::sort_2D_lss (int* sorted_speakers) vector tmp = _speakers; vector::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