[FFmpeg-devel] [PATCH 3/4] softfloat: fix av_add_sf if one argument is zero
Andreas Cadhalpun
andreas.cadhalpun at googlemail.com
Sun Nov 8 00:08:54 CET 2015
Otherwise (0x20000000, 1) + (0, 33) gives (0, 33), i.e. 1 + 0 = 0.
This fixes a division by zero in the aac_fixed decoder.
Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun at googlemail.com>
---
libavutil/softfloat.h | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavutil/softfloat.h b/libavutil/softfloat.h
index e87cbf4..fefde8c 100644
--- a/libavutil/softfloat.h
+++ b/libavutil/softfloat.h
@@ -130,7 +130,9 @@ static inline av_const int av_gt_sf(SoftFloat a, SoftFloat b)
static inline av_const SoftFloat av_add_sf(SoftFloat a, SoftFloat b){
int t= a.exp - b.exp;
- if (t <-31) return b;
+ if (a.mant == 0) return b;
+ else if (b.mant == 0) return a;
+ else if (t <-31) return b;
else if (t < 0) return av_normalize_sf(av_normalize1_sf((SoftFloat){ b.mant + (a.mant >> (-t)), b.exp}));
else if (t < 32) return av_normalize_sf(av_normalize1_sf((SoftFloat){ a.mant + (b.mant >> t ), a.exp}));
else return a;
--
2.6.2
More information about the ffmpeg-devel
mailing list