On 09/20/2009 10:36 AM, Reimar Döffinger wrote:
Reimar Döffinger<[email protected]> added the comment:
On Sun, Sep 20, 2009 at 04:44:56PM +0000, Ramiro Polla wrote:
Ramiro Polla<[email protected]> added the comment:
in mov.c r19928 lines 890:894 codec_name is just copied straight off of the mov
file.
Right, I missed that codec_name is used, too.
I really think that the encoding is supposed to be ANSI, though that
means
1) they are one off, (R) would be 0xa9 but it's 0xa8. I wonder who
messed that up.
2) ANSI has to be converted to UTF8, this patch does that, though it is
a bit ugly still:
Index: libavformat/mov.c
===================================================================
--- libavformat/mov.c (revision 19926)
+++ libavformat/mov.c (working copy)
@@ -868,7 +868,8 @@
(format>> 24)& 0xff, st->codec->codec_type);
if(st->codec->codec_type==CODEC_TYPE_VIDEO) {
- uint8_t codec_name[32];
+ int len, i;
+ char *codec_name;
unsigned int color_depth;
int color_greyscale;
@@ -887,11 +888,16 @@
get_be32(pb); /* data size, always 0 */
get_be16(pb); /* frames per samples */
- get_buffer(pb, codec_name, 32); /* codec name, pascal string */
- if (codec_name[0]<= 31) {
- memcpy(st->codec->codec_name,
&codec_name[1],codec_name[0]);
- st->codec->codec_name[codec_name[0]] = 0;
+ len = get_byte(pb); /* codec name, pascal string */
Missing check against 31 to avoid reading too much if len is wrong,
possibly file can still be demuxed.
Otherwise I'm not against the patch if people think it's useful.
--
Baptiste COUDURIER
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org