From patchwork Fri Mar 30 05:09:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 8241 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp2483735jad; Thu, 29 Mar 2018 22:09:31 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/3Q3UoLttmkdswxDJhC+kdpMRaEDUkD9GhMgl9KyLDrdoFJMsPDGnhXYkzgy9utTZ6FJSR X-Received: by 10.223.175.201 with SMTP id y9mr8275740wrd.107.1522386571104; Thu, 29 Mar 2018 22:09:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522386571; cv=none; d=google.com; s=arc-20160816; b=NQfgkGryUEGPCG38GLILNUYS9dqnANtt/xDfI5fEYWvIyfTo1RSiWtCkwNucUR59Pn RQrZfqeOW159wZtikf1VpKVxI1g618/ps533DWS+gPduWFJ40yNhbQMYk/bTCbg82m3+ 6ItSnNZ7mYz9Z8Ac6tLntrbq1OdF40W0hE1WzuYmnktZmQ6uEKnHkfAeXWky1yRbwO2L 64pdzDG6F98CKyQYA8wV6fAqah4eau2UYB7Gx9pp7knQyn7Y8XsppY8gygCNKRqZCRUI AIFv2RRPRtRCvZmwaTzOXosTytBEoasSMMKF/8NUrNBU2e3s5rMNnrJXSvWOevftizwS iy2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:feedback-id:message-id:date:to:from :dkim-signature:delivered-to:arc-authentication-results; bh=XW93gXiNsxGp+8aw9IhEK+yC/iFudPoUeztAt6UvzQY=; b=Zs+/Pq8SD6oSxpm1v12cIGAdPpQ0+nRgtXzrzmRFz58A9vtEolPhFXD1Tt5rO2zYJY 2qD1/lfG410Xz1+uhSfFvni7o+CiOBEf0AoZrEsVZzeW9klkXaEzloMmvVspFlJVvnM4 4VghHFdPujIfQh7FGlU/w4S525d7jFCoGnIDM0jzOuRr69VrkadOQahCud6IvOi0vvrZ Yl4BXJEWrpzfFXkiADOCqE959DZsrurXDuJBbPx/EIP4QdCYcDVvtvz9wVtx1J9VKNze E5imVaU/QJhs0FL7qtZU544o6PPet03T7tNl8TLeZJ6Krcl7dQKVp9MlBZ1U04v1S7y1 SBPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=G3J0mrFu; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l143si2586812wmb.263.2018.03.29.22.09.30; Thu, 29 Mar 2018 22:09:31 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@smtpservice.net header.s=m78bu0.a1-4.dyn header.b=G3J0mrFu; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=akamai.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C95F1689FC0; Fri, 30 Mar 2018 08:08:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from a2i831.smtp2go.com (a2i831.smtp2go.com [103.47.207.63]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DA205689FD3 for ; Fri, 30 Mar 2018 08:08:56 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1522387456; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=PVFY6wvZCX6ujrIr2E6Prffpw2ZwROVu7ud+3DOwg34=; b=G3J0mrFu NRVLUPzqE2agAiPVg5hvYWZRw/DC3mNslQfFgFyncf/wtVleaB4ggY4hKNCkdCPkVQqkahRkL9YXz +X2PzPf5lDtMsFm+fJ8WJOZvYQbtppGKelAFMF5fFjik/aSpwKotLK8HOm7bRwI8keNzVg3vuriSE unO4aUsk2/eoMthn328Ld+34mbyjp2txVn1cxRkYqUsUl4zerMTAWbOR01cAbSBwIUxQ/gK2aYazZ GuzT4PacjkI32dGJWAK/34zdM/klH0P7R285fRdr3Q+gmLiRtqTZwFEZNsswdyOTdeOpZfr+IdLUV KjwNJUOwzcR56HPQ43Bo8zDIfA==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Mar 2018 10:39:09 +0530 Message-Id: <1522386549-16614-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 X-Smtpcorp-Track: 1f1XHoDIIanaW9.vYZ5Y-wbn Feedback-ID: 337386m:337386asVRLGB:337386sUx5hp7fxH:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH 8/8] avformat/hlsenc: usage of error handling utility function X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Vishwanath Dixit MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Vishwanath Dixit --- 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 }, };