From patchwork Tue Nov 14 17:40:58 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Karmani X-Patchwork-Id: 6049 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp3599769jah; Tue, 14 Nov 2017 09:41:13 -0800 (PST) X-Google-Smtp-Source: AGs4zMaKMQBwCGMxyeGzJjqOgVban6RDubzZ+K9cMWNOQc3djf0l5nVtnLAlcRGrRZPCTsyjUyzP X-Received: by 10.28.210.129 with SMTP id j123mr10059767wmg.52.1510681273215; Tue, 14 Nov 2017 09:41:13 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1510681273; cv=none; d=google.com; s=arc-20160816; b=xl4bXgbAGaeBEZjGPAJv2tiPvEoNhAiqIjygGckEWmhFclW7gDWsLaYZotPcAA3/OL hue0cVq0d7gHTQXtauLn0vhMpEey1uHCOev7cnDxqaCX7tstJJclCMa/X8Pz/gjF/qUT KGOs1QFy/v5zQUUhIUrxjudT/GaBxzgITiBq4BaR1KHlZToDObsEM8HSlMruCgNjTKv6 CNvFiZeiZohtH6f3ktjyu43k/JKPBg8lvNNJp8mPdgUSQhX7tGyIlDKirPWXrxnpB4Ne T7fOgQNwJokFdwqKViv47tle0rdO7+IklS03sf+7mmIoAGlNJR+M180bVAwGKIFerzar I+Lg== 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:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=bc88nealOi65KjOMyrcgBFpDKE0NpMe4lGOhHdPBkWs=; b=ZQJr0RWTDSQNFb+Zp4U+VcbSbWFVzhBRgpAUkcfwyk5lrkfATtnDPceKeBiBGERYJP MAsmTMEKu8VJxB3J8hlkkckKqDV192ctLrmQJ55Egi8Md+G5x5nr2DbWUNMTscN0NkAs mXkWrgUxTVCAoHOUg5swjtQ4f0g1gPV7W7h9vemSQXrO0UkEh8415xl93w6eeSwxyefF i9ucz7jIUO6tN6bJrGRSstNu9fBO6RmBgQTKj2qMd2+02BRKo4Uf5gWf3J5Dudu+WA7U VEVIA1YoO3VB3RGVXTEnBTA+LDf813vG0vnRa7moWpdNEnq8Z10KBW5kafvw9Tigcqs9 oxSw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=hMsAzTux; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l2si15480147wre.462.2017.11.14.09.41.12; Tue, 14 Nov 2017 09:41:13 -0800 (PST) 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=@tmm1-net.20150623.gappssmtp.com header.s=20150623 header.b=hMsAzTux; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A0B08689886; Tue, 14 Nov 2017 19:40:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f67.google.com (mail-pg0-f67.google.com [74.125.83.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CE91268A031 for ; Tue, 14 Nov 2017 19:40:49 +0200 (EET) Received: by mail-pg0-f67.google.com with SMTP id c123so7872647pga.11 for ; Tue, 14 Nov 2017 09:41:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tmm1-net.20150623.gappssmtp.com; s=20150623; h=sender:from:to:cc:subject:date:message-id; bh=huLuHoMY8nyadOYu2SUOO6pSNoEbrVT0e5P6kGGmSCo=; b=hMsAzTuxjH4wcKuo1jYpbWt2AA7qmPSd0FrjemPRNq1qiLSLuXBTIegbu5Gkv/CCXn bfBBU1OeYzE7LKwo73MTYLdy4CiSpKbSuTuade73RcYZ3Gac9NDFwA2E60TeTS6Okans 93s6kRLvFyCaD3eK/lg3+HXBsbP18+hnG1XkNtJMpiyX5cVEkcwUTF21JhMz8F0N7xog rBW4iy7bGVMCo/cY1tVyHhl09LQbs394GAdB5W077eZGJelbFV23jzqGj4OcWpnF9sGy RxtSLqi5dPV0oABWaVghnA36/2tzoapOLdgs3jlpkq3ahgGJ3TETQZ7v2HajeiOOltyT xtFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=huLuHoMY8nyadOYu2SUOO6pSNoEbrVT0e5P6kGGmSCo=; b=bK/Y8jemHCQcD/uzssR38Fxk7AJhXXhJbO7Cr4wH2p1mINtzcmiut2l9zG+dX+HA7z VKgme4diuguANUZYpxlQvoWFaEG3hNucmLeUSQoERGm1DXP8DwxBzK2R4FshH/ZgUL1b xpCNgWeQqHSPbfK2iGFZJg4cw1SpHIsYZGAF6eJAdIxROxCfQbz0yKteygl3UElsxYNI keS23k2CQng1EBFbZqoo1EgVxrhTZescd96YCySlaFc3UWGJqW8Op8vMN2YAhfGaKjf+ ogz5bFN5nljfh6TXzFDCNb9rA/z6M7KiAR98GbPdZNJsQE/ETqQzN/Ooe/6Ut6zSLM+t VHxQ== X-Gm-Message-State: AJaThX7vWp8i185WGk21irEy8s9XifIJUsWhix/g9ihrKISFjG5LKYlu JcO3gwK0hokHKnJt6gR9lYyImgVn X-Received: by 10.98.208.67 with SMTP id p64mr5885247pfg.111.1510681262999; Tue, 14 Nov 2017 09:41:02 -0800 (PST) Received: from tmm1-imac.local.net (c-73-252-174-83.hsd1.ca.comcast.net. [73.252.174.83]) by smtp.gmail.com with ESMTPSA id r1sm15805723pfe.99.2017.11.14.09.41.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Nov 2017 09:41:02 -0800 (PST) From: Aman Gupta To: ffmpeg-devel@ffmpeg.org Date: Tue, 14 Nov 2017 09:40:58 -0800 Message-Id: <20171114174059.14555-1-ffmpeg@tmm1.net> X-Mailer: git-send-email 2.14.2 Subject: [FFmpeg-devel] [PATCH v2 1/2] avformat/tcp: enable TCP_NODELAY by default 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: kjeyapal@akamai.com, Aman Gupta MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Aman Gupta This can reduce latency and increase throughput, particularly on high latency networks. Signed-off-by: Aman Gupta Reviewed-by: Jeyapal, Karthick --- libavformat/network.h | 1 + libavformat/tcp.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/libavformat/network.h b/libavformat/network.h index f83c796a95..b78e3ad6ed 100644 --- a/libavformat/network.h +++ b/libavformat/network.h @@ -59,6 +59,7 @@ int ff_neterrno(void); #include #include #include +#include #include #define ff_neterrno() AVERROR(errno) diff --git a/libavformat/tcp.c b/libavformat/tcp.c index 07b4ed9fa3..f3f9d4f431 100644 --- a/libavformat/tcp.c +++ b/libavformat/tcp.c @@ -41,6 +41,7 @@ typedef struct TCPContext { int listen_timeout; int recv_buffer_size; int send_buffer_size; + int tcp_nodelay; } TCPContext; #define OFFSET(x) offsetof(TCPContext, x) @@ -52,6 +53,7 @@ static const AVOption options[] = { { "listen_timeout", "Connection awaiting timeout (in milliseconds)", OFFSET(listen_timeout), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, .flags = D|E }, { "send_buffer_size", "Socket send buffer size (in bytes)", OFFSET(send_buffer_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, .flags = D|E }, { "recv_buffer_size", "Socket receive buffer size (in bytes)", OFFSET(recv_buffer_size), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, .flags = D|E }, + { "tcp_nodelay", "Use TCP_NODELAY to disable nagle's algorithm", OFFSET(tcp_nodelay), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, .flags = D|E }, { NULL } }; @@ -148,6 +150,9 @@ static int tcp_open(URLContext *h, const char *uri, int flags) if (s->send_buffer_size > 0) { setsockopt (fd, SOL_SOCKET, SO_SNDBUF, &s->send_buffer_size, sizeof (s->send_buffer_size)); } + if (s->tcp_nodelay > 0) { + setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, &s->tcp_nodelay, sizeof (s->tcp_nodelay)); + } if (s->listen == 2) { // multi-client