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
release/0.6
Anton Khirnov 15 years ago committed by Carl Eugen Hoyos
parent 4a3104a96a
commit 83a6c1a69c
  1. 4
      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); hpos = put_header(pb, &ff_asf_extended_content_header);
put_le16(pb, metadata_count); put_le16(pb, metadata_count);
while ((tag = av_metadata_get(s->metadata, "", tag, AV_METADATA_IGNORE_SUFFIX))) { 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, 'W');
put_le16(pb, 'M'); put_le16(pb, 'M');
put_le16(pb, '/'); put_le16(pb, '/');
put_str16_nolen(pb, tag->key); put_str16_nolen(pb, tag->key);
put_le16(pb, 0); 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); put_str16_nolen(pb, tag->value);
} }
end_header(pb, hpos); end_header(pb, hpos);

Loading…
Cancel
Save