From patchwork Tue Oct 26 15:14:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Derek Buitenhuis X-Patchwork-Id: 31229 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp1494793ioa; Tue, 26 Oct 2021 08:14:52 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAbIE4yaqFcXi93i83ctLwzAZc0yKrRCoF86unCBideyybIugfxEFAwV1cXCcU0GSjrWuT X-Received: by 2002:a17:907:7f02:: with SMTP id qf2mr30904656ejc.167.1635261281248; Tue, 26 Oct 2021 08:14:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635261281; cv=none; d=google.com; s=arc-20160816; b=YhMs2VHJx7ZBcAh3iH1oV49OV/0HUzm+WnHm2gxlJGQKd6w+kgI0cbrJJQXiL5sqSQ jifU0nQ4IZVrDCRTdCAJcy7mBoWZdT7pp3wonIJ1P0WiyRycGgmH9V8i0ANYGv8dGFU3 UsMFggYHOcg+HWml76RtnIN/5O2Q+j+fzseDUG71weCtkOBWXLLXTDDHP5YY9ClCUdvK lpEW80y/yD8jzz1WMssjV9jqkKvCn8xV6DEW5oScSlTtfDjbfTc80rQRujHEfKqus0aL LzNf84uHKB7DutXfaT/toZh71Ch7obRfK9Altq2SlBn0mbiY/j65IITFfEoBI/+B9KB+ KfVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=e/Q4sCvC5rioGIguZgM5gWde2Nh1pyIeeoifKEcnT3E=; b=T9k1Jzi3yEVDeemxXXyvD9QgD1SihqZ/g5wM/MPJUhE5hCoeWpUDinVKJT67CBS7bZ 8nhp5DjZTeoiPAworDE+wgcaxxnYrN1toI4903Dczd63XGOOZL7zIfddNscDcXgEKWTF TkdvmQvRao6aBov3KWB3g0AOzADJT68PxzSZDCrJY91PBL2CAQ+gtwLnIXJzTZKMOOeW Dq8pPsPDvnvP2o/uKyVYT0NUV+epyl/PEnIG2KXa7t6vHREC0d9Er8lEKq+0Ga2MOrBe Ie9sLmaH/wcyrcmcLjNsicTZFW8oWQjfaNpNmFOH8FqNigptVO72J3iHdLm0RreLdKhR hpFg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=q0kjRTui; 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=QUARANTINE 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 i2si42770971edc.582.2021.10.26.08.14.40; Tue, 26 Oct 2021 08:14:41 -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=20210112 header.b=q0kjRTui; 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=QUARANTINE 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 0555868A7C9; Tue, 26 Oct 2021 18:14:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 58F9568A4A4 for ; Tue, 26 Oct 2021 18:14:30 +0300 (EEST) Received: by mail-wr1-f45.google.com with SMTP id k7so15241169wrd.13 for ; Tue, 26 Oct 2021 08:14:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=iSbI6YAn4E0L1YrZVXd9hfydgNXw6iFk2F7KnHVu77U=; b=q0kjRTuiqI2CjGkLEL0XUnzzRERGibFWP45XPyyw2n46WN0c8M5c7BT5H4DYS2T16d ezPf1CNm+jEf1gZyyWuozVqtulRuxmZWVkeVuipw/F35dQf8z2bmoxznRP7mjCQm/QJG shp5Jr8ZgExfHFTEykf3pxC6CaFUWJnFvLxNXo6sPvGYVhK8Y6DzUylXYyhr1kz57hhj RqAeztUjJLMTfcR6sR7i+PLjfqIBds7SrS70uOgjBxeKnjo/razsM53NO3Eb8owN7YFb /T7fLyASUYLhPO2fOKLMslcrMfV53FH/5YXAKq7CyB1L1Fev/e4Vp9GbBN9T7ggeBVWv cV0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=iSbI6YAn4E0L1YrZVXd9hfydgNXw6iFk2F7KnHVu77U=; b=NXmHTslOCsHNu+2Huai5/lf+s32Gxe5tNMq2tXuMEa6oLy1igldh8tcKjy5r5gsINv mGZD1iSmnExgohEnk2ikEb53tH/N6sAcPlu68vkvUxMCBU1gqPJ8bCDqsSjnNOJ6kmv2 Daqb4ESjYYo3UfA/ELS0ODRlMDTGrqIklIRVic/YfgBduXJ2R0tIV8Y12sAlDb+5dcj7 23oK/+6MduJvF6GAXmjbnim01Uloqpv/DNEvYmMKtEtz43SPHS6RdumOtQNHQSXJPX0j Dkfbe8qy86E1vuuQF6ePi6M1yd6IU6fYKZ2nED7sBCz5b7Abyzrg6C6SFaBvyXGQoQBS 63gQ== X-Gm-Message-State: AOAM5308LMVY7RN5bXLHd2WzFf5v0q93a/b98VSjODaLXmbM6qRL3huX svsb2mx6fqxaIXrl4egT1ngdolnme54= X-Received: by 2002:a05:6000:24d:: with SMTP id m13mr28541938wrz.91.1635261268927; Tue, 26 Oct 2021 08:14:28 -0700 (PDT) Received: from localhost.localdomain ([82.129.92.120]) by smtp.gmail.com with ESMTPSA id t12sm902915wmq.44.2021.10.26.08.14.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Oct 2021 08:14:28 -0700 (PDT) From: Derek Buitenhuis To: ffmpeg-devel@ffmpeg.org Date: Tue, 26 Oct 2021 16:14:14 +0100 Message-Id: <20211026151414.1455391-1-derek.buitenhuis@gmail.com> X-Mailer: git-send-email 2.32.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH][RFC] avformat/http: Add short_seek_size option X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ER5zrMl61SP+ In 45bfe8b838275235412777dd430206d9a24eb3ee, short_seek_threshold was removed from the public AVIO struct. Although this option was private and not intended to be used by public API users, it was nonetheless, because it provided functionality that could otherwise not be gained via public API. This was especially important for networked I/O like HTTP, where the internal size for lavf could be way to small depending on the specifics of a user's usecase, such as reading interlavd media files from cloud storage. Add an AVOption to make this functionality accessible to the HTTP client. Signed-off-by: Derek Buitenhuis --- libavformat/http.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libavformat/http.c b/libavformat/http.c index 476b9a8456..0dc1ce0f43 100644 --- a/libavformat/http.c +++ b/libavformat/http.c @@ -126,6 +126,7 @@ typedef struct HTTPContext { int is_multi_client; HandshakeState handshake_step; int is_connected_server; + int short_seek_size; } HTTPContext; #define OFFSET(x) offsetof(HTTPContext, x) @@ -167,6 +168,7 @@ static const AVOption options[] = { { "listen", "listen on HTTP", OFFSET(listen), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 2, D | E }, { "resource", "The resource requested by a client", OFFSET(resource), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, E }, { "reply_code", "The http status code to return to a client", OFFSET(reply_code), AV_OPT_TYPE_INT, { .i64 = 200}, INT_MIN, 599, E}, + { "short_seek_size", "Threshold to favor readahead over seek.", OFFSET(short_seek_size), AV_OPT_TYPE_INT, { .i64 = -1 }, 1, INT64_MAX, D }, { NULL } }; @@ -1842,6 +1844,8 @@ static int http_get_file_handle(URLContext *h) static int http_get_short_seek(URLContext *h) { HTTPContext *s = h->priv_data; + if (s->short_seek_size >= 1) + return s->short_seek_size; return ffurl_get_short_seek(s->hd); }