@@ -152,23 +152,43 @@ void clearGlobalConfigurations() { // mode, mapping, floor etc
152152 vorbis_book_clear (s_codebooks);
153153 vorbis_dsp_destroy (s_dsp_state);
154154
155- // s_floor_type.reset();
156-
157155 if (s_nrOfFloors) {
158- // for(int32_t i = 0; i < s_nrOfFloors; i++) s_floor_param-> floor_free_info(s_floor_param[i]);
159- // free(s_floor_param);
156+ for (int32_t i = 0 ; i < s_nrOfFloors; i++){
157+ s_floor_param[i]->_class .reset ();
158+ s_floor_param[i]->partitionclass .reset ();
159+ s_floor_param[i]->postlist .reset ();
160+ s_floor_param[i]->forward_index .reset ();
161+ s_floor_param[i]->hineighbor .reset ();
162+ s_floor_param[i]->loneighbor .reset ();
163+ s_floor_param[i].reset ();
164+ }
165+ s_floor_param.reset ();
160166 s_nrOfFloors = 0 ;
161167 }
168+
162169 if (s_nrOfResidues) {
170+ for (int32_t i = 0 ; i < s_nrOfResidues; i++){
171+ s_residue_param[i].stagemasks .reset ();
172+ s_residue_param[i].stagebooks .reset ();
173+ }
174+ s_residue_param.reset ();
163175 s_nrOfResidues = 0 ;
164176 }
177+
165178 if (s_nrOfMaps) {
179+ for (int32_t i = 0 ; i < s_nrOfMaps; i++){
180+ s_map_param[i].chmuxlist .reset ();
181+ s_map_param[i].submaplist .reset ();
182+ s_map_param[i].coupling .reset ();
183+ }
184+ s_map_param.reset ();
166185 s_nrOfMaps = 0 ;
167186 }
168187
169- // s_residue_param.reset();
170- // s_map_param.reset();
171- // s_mode_param.reset();
188+ if (s_floor_type.valid ()) s_floor_type.reset ();
189+ if (s_residue_param.valid ()) s_residue_param.reset ();
190+ if (s_map_param.valid ()) s_map_param.reset ();
191+ if (s_mode_param.valid ()) s_mode_param.reset ();
172192}
173193// ----------------------------------------------------------------------------------------------------------------------
174194
@@ -1731,12 +1751,16 @@ void vorbis_dsp_destroy(ps_ptr<vorbis_dsp_state_t> &v) {
17311751// ---------------------------------------------------------------------------------------------------------------------
17321752void vorbis_book_clear (ps_ptr<codebook_t > &v){
17331753 if (!v.valid ())return ;
1754+ int s = 0 ;
17341755 for (int i = 0 ; i < s_nrOfCodebooks; i++){
1735- if (v-> q_val .valid ()) v-> q_val .reset ();
1736- if (v-> dec_table .valid ()) v-> dec_table .reset ();
1756+ if (v[i]. q_val .valid ()) {s += v[i]. q_val .size (); v[i]. q_val . reset ();}
1757+ if (v[i]. dec_table .valid ()){s += v[i]. dec_table .size (); v[i]. dec_table . reset ();}
17371758 }
1738- v.clear ();
1759+ if (v->dec_table .valid ()) {s += v->dec_table .size (); v->dec_table .reset ();}
1760+ if (v->q_val .valid ()) {s += v ->q_val .size (); v ->q_val .reset ();}
1761+ s += v.size (); v.reset ();
17391762 s_nrOfCodebooks = 0 ;
1763+ // log_w("free codebook_t %i bytes", s);
17401764}
17411765// ---------------------------------------------------------------------------------------------------------------------
17421766int32_t vorbis_dsp_synthesis (uint8_t * inbuf, uint16_t len, int16_t * outbuf) {
0 commit comments