From patchwork Fri Mar 30 05:08:43 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dixit, Vishwanath" X-Patchwork-Id: 8235 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp2483449jad; Thu, 29 Mar 2018 22:09:03 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+NMT62oCoKMns/u4E+FE/1XEV8g7QlJUNrjNfpaf12aHiHUT7KD39hCDAQ65W73zHnY3eh X-Received: by 10.223.163.25 with SMTP id c25mr8818047wrb.58.1522386543759; Thu, 29 Mar 2018 22:09:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522386543; cv=none; d=google.com; s=arc-20160816; b=P67cgZwokoJYA088ap6ingjugo1hU8NwddQwe/6aDE5QOdLP+y3/IZTbdb+Wm0avzC P+iSS2yX25EKW7xFHv4MirMpYsymR5jA11t99o8PukmE/8cyu/8iNzZ+KNP2YVhK+dfN W/u6Ide/WD4o6wqjG0R+JxqcaBKDMjZmqJDethgXukfKmGKKHRwc9YCO+pHMWkB9F7n4 1U6dDhgOhu79C1psAWBcBa5SkeOWE66vj0IzFqDXQsbR2G3YEb/bBic1h6z1RbQBka5v rQxzMqIln8n7FpMJrMmv3kAIVtEP8gvbtEdRyZsQFdHWIg6SJ+U7sjnAWWp/k7ewB0F+ /N1Q== 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=XQgECwu929/at4OXGj9lAOJieBere1eDku5+OWfkgYc=; b=BNXajKN6bSsbF9YHw/rGi4xTPXUmFDmixEcMl88RHOVuZyqZ39Th0+gwnkSxX5XmMn QgUceDfomBwzhp9NUxQAeFStDvnjtHs1dT44j8CQ7B005n4akP4pCudoP9R/oY7oFeyR 1on8tgUNrGdpPkUDRAma15DSnvq4t/JlTIxYlV9etRj1jLOkNRQ1xRi12WT62/PU7EHY WWkmzlxGyO3kkWtPQOPmNliPmZNxsWzk2NCVehqI9fd0MeLNhUwa2Ywodrigp/fWhcLI B+zUczcpsi+ZRI3Q8pVUHwtFPjfSb76+8D52pIXe27xUJwDtZtx+gu+W45zOZ0HEoUZ5 75wA== 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=o6i/3xqh; 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 k13si6035237wri.188.2018.03.29.22.09.03; Thu, 29 Mar 2018 22:09:03 -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=o6i/3xqh; 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 EA2AE689EFC; Fri, 30 Mar 2018 08:08:35 +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 17167689EF3 for ; Fri, 30 Mar 2018 08:08:34 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=smtpservice.net; s=m78bu0.a1-4.dyn; x=1522387433; h=Feedback-ID: X-Smtpcorp-Track:Message-Id:Date:Subject:To:From:Reply-To:Sender: List-Unsubscribe; bh=uhE1lMkb/hmnLVn4t8e4K7Qd8zac6X+rX+3jHsQNNHY=; b=o6i/3xqh hMlieB8EpKN2KFP7ZMRYQBLx3R/IWMXbTULDrv/lnBkMZfqdnoMLXacRqVYmu3BcNjtLNKOSAhcS/ kxS+s9RS9Qul+Q/PrJtnKSAC4L8gFfkl1LsZEQ7dollpvM5lzyTHie40fVTyY+za8JK9HUdqpYgaU XR4qWabp90GVCKZp2u/Fl/cobu9doweIBPD9cjYbPo9XeLWchAJuWvcoorHxutJ4WzD2LislBNPQD U08i8IFdRvspJF/cW3/yJHfs3rles5ishvVjgnqOW+Es5svk/m45ni4HFOD0Hq0eccO7mOHt7x8VF nF75PJkGgKapoIoXYZA5VWzGvA==; From: vdixit@akamai.com To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Mar 2018 10:38:43 +0530 Message-Id: <1522386523-16423-1-git-send-email-vdixit@akamai.com> X-Mailer: git-send-email 1.9.1 X-Smtpcorp-Track: 1f1XHQRyIQsHE_.vYZh7P6cO Feedback-ID: 337386m:337386asVRLGB:337386sIzsrqWGqM:SMTPCORP X-Report-Abuse: Please forward a copy of this message, including all headers, to Subject: [FFmpeg-devel] [PATCH 5/8] avformat/dashenc: 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 | 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 }, };