summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavformat/microdvddec.c9
-rw-r--r--libavformat/microdvdenc.c1
-rw-r--r--tests/ref/fate/sub-microdvd-remuxbin416 -> 416 bytes
3 files changed, 6 insertions, 4 deletions
diff --git a/libavformat/microdvddec.c b/libavformat/microdvddec.c
index ca9086afe9..08e6fca09c 100644
--- a/libavformat/microdvddec.c
+++ b/libavformat/microdvddec.c
@@ -117,10 +117,11 @@ static int microdvd_read_header(AVFormatContext *s)
continue;
}
if (!st->codecpar->extradata && sscanf(line, "{DEFAULT}{}%c", &c) == 1) {
- st->codecpar->extradata = av_strdup(line + 11);
- if (!st->codecpar->extradata)
- return AVERROR(ENOMEM);
- st->codecpar->extradata_size = strlen(st->codecpar->extradata) + 1;
+ int ret, size = strlen(line + 11);
+ ret = ff_alloc_extradata(st->codecpar, size);
+ if (ret < 0)
+ return ret;
+ memcpy(st->codecpar->extradata, line + 11, size);
continue;
}
}
diff --git a/libavformat/microdvdenc.c b/libavformat/microdvdenc.c
index 04f475b645..6639651e02 100644
--- a/libavformat/microdvdenc.c
+++ b/libavformat/microdvdenc.c
@@ -36,6 +36,7 @@ static int microdvd_write_header(struct AVFormatContext *s)
if (par->extradata && par->extradata_size > 0) {
avio_write(s->pb, "{DEFAULT}{}", 11);
avio_write(s->pb, par->extradata, par->extradata_size);
+ avio_w8(s->pb, '\n');
avio_flush(s->pb);
}
diff --git a/tests/ref/fate/sub-microdvd-remux b/tests/ref/fate/sub-microdvd-remux
index a71da99031..92ff233f56 100644
--- a/tests/ref/fate/sub-microdvd-remux
+++ b/tests/ref/fate/sub-microdvd-remux
Binary files differ