Fix for mp3 playback being glitchy after seeking.
Also, fix for incorrect VBR length if they don't have a XING header.CQTexperiment
parent
b021077fa6
commit
2d8ea06321
|
@ -241,7 +241,7 @@ int parse_headers(struct xing *xing, struct lame *lame, struct mad_bitptr ptr, u
|
||||||
bitrate += header.bitrate;
|
bitrate += header.bitrate;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fast && frames >= N_AVERAGE_FRAMES)
|
if ((vbr && !has_xing) && fast && frames >= N_AVERAGE_FRAMES)
|
||||||
{
|
{
|
||||||
float frame_size = ((double)data_used) / N_AVERAGE_FRAMES;
|
float frame_size = ((double)data_used) / N_AVERAGE_FRAMES;
|
||||||
frames = (_fileSize - tagsize) / frame_size;
|
frames = (_fileSize - tagsize) / frame_size;
|
||||||
|
@ -250,7 +250,6 @@ int parse_headers(struct xing *xing, struct lame *lame, struct mad_bitptr ptr, u
|
||||||
_duration.fraction /= N_AVERAGE_FRAMES;
|
_duration.fraction /= N_AVERAGE_FRAMES;
|
||||||
mad_timer_multiply (&_duration, frames);
|
mad_timer_multiply (&_duration, frames);
|
||||||
|
|
||||||
|
|
||||||
if (vbr && !has_xing) {
|
if (vbr && !has_xing) {
|
||||||
bitrate /= N_AVERAGE_FRAMES;
|
bitrate /= N_AVERAGE_FRAMES;
|
||||||
bitrate *= frames;
|
bitrate *= frames;
|
||||||
|
@ -449,6 +448,7 @@ static inline signed int scale (mad_fixed_t sample)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
remainder = 0;
|
remainder = 0;
|
||||||
|
_seekSkip = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
len = fread(_inputBuffer+remainder, 1, INPUT_BUFFER_SIZE-remainder, _inFd);
|
len = fread(_inputBuffer+remainder, 1, INPUT_BUFFER_SIZE-remainder, _inFd);
|
||||||
|
|
Loading…
Reference in New Issue