Rockbox open source high quality audio player as a Music Player Daemon
mpris rockbox mpd libadwaita audio rust zig deno
2
fork

Configure Feed

Select the types of activity you want to include in your feed.

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

+25 -15
+10 -6
apps/codecs/libtremor/codebook.c
··· 380 380 } 381 381 382 382 /* returns 0 on OK or -1 on eof *************************************/ 383 + /* decode vector / dim granularity gaurding is done in the upper layer */ 383 384 long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a, 384 385 oggpack_buffer *b,int n,int point){ 385 386 if(book->used_entries>0){ ··· 412 413 return(0); 413 414 } 414 415 416 + /* decode vector / dim granularity gaurding is done in the upper layer */ 415 417 long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a, 416 418 oggpack_buffer *b,int n,int point){ 417 419 if(book->used_entries>0){ ··· 441 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) */ 444 449 long vorbis_book_decodev_set(codebook *book,ogg_int32_t *a, 445 450 oggpack_buffer *b,int n,int point){ 446 451 if(book->used_entries>0){ ··· 454 459 entry = decode_packed_entry_number(book,b); 455 460 if(entry==-1)return(-1); 456 461 t = book->valuelist+entry*book->dim; 457 - for (j=0;j<book->dim;){ 462 + for (j=0;i<n && j<book->dim;){ 458 463 a[i++]=t[j++]>>shift; 459 464 } 460 465 } ··· 464 469 entry = decode_packed_entry_number(book,b); 465 470 if(entry==-1)return(-1); 466 471 t = book->valuelist+entry*book->dim; 467 - for (j=0;j<book->dim;){ 472 + for (j=0;i<n && j<book->dim;){ 468 473 a[i++]=t[j++]<<shift; 469 474 } 470 475 } 471 476 } 472 477 }else{ 473 478 474 - int i,j; 479 + int i; 475 480 for(i=0;i<n;){ 476 - for (j=0;j<book->dim;){ 477 - a[i++]=0; 478 - } 481 + a[i++]=0; 479 482 } 480 483 } 481 484 return(0); 482 485 } 483 486 487 + /* decode vector / dim granularity gaurding is done in the upper layer */ 484 488 static long vorbis_book_decodevv_add_2ch_even(codebook *book,ogg_int32_t **a, 485 489 long offset,oggpack_buffer *b, 486 490 unsigned int n,int point){
+4 -3
apps/codecs/libtremor/floor0.c
··· 330 330 for(j=0;j<info->numbooks;j++){ 331 331 info->books[j]=oggpack_read(opb,8); 332 332 if(info->books[j]<0 || info->books[j]>=ci->books)goto err_out; 333 + if(ci->book_param[info->books[j]]->maptype==0)goto err_out; 334 + if(ci->book_param[info->books[j]]->dim<1)goto err_out; 333 335 } 334 336 return(info); 335 337 ··· 400 402 ogg_int32_t last=0; 401 403 ogg_int32_t *lsp=(ogg_int32_t *)_vorbis_block_alloc(vb,sizeof(*lsp)*(look->m+1)); 402 404 403 - for(j=0;j<look->m;j+=b->dim) 404 - if(vorbis_book_decodev_set(b,lsp+j,&vb->opb,b->dim,-24)==-1)goto eop; 405 + if(vorbis_book_decodev_set(b,lsp,&vb->opb,look->m,-24)==-1)goto eop; 405 406 for(j=0;j<look->m;){ 406 - for(k=0;k<b->dim;k++,j++)lsp[j]+=last; 407 + for(k=0;j<look->m && k<b->dim;k++,j++)lsp[j]+=last; 407 408 last=lsp[j-1]; 408 409 } 409 410
+8 -3
apps/codecs/libtremor/floor1.c
··· 361 361 } 362 362 } 363 363 364 - fit_value[i]=val+predicted; 364 + fit_value[i]=(val+predicted)&0x7fff;; 365 365 fit_value[look->loneighbor[i-2]]&=0x7fff; 366 366 fit_value[look->hineighbor[i-2]]&=0x7fff; 367 367 ··· 393 393 int hx=0; 394 394 int lx=0; 395 395 int ly=fit_value[0]*info->mult; 396 + /* guard lookup against out-of-range values */ 397 + ly=(ly<0?0:ly>255?255:ly); 398 + 396 399 for(j=1;j<look->posts;j++){ 397 400 int current=look->forward_index[j]; 398 401 int hy=fit_value[current]&0x7fff; 399 402 if(hy==fit_value[current]){ 400 403 404 + hx=info->postlist[current]; 401 405 hy*=info->mult; 402 - hx=info->postlist[current]; 403 - 406 + /* guard lookup against out-of-range values */ 407 + hy=(hy<0?0:hy>255?255:hy); 408 + 404 409 render_line(lx, ly, hx, hy, out); 405 410 406 411 lx=hx;
+2 -1
apps/codecs/libtremor/res012.c
··· 135 135 int entries = ci->book_param[info->groupbook]->entries; 136 136 int dim = ci->book_param[info->groupbook]->dim; 137 137 int partvals = 1; 138 + if (dim<1) goto errout; 138 139 while(dim>0){ 139 140 partvals *= info->partitions; 140 141 if(partvals > entries) goto errout; ··· 322 323 if(s==0){ 323 324 /* fetch the partition word */ 324 325 int temp=vorbis_book_decode(look->phrasebook,&vb->opb); 325 - if(temp==-1 || temp>info->partvals)goto eopbreak; 326 + if(temp==-1 || temp>=info->partvals)goto eopbreak; 326 327 partword[l]=look->decodemap[temp]; 327 328 if(partword[l]==NULL)goto errout; 328 329 }
+1 -2
apps/codecs/libtremor/vorbisfile.c
··· 902 902 for second stage of seekable stream open; this saves having to 903 903 seek/reread first link's serialnumber data then. */ 904 904 vf->serialnos=_ogg_calloc(serialno_list_size+2,sizeof(*vf->serialnos)); 905 - vf->serialnos[0]=vf->current_serialno; 905 + vf->serialnos[0]=vf->current_serialno=vf->os.serialno; 906 906 vf->serialnos[1]=serialno_list_size; 907 907 memcpy(vf->serialnos+2,serialno_list,serialno_list_size*sizeof(*vf->serialnos)); 908 908 ··· 910 910 vf->dataoffsets=_ogg_calloc(1,sizeof(*vf->dataoffsets)); 911 911 vf->offsets[0]=0; 912 912 vf->dataoffsets[0]=vf->offset; 913 - vf->current_serialno=vf->os.serialno; 914 913 915 914 vf->ready_state=PARTOPEN; 916 915 }