@ -22,7 +22,7 @@
// Bugfix/warning contributors:
// Terje Mathisen Niklas Frykholm Andy Hill
// Casey Muratori John Bolton Gargaj
// Laurent Gomila Marc LeBlanc
// Laurent Gomila Marc LeBlanc Ronny Chevalier
// Bernhard Wodo Evan Balster
// Tom Beaumont Ingo Leitgeb
// (If you reported a bug but do not appear in this list, it is because
@ -30,7 +30,8 @@
// list them all because I was lax about updating for a long time, sorry.)
//
// Partial history:
// 1.02 - 2014/07/09 - declare qsort comparison as explicitly _cdecl
// 1.03 - 2014/08/07 - warning fixes
// 1.02 - 2014/07/09 - declare qsort comparison as explicitly _cdecl in Windows
// 1.01 - 2014/06/18 - fix stb_vorbis_get_samples_float (interleaved was correct)
// 1.0 - 2014/05/26 - fix memory leaks; fix warnings; fix bugs in >2-channel;
// (API change) report sample rate for decode-full-file funcs
@ -2124,7 +2125,6 @@ static void decode_residue(vorb *f, float *residue_buffers[], int ch, int n, int
memset ( residue_buffers [ i ] , 0 , sizeof ( float ) * n ) ;
if ( rtype = = 2 & & ch ! = 1 ) {
int len = ch * n ;
for ( j = 0 ; j < ch ; + + j )
if ( ! do_not_decode [ j ] )
break ;
@ -2674,7 +2674,7 @@ static void imdct_step3_inner_s_loop_ld654(int n, float *e, int i_off, float *A,
static void inverse_mdct ( float * buffer , int n , vorb * f , int blocktype )
{
int n2 = n > > 1 , n4 = n > > 2 , n8 = n > > 3 , l ;
int n3_4 = n - n4 , ld ;
int ld ;
// @OPTIMIZE: reduce register pressure by using fewer variables?
int save_point = temp_alloc_save ( f ) ;
float * buf2 = ( float * ) temp_alloc ( f , n2 * sizeof ( * buf2 ) ) ;
@ -3208,13 +3208,10 @@ static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start,
int i , j , k , n , n2 ;
int zero_channel [ 256 ] ;
int really_zero_channel [ 256 ] ;
int window_center ;
// WINDOWING
n = f - > blocksize [ m - > blockflag ] ;
window_center = n > > 1 ;
map = & f - > mapping [ m - > mapping ] ;
// FLOORS
@ -3328,7 +3325,7 @@ static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start,
// RESIDUE DECODE
for ( i = 0 ; i < map - > submaps ; + + i ) {
float * residue_buffers [ STB_VORBIS_MAX_CHANNELS ] ;
int r , t ;
int r ;
uint8 do_not_decode [ 256 ] ;
int ch = 0 ;
for ( j = 0 ; j < f - > channels ; + + j ) {
@ -3344,7 +3341,6 @@ static int vorbis_decode_packet_rest(vorb *f, int *len, Mode *m, int left_start,
}
}
r = map - > submap_residue [ i ] ;
t = f - > residue_types [ r ] ;
decode_residue ( f , residue_buffers , ch , n2 , r , do_not_decode ) ;
}
@ -4541,7 +4537,7 @@ static int vorbis_analyze_page(stb_vorbis *f, ProbedPage *z)
{
uint8 header [ 27 ] , lacing [ 255 ] ;
uint8 packet_type [ 255 ] ;
int num_packet , packet_start , previous = 0 ;
int num_packet , packet_start ;
int i , len ;
uint32 samples ;
@ -4574,7 +4570,7 @@ static int vorbis_analyze_page(stb_vorbis *f, ProbedPage *z)
// scan through the frames to determine the sample-count of each one...
// our goal is the sample # of the first fully-decoded sample on the
// page, which is the first decoded sample of the 2nd page
// page, which is the first decoded sample of the 2nd packet
num_packet = 0 ;
@ -4582,18 +4578,15 @@ static int vorbis_analyze_page(stb_vorbis *f, ProbedPage *z)
for ( i = 0 ; i < header [ 26 ] ; + + i ) {
if ( packet_start ) {
uint8 n , b , m ;
uint8 n , b ;
if ( lacing [ i ] = = 0 ) goto bail ; // trying to read from zero-length packet
n = get8 ( f ) ;
// if bottom bit is non-zero, we've got corruption
if ( n & 1 ) goto bail ;
n > > = 1 ;
b = ilog ( f - > mode_count - 1 ) ;
m = n > > b ;
n & = ( 1 < < b ) - 1 ;
if ( n > = f - > mode_count ) goto bail ;
if ( num_packet = = 0 & & f - > mode_config [ n ] . blockflag )
previous = ( m & 1 ) ;
packet_type [ num_packet + + ] = f - > mode_config [ n ] . blockflag ;
skip ( f , lacing [ i ] - 1 ) ;
} else
@ -5404,6 +5397,8 @@ int stb_vorbis_get_samples_float(stb_vorbis *f, int channels, float **buffer, in
# endif // STB_VORBIS_NO_PULLDATA_API
/* Version history
1.03 - 2014 / 08 / 07 - Warning fixes
1.02 - 2014 / 07 / 09 - Declare qsort compare function _cdecl on windows
1.01 - 2014 / 06 / 18 - fix stb_vorbis_get_samples_float
1.0 - 2014 / 05 / 26 - fix memory leaks ; fix warnings ; fix bugs in multichannel
( API change ) report sample rate for decode - full - file funcs