Commit 73871dc9 authored by Martin Storsjö's avatar Martin Storsjö

segment: Use the public av_write_header/av_write_trailer functions

With this change, the segmenter muxer doesn't rely on anything
not available/supported to libavformat external users, making
the segmenter muxer do things just like a normal segmenter
application using libavformat would do.
Signed-off-by: 's avatarMartin Storsjö <martin@martin.st>
parent 0edae4e6
......@@ -62,42 +62,18 @@ static int segment_start(AVFormatContext *s)
&s->interrupt_callback, NULL)) < 0)
return err;
if (!oc->priv_data && oc->oformat->priv_data_size > 0) {
oc->priv_data = av_mallocz(oc->oformat->priv_data_size);
if (!oc->priv_data) {
avio_close(oc->pb);
return AVERROR(ENOMEM);
}
if (oc->oformat->priv_class) {
*(const AVClass**)oc->priv_data = oc->oformat->priv_class;
av_opt_set_defaults(oc->priv_data);
}
}
if ((err = oc->oformat->write_header(oc)) < 0) {
goto fail;
}
if ((err = avformat_write_header(oc, NULL)) < 0)
return err;
return 0;
fail:
avio_close(oc->pb);
av_freep(&oc->priv_data);
return err;
}
static int segment_end(AVFormatContext *oc)
{
int ret = 0;
if (oc->oformat->write_trailer)
ret = oc->oformat->write_trailer(oc);
av_write_trailer(oc);
avio_close(oc->pb);
if (oc->oformat->priv_class)
av_opt_free(oc->priv_data);
av_freep(&oc->priv_data);
return ret;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment