X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=mp3dec_filter.c;h=35448da7e22f67c84e2fb08d8f1ba6b15de2d49f;hp=3344ea4198595e22629b392b2d90041fdee06c8b;hb=d3af91481ef4a00c26530b7238552666424f0b6f;hpb=f7feafeef70ad8f4e8c6fff715a2287f3240e759 diff --git a/mp3dec_filter.c b/mp3dec_filter.c index 3344ea41..35448da7 100644 --- a/mp3dec_filter.c +++ b/mp3dec_filter.c @@ -140,6 +140,12 @@ next_buffer: return; btr_merge(btrn, fn->min_iqs); len = btr_next_buffer(btrn, &inbuffer); + /* + * Decode at most 8K in one go to give the post_select() functions of + * other buffer tree nodes a chance to run. This is necessary to avoid + * buffer underruns on slow machines. + */ + len = PARA_MIN(len, (size_t)8192); mad_stream_buffer(&pmd->stream, (unsigned char *)inbuffer, len); next_frame: ret = mad_header_decode(&pmd->frame.header, &pmd->stream);