using a floating-point calculation is not necessary.
---
libavcodec/tta.c | 6 ++----
1 files changed, 2 insertions(+), 4 deletions(-)
diff --git a/libavcodec/tta.c b/libavcodec/tta.c
index 31f861c..419091b 100644
--- a/libavcodec/tta.c
+++ b/libavcodec/tta.c
@@ -217,7 +217,7 @@ static av_cold int tta_decode_init(AVCodecContext * avctx)
avctx->bits_per_coded_sample = get_bits(&s->gb, 16);
s->bps = (avctx->bits_per_coded_sample + 7) / 8;
avctx->sample_rate = get_bits_long(&s->gb, 32);
- if(avctx->sample_rate > 1000000){ //prevent FRAME_TIME *
avctx->sample_rate from overflowing and sanity check
+ if (avctx->sample_rate > 8388607) { // prevent overflow in
frame_length calculation
av_log(avctx, AV_LOG_ERROR, "sample_rate too large\n");
return -1;
}
@@ -236,9 +236,7 @@ static av_cold int tta_decode_init(AVCodecContext * avctx)
return AVERROR(EINVAL);
}
- // FIXME: horribly broken, but directly from reference source
-#define FRAME_TIME 1.04489795918367346939
- s->frame_length = (int)(FRAME_TIME * avctx->sample_rate);
+ s->frame_length = 256 * avctx->sample_rate / 245;
s->last_frame_length = s->data_length % s->frame_length;
s->total_frames = s->data_length / s->frame_length +
--
1.7.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel