diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2011-05-06 17:39:31 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2011-05-06 17:39:31 +0200 |
commit | a565c7b7f2e03a769a821c49818c66474bfaf7fd (patch) | |
tree | 2825e64628a121b5e0ed67719f21372af9b7bfff /libavformat/aiffdec.c | |
parent | 423986fc09e3c674c2c8ac273d0ef094c379b497 (diff) | |
download | ffmpeg-a565c7b7f2e03a769a821c49818c66474bfaf7fd.tar.gz |
aiffdec:Rewrite get_meta()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/aiffdec.c')
-rw-r--r-- | libavformat/aiffdec.c | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/libavformat/aiffdec.c b/libavformat/aiffdec.c index cc2631448b..e691bba29d 100644 --- a/libavformat/aiffdec.c +++ b/libavformat/aiffdec.c @@ -68,19 +68,20 @@ static int get_tag(AVIOContext *pb, uint32_t * tag) static void get_meta(AVFormatContext *s, const char *key, int size) { uint8_t *str = av_malloc(size+1); - int res; - if (!str) { - avio_skip(s->pb, size); - return; - } - - res = avio_read(s->pb, str, size); - if (res < 0) - return; + if (str) { + int res = avio_read(s->pb, str, size); + if (res < 0){ + av_free(str); + return; + } + size += (size&1)-res; + str[res] = 0; + av_metadata_set2(&s->metadata, key, str, AV_METADATA_DONT_STRDUP_VAL); + }else + size+= size&1; - str[res] = 0; - av_metadata_set2(&s->metadata, key, str, AV_METADATA_DONT_STRDUP_VAL); + avio_skip(s->pb, size); } /* Returns the number of sound data frames or negative on error */ |