mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/hlsenc: fix hls_write_trailer() on hls_start() failure
Close segment I/O context and append segment in hls_write_trailer() only when segment I/O context is allocated. Signed-off-by: Christian Suloway <csuloway@globaleagleent.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
402a61c919
commit
92a596f13b
|
@ -449,7 +449,7 @@ static int hls_write_packet(AVFormatContext *s, AVPacket *pkt)
|
||||||
av_opt_set(hls->avf->priv_data, "mpegts_flags", "resend_headers", 0);
|
av_opt_set(hls->avf->priv_data, "mpegts_flags", "resend_headers", 0);
|
||||||
hls->number++;
|
hls->number++;
|
||||||
} else {
|
} else {
|
||||||
avio_close(oc->pb);
|
avio_closep(&oc->pb);
|
||||||
|
|
||||||
ret = hls_start(s);
|
ret = hls_start(s);
|
||||||
}
|
}
|
||||||
|
@ -474,10 +474,12 @@ static int hls_write_trailer(struct AVFormatContext *s)
|
||||||
AVFormatContext *oc = hls->avf;
|
AVFormatContext *oc = hls->avf;
|
||||||
|
|
||||||
av_write_trailer(oc);
|
av_write_trailer(oc);
|
||||||
hls->size = avio_tell(hls->avf->pb) - hls->start_pos;
|
if (oc->pb) {
|
||||||
avio_closep(&oc->pb);
|
hls->size = avio_tell(hls->avf->pb) - hls->start_pos;
|
||||||
|
avio_closep(&oc->pb);
|
||||||
|
hls_append_segment(hls, hls->duration, hls->start_pos, hls->size);
|
||||||
|
}
|
||||||
av_free(hls->basename);
|
av_free(hls->basename);
|
||||||
hls_append_segment(hls, hls->duration, hls->start_pos, hls->size);
|
|
||||||
avformat_free_context(oc);
|
avformat_free_context(oc);
|
||||||
hls->avf = NULL;
|
hls->avf = NULL;
|
||||||
hls_window(s, 1);
|
hls_window(s, 1);
|
||||||
|
|
Loading…
Reference in New Issue