From patchwork Thu Sep 21 15:36:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Takayuki 'January June' Suwa X-Patchwork-Id: 5228 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.36.26 with SMTP id f26csp2092882jaa; Thu, 21 Sep 2017 08:43:20 -0700 (PDT) X-Received: by 10.28.237.17 with SMTP id l17mr1285620wmh.99.1506008600792; Thu, 21 Sep 2017 08:43:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506008600; cv=none; d=google.com; s=arc-20160816; b=VRlCk6VuC5YEW4jjpfx9P3Muu5zWW4in8meVvfmV/zGr3sNsgNNiMe4Yxubiei0u/p hHAqq3hY/biKrxxjGRnUGX5l2cHS0W8UdP/sJpyf1zkgr2zZKow/WY1B3UumvN4euDlZ Csk6uL6gkmRy33czJJB6lF4mpUSfizPkfG7XnQQwuXyJ3DKbhv4YjhAPb3jW+qKKB1c8 CUNBGumn8B9iZ6ZDO1Iifx9L4/774b97fFiNIIFWUflcyup7OsG9ndDmK9tSx28FDW2N 7J3PQG0GK4UywGP9Wv8CfOwPcRaUDg8KU8dju48akmiubV+CkbWpkpJjb4/zNFIP/a8O TkuA== 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=/5hz7q1BGFcP+YFJ/068IKmcRc7Wcyy2XNnBvpqSlMc=; b=HDv7ixMQwxMzMf0EbkKHwrEiH0XYXi5vwEPbYZOZ5v61NnX44VbdVrM/0PimfweSih IVCQCcBiEDYXCiiXHwzvxhTTJRWM8aM/qczqq+VcZFPN1LVPV41SNmbSyKaEeiZQpSYa xVyXDSYeR3mr21feOnVg2a6hyk33zTMB7IKwNVLErWnsrknei4CuoQZTDWm/hnY1uTbv 4F7UpkkvTztGtruCDZt8wwkLxqJWa/aUVdCw7Lfru3DM6Zcez7I5StDRxXr8Gb5q9POl RufjFCiBCObl3bvvgpNn9P9a6WQ5EjgxiRS+/qiwI8V3GEkUUaCbC8LCibfYH3W89rkB hBRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=rabELIfw; 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=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i13si1369707wrc.208.2017.09.21.08.43.19; Thu, 21 Sep 2017 08:43:20 -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=@gmail.com header.s=20161025 header.b=rabELIfw; 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=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 61E326883BA; Thu, 21 Sep 2017 18:43:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f182.google.com (mail-pf0-f182.google.com [209.85.192.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3EF0A680D34 for ; Thu, 21 Sep 2017 18:43:02 +0300 (EEST) Received: by mail-pf0-f182.google.com with SMTP id d187so3387642pfg.11 for ; Thu, 21 Sep 2017 08:43:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=IDydYrjuQWme9IA1AAcwjvHlhfxQmrz3wixJybAEmqc=; b=rabELIfw8T+aFREF+KHUAo+bBK8A3sAVVI1XFmVp1nCSseT8TwcdNIt/lZzaaJ54hd NP5iACdlMG0ol5ciul7QwdGGpl/0XheG9MszL1rjoaoIg1uPNg88W3ZCMNdNtNuWUT0a GW005t8f/dRTj1KtCDm2TfMr6Yj4el0CfalQuPmoDK6GVmeU5PgjXrvBbDnbGjdMCQs0 zxsbg9NsqWstgbmv+iVfPqw4yrsT29zmnELpM3mRdlXEWWmRQ/ftegvN8MYfDQSv52le IgYrNCFHZA34hPggV6/qlpbW2I4ykYVzbDikvNJ+cFj3mcaJvZ7e0LCgg+MA2qGrVfuz UNog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=IDydYrjuQWme9IA1AAcwjvHlhfxQmrz3wixJybAEmqc=; b=O67t0D8OpRqo5FR4lNYjmXJRG74Apo14Em4FKZBIi/GgZkkVVofx6bSCIzlNVQC8Xi LBvEeh6JYxVfsKHweBLdILjoYmujGpzTpnq/d77xkYI1DUmo4qRNt4F9DsO+Eo1GNRCn um6vNbvzeY8vxL5cjN0IsRRTcm1cJbmF01rfFJJuHnnroVUdqR4I0V1FIKWABMAqcUaX g/SuWyluen5z3KjFkR1FgUr8eXhgx4JQHwrudeYf0VtHnZDXMWrkKfZCslw37wrNdHIj cKT8Nvti9Eh/LuROPoZJKpOOAL3okykP8m4dffwjboDJzzrH+N1P9iORvypy1mow/jTt zOSg== X-Gm-Message-State: AHPjjUjO2/rrC6VpC/lnHncBqIBPExa7o2wFdNN0JK7SIR06SlGWBLIt XBUa/mBXlA7ite/zqClois2BEg== X-Google-Smtp-Source: AOwi7QA+fMGVsl+7QLM3N8eC1HshG/ZwA8c6YHp4FKFf4xAACDr8d5ahgD2mE8QjhRjx4+jsF7KGIw== X-Received: by 10.84.133.66 with SMTP id 60mr6016227plf.386.1506008245531; Thu, 21 Sep 2017 08:37:25 -0700 (PDT) Received: from localhost.localdomain (h175-177-005-157.catv02.itscom.jp. [175.177.5.157]) by smtp.gmail.com with ESMTPSA id q13sm3120779pgt.87.2017.09.21.08.37.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 21 Sep 2017 08:37:24 -0700 (PDT) From: Takayuki 'January June' Suwa To: ffmpeg-devel@ffmpeg.org Date: Fri, 22 Sep 2017 00:36:40 +0900 Message-Id: <1506008200-23043-1-git-send-email-jjsuwa.sys3175@gmail.com> X-Mailer: git-send-email 2.1.4 Subject: [FFmpeg-devel] [PATCH] avformat/async: allow to set buffer size 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: Takayuki 'January June' Suwa MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- doc/protocols.texi | 6 ++++++ libavformat/async.c | 7 ++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/protocols.texi b/doc/protocols.texi index a7968ff56e3..f321664d7bf 100644 --- a/doc/protocols.texi +++ b/doc/protocols.texi @@ -57,6 +57,12 @@ Asynchronous data filling wrapper for input stream. Fill data in a background thread, to decouple I/O operation from demux thread. +The accepted options are: +@table @option +@item asyncbufsize +Set asynchronous data buffer size, in bytes. Default value is 8 MiB. +@end table + @example async:@var{URL} async:http://host/resource diff --git a/libavformat/async.c b/libavformat/async.c index 54dbd2312a2..f8ac12c7aa0 100644 --- a/libavformat/async.c +++ b/libavformat/async.c @@ -78,6 +78,8 @@ typedef struct Context { int abort_request; AVIOInterruptCB interrupt_callback; + + int asyncbufsize; } Context; static int ring_init(RingBuffer *ring, unsigned int capacity, int read_back_capacity) @@ -242,10 +244,12 @@ static int async_open(URLContext *h, const char *arg, int flags, AVDictionary ** Context *c = h->priv_data; int ret; AVIOInterruptCB interrupt_callback = {.callback = async_check_interrupt, .opaque = h}; + int capacity; av_strstart(arg, "async:", &arg); - ret = ring_init(&c->ring, BUFFER_CAPACITY, READ_BACK_CAPACITY); + capacity = FFMAX(4096, c->asyncbufsize / 2); + ret = ring_init(&c->ring, capacity, capacity); if (ret < 0) goto fifo_fail; @@ -466,6 +470,7 @@ static int64_t async_seek(URLContext *h, int64_t pos, int whence) #define D AV_OPT_FLAG_DECODING_PARAM static const AVOption options[] = { + { "asyncbufsize", "Amount in bytes that may be used for asynchronous data buffering", OFFSET(asyncbufsize), AV_OPT_TYPE_INT, { .i64 = BUFFER_CAPACITY * 2 }, 0, INT_MAX, D }, {NULL}, };