> On 30 Mar 2018, at 13:09, vdi...@akamai.com wrote: > > From: Vishwanath Dixit <vdi...@akamai.com> > > --- > doc/muxers.texi | 9 +++++++++ > libavformat/hlsenc.c | 16 +++++++++------- > 2 files changed, 18 insertions(+), 7 deletions(-) > > diff --git a/doc/muxers.texi b/doc/muxers.texi > index 0d9ecef..a651a49 100644 > --- a/doc/muxers.texi > +++ b/doc/muxers.texi > @@ -977,6 +977,15 @@ Use persistent HTTP connections. Applicable only for > HTTP output. > @item timeout > Set timeout for socket I/O operations. Applicable only for HTTP output. > > +@item -ignore_nw_error @var{ignore_nw_error} > +Enable (1) or disable (0) ignoring the following non-fatal network errors > during > +muxing. Applicable only for HTTP output. > +@example > +EPIPE - Broken pipe > +ECONNREFUSED - Connection refused > +ECONNRESET - Connection reset by peer > +@end example > + > @end table > > @anchor{ico} > diff --git a/libavformat/hlsenc.c b/libavformat/hlsenc.c > index 334720f..f6de326 100644 > --- a/libavformat/hlsenc.c > +++ b/libavformat/hlsenc.c > @@ -225,6 +225,7 @@ typedef struct HLSContext { > AVIOContext *m3u8_out; > AVIOContext *sub_m3u8_out; > int64_t timeout; > + int ignore_nw_err; > } HLSContext; > > static int mkdir_p(const char *path) { > @@ -2247,7 +2248,7 @@ static int hls_write_packet(AVFormatContext *s, > AVPacket *pkt) > ret = flush_dynbuf(vs, &range_length); > if (ret < 0) { > av_free(old_filename); > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > vs->size = range_length; > } else { > @@ -2255,12 +2256,12 @@ static int hls_write_packet(AVFormatContext *s, > AVPacket *pkt) > if (ret < 0) { > av_log(s, AV_LOG_ERROR, "Failed to open file '%s'\n", > vs->avf->url); > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > write_styp(vs->out); > ret = flush_dynbuf(vs, &range_length); > if (ret < 0) { > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > ff_format_io_close(s, &vs->out); > } > @@ -2277,7 +2278,7 @@ static int hls_write_packet(AVFormatContext *s, > AVPacket *pkt) > vs->duration = 0; > if (ret < 0) { > av_free(old_filename); > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > } > > @@ -2308,12 +2309,12 @@ static int hls_write_packet(AVFormatContext *s, > AVPacket *pkt) > av_free(old_filename); > > if (ret < 0) { > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > > if (!vs->fmp4_init_mode || byterange_mode) > if ((ret = hls_window(s, 0, vs)) < 0) { > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > } > > @@ -2321,7 +2322,7 @@ static int hls_write_packet(AVFormatContext *s, > AVPacket *pkt) > if (oc->pb) > ret = ff_write_chained(oc, stream_index, pkt, s, 0); > > - return ret; > + return av_handle_error(s, ret, hls->ignore_nw_err); > } > > static int hls_write_trailer(struct AVFormatContext *s) > @@ -2835,6 +2836,7 @@ static const AVOption options[] = { > {"master_pl_publish_rate", "Publish master play list every after this > many segment intervals", OFFSET(master_publish_rate), AV_OPT_TYPE_INT, {.i64 > = 0}, 0, UINT_MAX, E}, > {"http_persistent", "Use persistent HTTP connections", > OFFSET(http_persistent), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, E }, > {"timeout", "set timeout for socket I/O operations", OFFSET(timeout), > AV_OPT_TYPE_DURATION, { .i64 = -1 }, -1, INT_MAX, .flags = E }, > + { "ignore_nw_error", "Ignores any non-fatal network errors during > muxing", OFFSET(ignore_nw_err), AV_OPT_TYPE_BOOL, {.i64 = 0 }, 0, 1, E }, > { NULL }, > }; > > -- > 1.9.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel LGTM Thanks Steven
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel