From 1f7e7464e9b8e00381830a4e4a61ac95137fd712 Mon Sep 17 00:00:00 2001 From: Oded Shimon Date: Mon, 2 Oct 2006 05:55:20 +0000 Subject: [PATCH] Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines add correct and working put_float ... Originally committed as revision 6417 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/vorbis_enc.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c index acb55b3073..8811e3b7fb 100644 --- a/libavcodec/vorbis_enc.c +++ b/libavcodec/vorbis_enc.c @@ -67,7 +67,13 @@ static inline int ilog(unsigned int a) { } static void put_float(PutBitContext * pb, float f) { - put_bits(pb, 32, *(uint32_t*)&f); + int exp, mant; + uint32_t res = 0; + mant = (int)ldexp(frexp(f, &exp), 20); + exp += 788 - 20; + if (mant < 0) { res |= (1 << 31); mant = -mant; } + res |= mant | (exp << 21); + put_bits(pb, 32, res); } static void put_codebook_header(PutBitContext * pb, codebook_t * cb) {