[SCM] libav/experimental: Strings in extended content header are UTF16, so terminating NULLs are 2 bytes long, not 1.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:00:09 UTC 2013


The following commit has been merged in the experimental branch:
commit 83a6c1a69cf74123adf53d6688ddc645e2161840
Author: Anton Khirnov <wyskas at gmail.com>
Date:   Mon Feb 15 21:19:40 2010 +0000

    Strings in extended content header are UTF16,
    so terminating NULLs are 2 bytes long, not 1.
    
    Patch by Anton Khirnov, wyskas gmail
    
    Originally committed as revision 21841 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/asfenc.c b/libavformat/asfenc.c
index b749ce7..cea7180 100644
--- a/libavformat/asfenc.c
+++ b/libavformat/asfenc.c
@@ -352,13 +352,13 @@ static int asf_write_header1(AVFormatContext *s, int64_t file_size, int64_t data
         hpos = put_header(pb, &ff_asf_extended_content_header);
         put_le16(pb, metadata_count);
         while ((tag = av_metadata_get(s->metadata, "", tag, AV_METADATA_IGNORE_SUFFIX))) {
-            put_le16(pb, 2*(strlen(tag->key) + 3) + 1);
+            put_le16(pb, 2*(strlen(tag->key) + 4));
             put_le16(pb, 'W');
             put_le16(pb, 'M');
             put_le16(pb, '/');
             put_str16_nolen(pb, tag->key);
             put_le16(pb, 0);
-            put_le16(pb, 2*strlen(tag->value) + 1);
+            put_le16(pb, 2*(strlen(tag->value) + 1));
             put_str16_nolen(pb, tag->value);
         }
         end_header(pb, hpos);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list