Skip to content

Commit b1b4ace

Browse files
committed
ps_ptr pt25
1 parent 9642087 commit b1b4ace

File tree

2 files changed

+30
-10
lines changed

2 files changed

+30
-10
lines changed

src/vorbis_decoder/vorbis_decoder.cpp

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -149,14 +149,14 @@ void VORBISsetDefaults(){
149149
}
150150

151151
void clearGlobalConfigurations() { // mode, mapping, floor etc
152-
s_codebooks.reset();
153-
s_nrOfCodebooks = 0;
152+
vorbis_book_clear(s_codebooks);
153+
vorbis_dsp_destroy(s_dsp_state);
154+
155+
// s_floor_type.reset();
154156

155-
s_floor_type.reset();
156-
if(s_dsp_state.valid()) {
157-
vorbis_dsp_destroy(s_dsp_state);
158-
}
159157
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);
160160
s_nrOfFloors = 0;
161161
}
162162
if(s_nrOfResidues) {
@@ -166,9 +166,9 @@ void clearGlobalConfigurations() { // mode, mapping, floor etc
166166
s_nrOfMaps = 0;
167167
}
168168

169-
s_residue_param.reset();
170-
s_map_param.reset();
171-
s_mode_param.reset();
169+
// s_residue_param.reset();
170+
// s_map_param.reset();
171+
// s_mode_param.reset();
172172
}
173173
//----------------------------------------------------------------------------------------------------------------------
174174

@@ -1022,6 +1022,7 @@ int32_t vorbis_book_unpack(codebook_t *s) {
10221022
return 0; // ok
10231023
_errout:
10241024
_eofout:
1025+
vorbis_book_clear(s_codebooks);
10251026
return -1; // error
10261027
}
10271028
//---------------------------------------------------------------------------------------------------------------------
@@ -1717,7 +1718,25 @@ ps_ptr<vorbis_dsp_state_t> vorbis_dsp_create() {
17171718
}
17181719
//---------------------------------------------------------------------------------------------------------------------
17191720
void vorbis_dsp_destroy(ps_ptr<vorbis_dsp_state_t> &v) {
1720-
v.reset(); // Alle zugewiesenen ps_ptrs werden automatisch freigegeben
1721+
if(!v.valid())return;
1722+
1723+
for (uint8_t i = 0; i < s_vorbisChannels; ++i) {
1724+
v->work.at(i).reset();
1725+
v->mdctright.at(i).reset();
1726+
}
1727+
v->mdctright.reset();
1728+
v->work.reset();
1729+
v.reset();
1730+
}
1731+
//---------------------------------------------------------------------------------------------------------------------
1732+
void vorbis_book_clear(ps_ptr<codebook_t> &v){
1733+
if(!v.valid())return;
1734+
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();
1737+
}
1738+
v.clear();
1739+
s_nrOfCodebooks = 0;
17211740
}
17221741
//---------------------------------------------------------------------------------------------------------------------
17231742
int32_t vorbis_dsp_synthesis(uint8_t* inbuf, uint16_t len, int16_t* outbuf) {

src/vorbis_decoder/vorbis_decoder.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ int32_t mapping_info_unpack(vorbis_info_mapping_t* info);
252252
int32_t vorbis_dsp_synthesis(uint8_t* inbuf, uint16_t len, int16_t* outbuf);
253253
ps_ptr<vorbis_dsp_state_t> vorbis_dsp_create();
254254
void vorbis_dsp_destroy(ps_ptr<vorbis_dsp_state_t> &v);
255+
void vorbis_book_clear(ps_ptr<codebook_t> &v);
255256
void mdct_shift_right(int32_t n, int32_t* in, int32_t* right);
256257
int32_t mapping_inverse(vorbis_info_mapping_t* info);
257258
int32_t floor0_memosize(ps_ptr<vorbis_info_floor_t>& i);

0 commit comments

Comments
 (0)