summaryrefslogtreecommitdiff
path: root/apps/codecs/libtremor/codebook.c
diff options
context:
space:
mode:
authorNils Wallménius <nils@rockbox.org>2010-12-08 17:28:17 +0000
committerNils Wallménius <nils@rockbox.org>2010-12-08 17:28:17 +0000
commit2aa511f6bdac6364fe09a0004e4e14b3fc17a6c2 (patch)
tree7c9bad037e3f57f7138d3846ccdccc48a752cd80 /apps/codecs/libtremor/codebook.c
parentaff90a9db734186e680c4ef747d66d32a83eb2aa (diff)
downloadrockbox-2aa511f6bdac6364fe09a0004e4e14b3fc17a6c2.tar.gz
rockbox-2aa511f6bdac6364fe09a0004e4e14b3fc17a6c2.zip
libtremor: merge upstream revisions 17541, 17542, 17543, 17544, 17545, 17546, 17547, 17555, 17572, bringing in various fixes and finally bringing our libtremor up to date, for now.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28773 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libtremor/codebook.c')
-rw-r--r--apps/codecs/libtremor/codebook.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/codecs/libtremor/codebook.c b/apps/codecs/libtremor/codebook.c
index e00d648a59..9413257e2a 100644
--- a/apps/codecs/libtremor/codebook.c
+++ b/apps/codecs/libtremor/codebook.c
@@ -380,6 +380,7 @@ long vorbis_book_decode(codebook *book, oggpack_buffer *b){
380} 380}
381 381
382/* returns 0 on OK or -1 on eof *************************************/ 382/* returns 0 on OK or -1 on eof *************************************/
383/* decode vector / dim granularity gaurding is done in the upper layer */
383long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a, 384long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
384 oggpack_buffer *b,int n,int point){ 385 oggpack_buffer *b,int n,int point){
385 if(book->used_entries>0){ 386 if(book->used_entries>0){
@@ -412,6 +413,7 @@ long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
412 return(0); 413 return(0);
413} 414}
414 415
416/* decode vector / dim granularity gaurding is done in the upper layer */
415long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a, 417long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
416 oggpack_buffer *b,int n,int point){ 418 oggpack_buffer *b,int n,int point){
417 if(book->used_entries>0){ 419 if(book->used_entries>0){
@@ -441,6 +443,9 @@ long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
441 return(0); 443 return(0);
442} 444}
443 445
446/* unlike the others, we guard against n not being an integer number
447 of <dim> internally rather than in the upper layer (called only by
448 floor0) */
444long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a, 449long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
445 oggpack_buffer *b,int n,int point){ 450 oggpack_buffer *b,int n,int point){
446 if(book->used_entries>0){ 451 if(book->used_entries>0){
@@ -454,7 +459,7 @@ long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
454 entry = decode_packed_entry_number(book,b); 459 entry = decode_packed_entry_number(book,b);
455 if(entry==-1)return(-1); 460 if(entry==-1)return(-1);
456 t = book->valuelist+entry*book->dim; 461 t = book->valuelist+entry*book->dim;
457 for (j=0;j<book->dim;){ 462 for (j=0;i<n && j<book->dim;){
458 a[i++]=t[j++]>>shift; 463 a[i++]=t[j++]>>shift;
459 } 464 }
460 } 465 }
@@ -464,23 +469,22 @@ long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a,
464 entry = decode_packed_entry_number(book,b); 469 entry = decode_packed_entry_number(book,b);
465 if(entry==-1)return(-1); 470 if(entry==-1)return(-1);
466 t = book->valuelist+entry*book->dim; 471 t = book->valuelist+entry*book->dim;
467 for (j=0;j<book->dim;){ 472 for (j=0;i<n && j<book->dim;){
468 a[i++]=t[j++]<<shift; 473 a[i++]=t[j++]<<shift;
469 } 474 }
470 } 475 }
471 } 476 }
472 }else{ 477 }else{
473 478
474 int i,j; 479 int i;
475 for(i=0;i<n;){ 480 for(i=0;i<n;){
476 for (j=0;j<book->dim;){ 481 a[i++]=0;
477 a[i++]=0;
478 }
479 } 482 }
480 } 483 }
481 return(0); 484 return(0);
482} 485}
483 486
487/* decode vector / dim granularity gaurding is done in the upper layer */
484static long vorbis_book_decodevv_add_2ch_even(codebook *book,ogg_int32_t **a, 488static long vorbis_book_decodevv_add_2ch_even(codebook *book,ogg_int32_t **a,
485 long offset,oggpack_buffer *b, 489 long offset,oggpack_buffer *b,
486 unsigned int n,int point){ 490 unsigned int n,int point){