# HG changeset patch # User gpoirier # Date 1162809168 0 # Node ID 3118e8afb8a5a21e7fe49f7a444838ce210ac9c0 # Parent 228252c41929b04ed60054ec7b0e1927c49a02e1 Fix ASF format parser's broken UTF-16 string handling 1. Add a PUT_UTF8 macro to common.h; code borrowed from libavcodec/flacenc.c. 2. Make use of the macro in flacenc.c Patch by Zuxy Meng % zuxy P meng A gmail P com % Original thread: Date: Nov 5, 2006 9:56 AM Subject: [Ffmpeg-devel] PUT_UTF8 & asf format enhancement diff -r 228252c41929 -r 3118e8afb8a5 flacenc.c --- a/flacenc.c Mon Nov 06 06:13:29 2006 +0000 +++ b/flacenc.c Mon Nov 06 10:32:48 2006 +0000 @@ -1122,20 +1122,8 @@ static void write_utf8(PutBitContext *pb, uint32_t val) { - int bytes, shift; - - if(val < 0x80){ - put_bits(pb, 8, val); - return; - } - - bytes= (av_log2(val)+4) / 5; - shift = (bytes - 1) * 6; - put_bits(pb, 8, (256 - (256>>bytes)) | (val >> shift)); - while(shift >= 6){ - shift -= 6; - put_bits(pb, 8, 0x80 | ((val >> shift) & 0x3F)); - } + uint8_t tmp; + PUT_UTF8(val, tmp, put_bits(pb, 8, tmp);) } static void output_frame_header(FlacEncodeContext *s)