Skip to content

Commit 9642087

Browse files
committed
ps_ptr pt24
1 parent c05ba5f commit 9642087

File tree

2 files changed

+52
-53
lines changed

2 files changed

+52
-53
lines changed

src/vorbis_decoder/vorbis_decoder.cpp

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ ps_ptr<char> s_vorbisChbuf;
7979
ps_ptr<uint8_t> s_lastSegmentTable;
8080
ps_ptr<uint16_t> s_vorbisSegmentTable;
8181
ps_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;
8383
ps_ptr<int8_t> s_floor_type;
8484
ps_ptr<vorbis_info_residue_t> s_residue_param;
8585
ps_ptr<vorbis_info_mapping_t> s_map_param;
@@ -149,8 +149,10 @@ void VORBISsetDefaults(){
149149
}
150150

151151
void 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

684686
err_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

14711473
err_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

15891591
err_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;

src/vorbis_decoder/vorbis_decoder.h

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,13 @@ typedef struct _codebook{
8282
1 = packed vector of values
8383
2 = packed vector of column offsets, maptype 1
8484
3 = scalar offset into value array, maptype 2 */
85-
int32_t q_min;
85+
int32_t q_min;
8686
int32_t q_minp;
87-
int32_t q_del;
87+
int32_t q_del;
8888
int32_t q_delp;
8989
int32_t q_seq;
9090
int32_t q_bits;
91-
uint8_t q_pack;
91+
uint8_t q_pack;
9292
ps_ptr<uint16_t> q_val;
9393
} codebook_t;
9494

@@ -243,8 +243,8 @@ uint16_t continuedOggPackets(uint8_t* inbuf);
243243
int32_t vorbis_book_unpack(codebook_t* s);
244244
uint32_t decpack(int32_t entry, int32_t used_entry, uint8_t quantvals, codebook_t* b, int32_t maptype);
245245
int32_t oggpack_eop();
246-
vorbis_info_floor_t* floor0_info_unpack();
247-
vorbis_info_floor_t* floor1_info_unpack();
246+
ps_ptr<vorbis_info_floor_t> floor0_info_unpack();
247+
ps_ptr<vorbis_info_floor_t> floor1_info_unpack();
248248
int32_t res_unpack(vorbis_info_residue_t* info);
249249
int32_t mapping_info_unpack(vorbis_info_mapping_t* info);
250250

@@ -254,10 +254,10 @@ ps_ptr<vorbis_dsp_state_t> vorbis_dsp_create();
254254
void vorbis_dsp_destroy(ps_ptr<vorbis_dsp_state_t> &v);
255255
void mdct_shift_right(int32_t n, int32_t* in, int32_t* right);
256256
int32_t mapping_inverse(vorbis_info_mapping_t* info);
257-
int32_t floor0_memosize(vorbis_info_floor_t* i);
258-
int32_t floor1_memosize(vorbis_info_floor_t* i);
259-
int32_t* floor0_inverse1(vorbis_info_floor_t* i, int32_t* lsp);
260-
int32_t* floor1_inverse1(vorbis_info_floor_t* in, int32_t* fit_value);
257+
int32_t floor0_memosize(ps_ptr<vorbis_info_floor_t>& i);
258+
int32_t floor1_memosize(ps_ptr<vorbis_info_floor_t>& i);
259+
int32_t* floor0_inverse1(ps_ptr<vorbis_info_floor_t>& i, int32_t* lsp);
260+
int32_t* floor1_inverse1(ps_ptr<vorbis_info_floor_t>& in, int32_t* fit_value);
261261
int32_t vorbis_book_decode(codebook_t* book);
262262
int32_t decode_packed_entry_number(codebook_t* book);
263263
int32_t render_point(int32_t x0, int32_t x1, int32_t y0, int32_t y1, int32_t x);
@@ -266,8 +266,8 @@ int32_t decode_map(codebook_t* s, int32_t* v, int32_t point);
266266
int32_t res_inverse(vorbis_info_residue_t* info, int32_t** in, int32_t* nonzero, uint8_t ch);
267267
int32_t vorbis_book_decodev_add(codebook_t* book, int32_t* a, int32_t n, int32_t point);
268268
int32_t vorbis_book_decodevs_add(codebook_t* book, int32_t* a, int32_t n, int32_t point);
269-
int32_t floor0_inverse2(vorbis_info_floor_t* i, int32_t* lsp, int32_t* out);
270-
int32_t floor1_inverse2(vorbis_info_floor_t* in, int32_t* fit_value, int32_t* out);
269+
int32_t floor0_inverse2(ps_ptr<vorbis_info_floor_t>& i, int32_t* lsp, int32_t* out);
270+
int32_t floor1_inverse2(ps_ptr<vorbis_info_floor_t>& in, int32_t* fit_value, int32_t* out);
271271
void render_line(int32_t n, int32_t x0, int32_t x1, int32_t y0, int32_t y1, int32_t* d);
272272
void vorbis_lsp_to_curve(int32_t* curve, int32_t n, int32_t ln, int32_t* lsp, int32_t m, int32_t amp, int32_t ampoffset, int32_t nyq);
273273
int32_t toBARK(int32_t n);

0 commit comments

Comments
 (0)