aboutsummaryrefslogtreecommitdiff
path: root/Tremolo
diff options
context:
space:
mode:
authorHarish Mahendrakar <harish.mahendrakar@ittiam.com>2021-10-04 22:53:17 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-10-04 22:53:17 +0000
commitc255a0786a4786cb67bf316d219329385618d0d7 (patch)
tree34f403f5ab28098c2eb375c19f7d7a658ebcdec3 /Tremolo
parentc636f3175eee0df7d427dbad010e17ba0de20526 (diff)
parentcc1e4055131a0c1ee1c8aec11b3cdc1eb9f30b45 (diff)
downloadtremolo-c255a0786a4786cb67bf316d219329385618d0d7.tar.gz
handle cases where order isn't a multiple of dimension am: 42aa2b936a am: 9ebbd186a8 am: 124f27e347 am: 896d825e48 am: 124486bf81 am: cc1e405513
Original change: https://googleplex-android-review.googlesource.com/c/platform/external/tremolo/+/15871375 Change-Id: If9dd616afd1104a310182eac9c5291491e06605a
Diffstat (limited to 'Tremolo')
-rw-r--r--Tremolo/codebook.c5
-rw-r--r--Tremolo/floor0.c5
2 files changed, 7 insertions, 3 deletions
diff --git a/Tremolo/codebook.c b/Tremolo/codebook.c
index 8e7d4eb..5a57a71 100644
--- a/Tremolo/codebook.c
+++ b/Tremolo/codebook.c
@@ -848,6 +848,7 @@ static int decode_map(codebook *s, oggpack_buffer *b, ogg_int32_t *v, int point)
#endif
/* returns 0 on OK or -1 on eof *************************************/
+/* decode vector / dim granularity gaurding is done in the upper layer */
long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){
if(book->used_entries>0){
@@ -868,6 +869,7 @@ long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
return 0;
}
+/* decode vector / dim granularity gaurding is done in the upper layer */
long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){
if(book->used_entries>0){
@@ -887,6 +889,9 @@ long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
return 0;
}
+/* unlike the others, we guard against n not being an integer number
+ of <dim> internally rather than in the upper layer (called only by
+ floor0) */
long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
oggpack_buffer *b,int n,int point){
if(book->used_entries>0){
diff --git a/Tremolo/floor0.c b/Tremolo/floor0.c
index 17ba4cf..11452c5 100644
--- a/Tremolo/floor0.c
+++ b/Tremolo/floor0.c
@@ -436,10 +436,9 @@ ogg_int32_t *floor0_inverse1(vorbis_dsp_state *vd,vorbis_info_floor *i,
}
ogg_int32_t last=0;
- for(j=0;j<info->order;j+=b->dim)
- if(vorbis_book_decodev_set(b,lsp+j,&vd->opb,b->dim,-24)==-1)goto eop;
+ if(vorbis_book_decodev_set(b,lsp,&vd->opb,info->order,-24)==-1)goto eop;
for(j=0;j<info->order;){
- for(k=0;k<b->dim;k++,j++)lsp[j]+=last;
+ for(k=0;k<b->dim && j<info->order;k++,j++)lsp[j]+=last;
last=lsp[j-1];
}