[automerger skipped] Merge "Merge Android 12" am: 9a7915509a -s ours am: 6a07ce5a13 -s ours
am skip reason: Merged-In I18fafce9c9c2f412a44dcf9455d886c398c8011a with SHA-1 d40f53277f is already in history
Original change: https://android-review.googlesource.com/c/platform/external/tremolo/+/1847655
Change-Id: I0552e50dd6ea34f56e5f289a0f93afa989a8de35
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 @@
#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 @@
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 @@
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 7e74d1e..ea814e5 100644
--- a/Tremolo/floor0.c
+++ b/Tremolo/floor0.c
@@ -426,10 +426,9 @@
}
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];
}