From patchwork Mon Feb 8 03:04:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 25492 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id BA62C4498BB for ; Mon, 8 Feb 2021 05:04:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A139268815C; Mon, 8 Feb 2021 05:04:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from qq.com (out203-205-251-60.mail.qq.com [203.205.251.60]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 280BB6880C4 for ; Mon, 8 Feb 2021 05:04:31 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1612753466; bh=Yr6Dq+rfT51QlOCNUkkif1otppcq81n2O9zE0UK8Qxo=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=AZBdmVf/lLsEe/61rSIqqPysHzTXK28IVjDb3f8DQWjL7e+2ooz7l8jICajcCI+qn 26l96AYl4kpjBseheoEVbxvMBCNOogZrlrgYAH/E7PFxyVDRSJQuKcJfTRIfF1iLMA IzpV2G3ihT0kSDktMyV+TgxcaIWQ9KMiAl5b7xkg= Received: from ZHILIZHAO-MB2.tencent.com ([59.37.125.48]) by newxmesmtplogicsvrsza7.qq.com (NewEsmtp) with SMTP id 1131A01A; Mon, 08 Feb 2021 11:04:19 +0800 X-QQ-mid: xmsmtpt1612753461tafymke6u Message-ID: X-QQ-XMAILINFO: MZH4pq4SEtWXTebKpV/OFzDqmK8Vuqk5BnPLbwxemnApgA9er+fvbOSkk5cR8S SNnZeB02Mt37T/mKX2O2DYiMvSLEbxKquIG1VFqh85q/S0k4oXM6DkNi7BsJkzTleGSCNceJWa+M u7ZhF2gmmeIc0H1E2I+daYyuBX6oYfY/PJPxyHqwag5bZ+1kzoa02CqfrlFDJVngtiJZRD/HM65K RPu/YeXJ93Nq93kV5dAMKVFzp/8y/S/ahcip6HheXVh1H3DgrXf5bMwLVyzkZXn5CuLLuY2bC5sI 2YOxbJO5uhOSucv4Jqydz3MdxDIvWNvIrLLFdPGLbLjY1PRjfeC9eeuwdN48IgDmVpehtf8EU3J3 ITaOH700P4ODvn5iHiD6dqOR4ywtJ9AF4Ud4EbjInofvQT3BFu7G6rcRE55SZxnHguzftZ3PcOv6 4Bwk9AJVDj1qlBv59mVBTBqflfzSgkkfIRBxuMQTbtwZfSgDRPgsFfs6dl6VtbjKtvk/luyyPMUW aBYom9wI8t7piqroPAkcZF1Bu6DLAFioe0vw7rl6E30RAPmxgzPrdMC8mDxy4yCQdjeQfJ5dfxKV HqKyffoyQEEgTkrnge8oOTPuHJfuTYgJBzunuwZoeKP24Y+FXXdjE0s8OjzxMrewYC+lA7DFfbf8 GiBy/ub8xTZmNmi+ccOaOyoxS0YR7v1wGwAYpjD5R+oNgerZIOo9ifBhE3U9tf+WqAaQEW5EC3pa /m99Rtl73N9hg6GD1jpBnrgssUElX0R+Pam7xU7r5iRWqYX4Ia30VDlbLY9pBL1Nkwr7csuNod2D VDZolMylqjaP4Y1Eho9mIUBjhcpD+0qp8= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Feb 2021 11:04:16 +0800 X-OQ-MSGID: <20210208030416.83468-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20210208030416.83468-1-quinkblack@foxmail.com> References: <20210208030416.83468-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/2] lavf/libsrt: deduplicate libsrt_network_wait_fd_timeout 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- v2: code rebase libavformat/libsrt.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c index 233e9096fa..95a20b2308 100644 --- a/libavformat/libsrt.c +++ b/libavformat/libsrt.c @@ -176,7 +176,7 @@ static int libsrt_epoll_create(URLContext *h, int fd, int write) return eid; } -static int libsrt_network_wait_fd(URLContext *h, int eid, int write) +static int libsrt_network_wait_fd(int eid, int write, void *h) { int ret, len = 1, errlen = 1; SRTSOCKET ready[1]; @@ -198,26 +198,13 @@ static int libsrt_network_wait_fd(URLContext *h, int eid, int write) return ret; } -/* TODO de-duplicate code from ff_network_wait_fd_timeout() */ - -static int libsrt_network_wait_fd_timeout(URLContext *h, int eid, int write, int64_t timeout, AVIOInterruptCB *int_cb) +static inline int libsrt_network_wait_fd_timeout(URLContext *h, int eid, int write, int64_t timeout, AVIOInterruptCB *int_cb) { - int ret; - int64_t wait_start = 0; - - while (1) { - if (ff_check_interrupt(int_cb)) - return AVERROR_EXIT; - ret = libsrt_network_wait_fd(h, eid, write); - if (ret != AVERROR(EAGAIN)) - return ret; - if (timeout > 0) { - if (!wait_start) - wait_start = av_gettime_relative(); - else if (av_gettime_relative() - wait_start > timeout) - return AVERROR(ETIMEDOUT); - } - } + NetworkWaitFdCB wait_cb = { + .wait_fd = libsrt_network_wait_fd, + .opaque = h + }; + return ff_network_wait_fd_timeout(eid, write, timeout, &h->interrupt_callback, &wait_cb); } static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t addrlen, URLContext *h, int64_t timeout)