@@ -149,14 +149,14 @@ void VORBISsetDefaults(){
149149}
150150
151151void 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// ---------------------------------------------------------------------------------------------------------------------
17191720void 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// ---------------------------------------------------------------------------------------------------------------------
17231742int32_t vorbis_dsp_synthesis (uint8_t * inbuf, uint16_t len, int16_t * outbuf) {
0 commit comments