Skip to content

Commit 56184c3

Browse files
committed
ps_ptr pt26
1 parent b1b4ace commit 56184c3

File tree

1 file changed

+34
-10
lines changed

1 file changed

+34
-10
lines changed

src/vorbis_decoder/vorbis_decoder.cpp

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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
//---------------------------------------------------------------------------------------------------------------------
17321752
void 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
//---------------------------------------------------------------------------------------------------------------------
17421766
int32_t vorbis_dsp_synthesis(uint8_t* inbuf, uint16_t len, int16_t* outbuf) {

0 commit comments

Comments
 (0)