diff --git a/libavformat/segment.c b/libavformat/segment.c index ccd8a91e41..20adb73d24 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -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; }