From: Oded Shimon Date: Mon, 2 Oct 2006 05:55:20 +0000 (+0000) Subject: Original Commit: r6 | ods15 | 2006-09-16 20:36:31 +0300 (Sat, 16 Sep 2006) | 2 lines X-Git-Tag: v0.5~11685 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=1f7e7464e9b8e00381830a4e4a61ac95137fd712;p=coroid%2Fffmpeg_saccubus.git 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 --- diff --git a/libavcodec/vorbis_enc.c b/libavcodec/vorbis_enc.c index acb55b307..8811e3b7f 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) {