avformat/rmdec: make use of avio_get_str()
Also do not set empty metadata. Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
parent
37d472a906
commit
46129b4044
@ -70,16 +70,10 @@ static int rm_read_close(AVFormatContext *s);
|
||||
|
||||
static inline void get_strl(AVIOContext *pb, char *buf, int buf_size, int len)
|
||||
{
|
||||
int i;
|
||||
char *q, r;
|
||||
int read = avio_get_str(pb, len, buf, buf_size);
|
||||
|
||||
q = buf;
|
||||
for(i=0;i<len;i++) {
|
||||
r = avio_r8(pb);
|
||||
if (i < buf_size - 1)
|
||||
*q++ = r;
|
||||
}
|
||||
if (buf_size > 0) *q = '\0';
|
||||
if (read > 0)
|
||||
avio_skip(pb, len - read);
|
||||
}
|
||||
|
||||
static void get_str8(AVIOContext *pb, char *buf, int buf_size)
|
||||
@ -105,8 +99,10 @@ static void rm_read_metadata(AVFormatContext *s, AVIOContext *pb, int wide)
|
||||
|
||||
for (i=0; i<FF_ARRAY_ELEMS(ff_rm_metadata); i++) {
|
||||
int len = wide ? avio_rb16(pb) : avio_r8(pb);
|
||||
get_strl(pb, buf, sizeof(buf), len);
|
||||
av_dict_set(&s->metadata, ff_rm_metadata[i], buf, 0);
|
||||
if (len > 0) {
|
||||
get_strl(pb, buf, sizeof(buf), len);
|
||||
av_dict_set(&s->metadata, ff_rm_metadata[i], buf, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user