forked from mirrors/gecko-dev
		
	Bug 1446062: Vorbis fix r=jmspeex a=abillings
This commit is contained in:
		
							parent
							
								
									6e96a3f1e4
								
							
						
					
					
						commit
						1bd67c4267
					
				
					 1 changed files with 10 additions and 38 deletions
				
			
		|  | @ -386,7 +386,7 @@ long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){ | ||||||
|       t[i] = book->valuelist+entry[i]*book->dim; |       t[i] = book->valuelist+entry[i]*book->dim; | ||||||
|     } |     } | ||||||
|     for(i=0,o=0;i<book->dim;i++,o+=step) |     for(i=0,o=0;i<book->dim;i++,o+=step) | ||||||
|       for (j=0;j<step;j++) |       for (j=0;o+j<n && j<step;j++) | ||||||
|         a[o+j]+=t[j][i]; |         a[o+j]+=t[j][i]; | ||||||
|   } |   } | ||||||
|   return(0); |   return(0); | ||||||
|  | @ -398,41 +398,12 @@ long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){ | ||||||
|     int i,j,entry; |     int i,j,entry; | ||||||
|     float *t; |     float *t; | ||||||
| 
 | 
 | ||||||
|     if(book->dim>8){ |     for(i=0;i<n;){ | ||||||
|       for(i=0;i<n;){ |       entry = decode_packed_entry_number(book,b); | ||||||
|         entry = decode_packed_entry_number(book,b); |       if(entry==-1)return(-1); | ||||||
|         if(entry==-1)return(-1); |       t     = book->valuelist+entry*book->dim; | ||||||
|         t     = book->valuelist+entry*book->dim; |       for(j=0;i<n && j<book->dim;) | ||||||
|         for (j=0;j<book->dim;) |         a[i++]+=t[j++]; | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|       } |  | ||||||
|     }else{ |  | ||||||
|       for(i=0;i<n;){ |  | ||||||
|         entry = decode_packed_entry_number(book,b); |  | ||||||
|         if(entry==-1)return(-1); |  | ||||||
|         t     = book->valuelist+entry*book->dim; |  | ||||||
|         j=0; |  | ||||||
|         switch((int)book->dim){ |  | ||||||
|         case 8: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 7: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 6: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 5: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 4: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 3: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 2: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 1: |  | ||||||
|           a[i++]+=t[j++]; |  | ||||||
|         case 0: |  | ||||||
|           break; |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   return(0); |   return(0); | ||||||
|  | @ -470,12 +441,13 @@ long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch, | ||||||
|   long i,j,entry; |   long i,j,entry; | ||||||
|   int chptr=0; |   int chptr=0; | ||||||
|   if(book->used_entries>0){ |   if(book->used_entries>0){ | ||||||
|     for(i=offset/ch;i<(offset+n)/ch;){ |     int m=(offset+n)/ch; | ||||||
|  |     for(i=offset/ch;i<m;){ | ||||||
|       entry = decode_packed_entry_number(book,b); |       entry = decode_packed_entry_number(book,b); | ||||||
|       if(entry==-1)return(-1); |       if(entry==-1)return(-1); | ||||||
|       { |       { | ||||||
|         const float *t = book->valuelist+entry*book->dim; |         const float *t = book->valuelist+entry*book->dim; | ||||||
|         for (j=0;j<book->dim;j++){ |         for (j=0;i<m && j<book->dim;j++){ | ||||||
|           a[chptr++][i]+=t[j]; |           a[chptr++][i]+=t[j]; | ||||||
|           if(chptr==ch){ |           if(chptr==ch){ | ||||||
|             chptr=0; |             chptr=0; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Monty Montgomery
						Monty Montgomery