Skip to content

Commit c05ba5f

Browse files
committed
ps_ptr pt23
1 parent 9d1e0b8 commit c05ba5f

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

src/psram_unique_ptr.hpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -676,6 +676,14 @@ class ps_ptr {
676676
operator[](std::size_t index) const {
677677
return get()[index];
678678
}
679+
680+
ps_ptr<T>& operator=(T* raw_ptr) {
681+
if (mem.get() != raw_ptr) {
682+
mem.reset(raw_ptr);
683+
allocated_size = 0; // (raw_ptr != nullptr) ? /* Berechne Größe hier */ : 0;
684+
}
685+
return *this;
686+
}
679687
// —————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
680688
// 📌📌📌 R E L E A S E 📌📌📌
681689
T* release() {

src/vorbis_decoder/vorbis_decoder.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -679,7 +679,6 @@ int32_t parseVorbisCodebook(){
679679
// goto err_out;
680680
// }
681681
/* top level EOP check */
682-
683682
return VORBIS_PARSE_OGG_DONE;
684683

685684
err_out:
@@ -1779,7 +1778,7 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
17791778
ps_ptr<int32_t*> pcmbundle; pcmbundle.alloc_array(s_vorbisChannels); pcmbundle.clear();
17801779
ps_ptr<int32_t> zerobundle; zerobundle.alloc(sizeof(int32_t) * s_vorbisChannels);
17811780
ps_ptr<int32_t> nonzero; nonzero.alloc(sizeof(int32_t) * s_vorbisChannels);
1782-
ps_ptr<int32_t*> floormemo; floormemo.alloc_array(s_vorbisChannels);
1781+
ps_ptr<ps_ptr<int32_t>> floormemo; floormemo.alloc_array(s_vorbisChannels);
17831782

17841783
/* recover the spectral envelope; store it in the PCM vector for now */
17851784
for(i = 0; i < s_vorbisChannels; i++) {
@@ -1792,16 +1791,16 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
17921791

17931792
if(s_floor_type.get()[floorno]) {
17941793
/* floor 1 */
1795-
floormemo[i] = (int32_t *)alloca(sizeof(*floormemo[i]) * floor1_memosize(s_floor_param.get()[floorno]));
1796-
floormemo[i] = floor1_inverse1(s_floor_param.get()[floorno], floormemo[i]);
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());
17971796
}
17981797
else {
17991798
/* floor 0 */
1800-
floormemo[i] = (int32_t *)alloca(sizeof(*floormemo[i]) * floor0_memosize(s_floor_param.get()[floorno]));
1801-
floormemo[i] = floor0_inverse1(s_floor_param.get()[floorno], floormemo[i]);
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());
18021801
}
18031802

1804-
if(floormemo[i]) nonzero[i] = 1;
1803+
if(floormemo[i].get()) nonzero[i] = 1;
18051804
else
18061805
nonzero[i] = 0;
18071806
memset(s_dsp_state->work[i].get(), 0, sizeof(*s_dsp_state->work[i]) * n / 2);
@@ -1877,11 +1876,11 @@ int32_t mapping_inverse(vorbis_info_mapping_t *info) {
18771876

18781877
if(s_floor_type.get()[floorno]) {
18791878
/* floor 1 */
1880-
floor1_inverse2(s_floor_param.get()[floorno], floormemo[i], pcm);
1879+
floor1_inverse2(s_floor_param.get()[floorno], floormemo[i].get(), pcm);
18811880
}
18821881
else {
18831882
/* floor 0 */
1884-
floor0_inverse2(s_floor_param.get()[floorno], floormemo[i], pcm);
1883+
floor0_inverse2(s_floor_param.get()[floorno], floormemo[i].get(), pcm);
18851884
}
18861885

18871886
}

0 commit comments

Comments
 (0)