diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index ade6b0ad1ce044e2d52bd7827e8cd284a0d64eca..7a801596c7a044940b2ac47fc084589dcc4ff212 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -327,7 +327,6 @@ static void mp3_fix_xing(AVFormatContext *s) MP3Context *mp3 = s->priv_data; struct xing_header *xing_header = &mp3->xing_header; struct xing_toc *toc = &xing_header->toc; - double scale = (double)toc->pos / (double)VBR_TOC_SIZE; int i; avio_flush(s->pb); @@ -338,8 +337,8 @@ static void mp3_fix_xing(AVFormatContext *s) avio_w8(s->pb, 0); // first toc entry has to be zero. for (i = 1; i < VBR_TOC_SIZE; ++i) { - int j = (int)floor(scale * i); - int seek_point = (int)floor(256.0 * toc->bag[j] / xing_header->size); + int j = i * toc->pos / VBR_TOC_SIZE; + int seek_point = 256LL * toc->bag[j] / xing_header->size; avio_w8(s->pb, (uint8_t)(seek_point < 256 ? seek_point : 255)); }