@@ -79,7 +79,7 @@ ps_ptr<char> s_vorbisChbuf;
7979ps_ptr<uint8_t > s_lastSegmentTable;
8080ps_ptr<uint16_t > s_vorbisSegmentTable;
8181ps_ptr<codebook_t > s_codebooks;
82- ps_ptr<vorbis_info_floor_t *> s_floor_param;
82+ ps_ptr<ps_ptr< vorbis_info_floor_t >> s_floor_param;
8383ps_ptr<int8_t > s_floor_type;
8484ps_ptr<vorbis_info_residue_t > s_residue_param;
8585ps_ptr<vorbis_info_mapping_t > s_map_param;
@@ -149,8 +149,10 @@ void VORBISsetDefaults(){
149149}
150150
151151void clearGlobalConfigurations () { // mode, mapping, floor etc
152- // s_codebooks.reset();
153- // s_floor_type.reset();
152+ s_codebooks.reset ();
153+ s_nrOfCodebooks = 0 ;
154+
155+ s_floor_type.reset ();
154156 if (s_dsp_state.valid ()) {
155157 vorbis_dsp_destroy (s_dsp_state);
156158 }
@@ -164,9 +166,9 @@ void clearGlobalConfigurations() { // mode, mapping, floor etc
164166 s_nrOfMaps = 0 ;
165167 }
166168
167- // s_residue_param.reset();
168- // s_map_param.reset();
169- // s_mode_param.reset();
169+ s_residue_param.reset ();
170+ s_map_param.reset ();
171+ s_mode_param.reset ();
170172}
171173// ----------------------------------------------------------------------------------------------------------------------
172174
@@ -522,7 +524,7 @@ int32_t parseVorbisComment(uint8_t *inbuf, int16_t nBytes){ // reference ht
522524 log_e (" vorbis comment too long, vendorLength %i" , vendorLength);
523525 return 0 ;
524526 }
525-
527+ s_vorbisChbuf. reset ();
526528 s_vorbisChbuf.assign ((char *)(inbuf + 11 ), vendorLength);
527529 pos += 4 + vendorLength;
528530 s_vorbisCommentHeaderLength -= (7 + 4 + vendorLength);
@@ -614,8 +616,7 @@ int32_t parseVorbisCodebook(){
614616 }
615617 /* floor backend settings */
616618 s_nrOfFloors = bitReader (6 ) + 1 ;
617-
618- s_floor_param.alloc (s_nrOfFloors);
619+ s_floor_param.alloc_array (s_nrOfFloors);
619620 s_floor_type.alloc (sizeof (int8_t ) * s_nrOfFloors);
620621 for (i = 0 ; i < s_nrOfFloors; i++) {
621622 s_floor_type.get ()[i] = bitReader (16 );
@@ -624,12 +625,12 @@ int32_t parseVorbisCodebook(){
624625 goto err_out;
625626 }
626627 if (s_floor_type.get ()[i]){
627- s_floor_param. get () [i] = floor1_info_unpack ();
628+ s_floor_param[i] = floor1_info_unpack ();
628629 }
629630 else {
630- s_floor_param. get () [i] = floor0_info_unpack ();
631+ s_floor_param[i] = floor0_info_unpack ();
631632 }
632- if (!s_floor_param. get () [i]){
633+ if (!s_floor_param[i]. valid () ){
633634 log_e (" floor parameter not found" );
634635 goto err_out;
635636 }
@@ -679,10 +680,11 @@ int32_t parseVorbisCodebook(){
679680 // goto err_out;
680681 // }
681682 /* top level EOP check */
683+
682684 return VORBIS_PARSE_OGG_DONE;
683685
684686err_out:
685- // vorbis_info_clear(vi);
687+ // vorbis_info_clear(vi);
686688 log_e (" err in codebook! at pos %d" , s_bitReader.headptr - s_bitReader.data );
687689 return (OV_EBADHEADER);
688690}
@@ -1441,7 +1443,7 @@ int32_t oggpack_eop() {
14411443}
14421444// ---------------------------------------------------------------------------------------------------------------------
14431445// ---------------------------------------------------------------------------------------------------------------------
1444- vorbis_info_floor_t * floor0_info_unpack () {
1446+ ps_ptr< vorbis_info_floor_t > floor0_info_unpack () {
14451447
14461448 int32_t j;
14471449
@@ -1466,13 +1468,13 @@ int32_t oggpack_eop() {
14661468 }
14671469
14681470 if (oggpack_eop ()) goto err_out;
1469- return (info. get () );
1471+ return (info);
14701472
14711473err_out:
1472- return ( NULL ) ;
1474+ return {} ;
14731475}
14741476// ---------------------------------------------------------------------------------------------------------------------
1475- vorbis_info_floor_t * floor1_info_unpack () {
1477+ ps_ptr< vorbis_info_floor_t > floor1_info_unpack () {
14761478
14771479 ps_ptr<uint8_t > B;
14781480 int32_t j, k, count = 0 , maxclass = -1 , rangebits;
@@ -1584,7 +1586,7 @@ vorbis_info_floor_t* floor1_info_unpack() {
15841586 info->hineighbor [j] = hi;
15851587 }
15861588
1587- return (info. release () );
1589+ return (info);
15881590
15891591err_out:
15901592 return {};
@@ -1775,10 +1777,10 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
17751777 int32_t i, j;
17761778 int32_t n = s_blocksizes[s_dsp_state->W ];
17771779
1778- ps_ptr<int32_t *> pcmbundle; pcmbundle.alloc_array (s_vorbisChannels); pcmbundle. clear ();
1780+ ps_ptr<int32_t *> pcmbundle; pcmbundle.alloc_array (s_vorbisChannels);
17791781 ps_ptr<int32_t > zerobundle; zerobundle.alloc (sizeof (int32_t ) * s_vorbisChannels);
17801782 ps_ptr<int32_t > nonzero; nonzero.alloc (sizeof (int32_t ) * s_vorbisChannels);
1781- ps_ptr<ps_ptr<int32_t >> floormemo; floormemo.alloc_array (s_vorbisChannels);
1783+ ps_ptr<ps_ptr<int32_t >> floormemo; floormemo.alloc_array (s_vorbisChannels);
17821784
17831785 /* recover the spectral envelope; store it in the PCM vector for now */
17841786 for (i = 0 ; i < s_vorbisChannels; i++) {
@@ -1791,13 +1793,13 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
17911793
17921794 if (s_floor_type.get ()[floorno]) {
17931795 /* floor 1 */
1794- floormemo[i].alloc (sizeof (*floormemo[i]) * floor1_memosize (s_floor_param. get () [floorno]));
1795- floormemo[i] = floor1_inverse1 (s_floor_param. get () [floorno], floormemo[i].get ());
1796+ floormemo[i].alloc (sizeof (*floormemo[i]) * floor1_memosize (s_floor_param[floorno]));
1797+ floormemo[i] = floor1_inverse1 (s_floor_param[floorno], floormemo[i].get ());
17961798 }
17971799 else {
17981800 /* floor 0 */
1799- floormemo[i].alloc (sizeof (*floormemo[i]) * floor0_memosize (s_floor_param. get () [floorno]));
1800- floormemo[i] = floor0_inverse1 (s_floor_param. get () [floorno], floormemo[i].get ());
1801+ floormemo[i].alloc (sizeof (*floormemo[i]) * floor0_memosize (s_floor_param[floorno]));
1802+ floormemo[i] = floor0_inverse1 (s_floor_param[floorno], floormemo[i].get ());
18011803 }
18021804
18031805 if (floormemo[i].get ()) nonzero[i] = 1 ;
@@ -1825,7 +1827,6 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
18251827 pcmbundle[ch_in_bundle++] = s_dsp_state->work [j].get ();
18261828 }
18271829 }
1828-
18291830 res_inverse (s_residue_param.get () + info->submaplist [i].residue , pcmbundle.get (), zerobundle.get (), ch_in_bundle);
18301831 }
18311832
@@ -1876,13 +1877,13 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
18761877
18771878 if (s_floor_type.get ()[floorno]) {
18781879 /* floor 1 */
1879- floor1_inverse2 (s_floor_param. get () [floorno], floormemo[i].get (), pcm);
1880+ floor1_inverse2 (s_floor_param[floorno], floormemo[i].get (), pcm);
18801881 }
18811882 else {
18821883 /* floor 0 */
1883- floor0_inverse2 (s_floor_param. get () [floorno], floormemo[i].get (), pcm);
1884+ floor0_inverse2 (s_floor_param[floorno], floormemo[i].get (), pcm);
18841885 }
1885-
1886+ floormemo[i]. reset ();
18861887 }
18871888
18881889 // for(j=0;j<vi->channels;j++)
@@ -1901,18 +1902,16 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
19011902 return (0 );
19021903}
19031904// ---------------------------------------------------------------------------------------------------------------------
1904- int32_t floor0_memosize (vorbis_info_floor_t *i) {
1905- vorbis_info_floor_t *info = (vorbis_info_floor_t *)i;
1906- return info->order + 1 ;
1905+ int32_t floor0_memosize (ps_ptr<vorbis_info_floor_t >& i) {
1906+ return i.get ()->order + 1 ;
19071907}
19081908// ---------------------------------------------------------------------------------------------------------------------
1909- int32_t floor1_memosize (vorbis_info_floor_t *i) {
1910- vorbis_info_floor_t *info = (vorbis_info_floor_t *)i;
1911- return info->posts ;
1909+ int32_t floor1_memosize (ps_ptr<vorbis_info_floor_t >& i) {
1910+ return i.get ()->posts ;
19121911}
19131912// ---------------------------------------------------------------------------------------------------------------------
1914- int32_t *floor0_inverse1 (vorbis_info_floor_t * i, int32_t *lsp) {
1915- vorbis_info_floor_t *info = (vorbis_info_floor_t *)i;
1913+ int32_t *floor0_inverse1 (ps_ptr< vorbis_info_floor_t >& i, int32_t *lsp) {
1914+ vorbis_info_floor_t *info = (vorbis_info_floor_t *)i. get () ;
19161915 int32_t j;
19171916
19181917 int32_t ampraw = bitReader (info->ampbits );
@@ -1940,8 +1939,8 @@ int32_t *floor0_inverse1(vorbis_info_floor_t *i, int32_t *lsp) {
19401939 return (NULL );
19411940}
19421941// ---------------------------------------------------------------------------------------------------------------------
1943- int32_t *floor1_inverse1 (vorbis_info_floor_t * in, int32_t *fit_value) {
1944- vorbis_info_floor_t *info = (vorbis_info_floor_t *)in;
1942+ int32_t *floor1_inverse1 (ps_ptr< vorbis_info_floor_t >& in, int32_t *fit_value) {
1943+ vorbis_info_floor_t *info = (vorbis_info_floor_t *)in. get () ;
19451944
19461945 int32_t quant_look[4 ] = {256 , 128 , 86 , 64 };
19471946 int32_t i, j, k;
@@ -2374,8 +2373,8 @@ int32_t vorbis_book_decodevs_add(codebook_t *book, int32_t *a, int32_t n, int32_
23742373 return 0 ;
23752374}
23762375// ---------------------------------------------------------------------------------------------------------------------
2377- int32_t floor0_inverse2 (vorbis_info_floor_t * i, int32_t *lsp, int32_t *out) {
2378- vorbis_info_floor_t *info = (vorbis_info_floor_t *)i;
2376+ int32_t floor0_inverse2 (ps_ptr< vorbis_info_floor_t >& i, int32_t *lsp, int32_t *out) {
2377+ vorbis_info_floor_t *info = (vorbis_info_floor_t *)i. get () ;
23792378
23802379
23812380 if (lsp) {
@@ -2391,8 +2390,8 @@ int32_t floor0_inverse2(vorbis_info_floor_t *i, int32_t *lsp, int32_t *out) {
23912390}
23922391
23932392// ---------------------------------------------------------------------------------------------------------------------
2394- int32_t floor1_inverse2 (vorbis_info_floor_t * in, int32_t *fit_value, int32_t *out) {
2395- vorbis_info_floor_t *info = (vorbis_info_floor_t *)in;
2393+ int32_t floor1_inverse2 (ps_ptr< vorbis_info_floor_t >& in, int32_t *fit_value, int32_t *out) {
2394+ vorbis_info_floor_t *info = (vorbis_info_floor_t *)in. get () ;
23962395
23972396 int32_t n = s_blocksizes[s_dsp_state->W ] / 2 ;
23982397 int32_t j;
0 commit comments