From: Vishwanath Dixit <vdi...@akamai.com> --- doc/muxers.texi | 8 ++++++++ libavformat/dashenc.c | 10 ++++++---- 2 files changed, 14 insertions(+), 4 deletions(-)
diff --git a/doc/muxers.texi b/doc/muxers.texi index cb75c26..0d9ecef 100644 --- a/doc/muxers.texi +++ b/doc/muxers.texi @@ -266,6 +266,14 @@ To map all video (or audio) streams to an AdaptationSet, "v" (or "a") can be use When no assignment is defined, this defaults to an AdaptationSet for each stream. @item -timeout @var{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{framecrc} diff --git a/libavformat/dashenc.c b/libavformat/dashenc.c index 4c8fc6f..05ebd6b 100644 --- a/libavformat/dashenc.c +++ b/libavformat/dashenc.c @@ -118,6 +118,7 @@ typedef struct DASHContext { AVIOContext *m3u8_out; int streaming; int64_t timeout; + int ignore_nw_err; } DASHContext; static struct codec_string { @@ -1321,7 +1322,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt) } if ((ret = dash_flush(s, 0, pkt->stream_index)) < 0) - return ret; + return av_handle_error(s, ret, c->ignore_nw_err); } if (!os->packets_written) { @@ -1339,7 +1340,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt) os->max_pts = FFMAX(os->max_pts, pkt->pts + pkt->duration); os->packets_written++; if ((ret = ff_write_chained(os->ctx, 0, pkt, s, 0)) < 0) - return ret; + return av_handle_error(s, ret, c->ignore_nw_err); if (!os->init_range_length) flush_init_segment(s, os); @@ -1360,7 +1361,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt) set_http_options(&opts, c); ret = dashenc_io_open(s, &os->out, os->temp_path, &opts); if (ret < 0) - return ret; + return av_handle_error(s, ret, c->ignore_nw_err); av_dict_free(&opts); } @@ -1379,7 +1380,7 @@ static int dash_write_packet(AVFormatContext *s, AVPacket *pkt) os->written_len = len; } - return ret; + return av_handle_error(s, ret, c->ignore_nw_err); } static int dash_write_trailer(AVFormatContext *s) @@ -1458,6 +1459,7 @@ static const AVOption options[] = { { "hls_playlist", "Generate HLS playlist files(master.m3u8, media_%d.m3u8)", OFFSET(hls_playlist), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, E }, { "streaming", "Enable/Disable streaming mode of output. Each frame will be moof fragment", OFFSET(streaming), 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