From patchwork Thu Sep 29 18:11:34 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guangyu Sun X-Patchwork-Id: 38461 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp1165086pzh; Thu, 29 Sep 2022 11:12:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7agZ4hQxQQ094ND+Jx579H/VxdKJAd9qAU/yXSYN+6aZ6i5+m2PMuYLGwKHYoFCaIQSNYk X-Received: by 2002:a17:906:8a5a:b0:781:6a01:5ccc with SMTP id gx26-20020a1709068a5a00b007816a015cccmr3662629ejc.118.1664475131565; Thu, 29 Sep 2022 11:12:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664475131; cv=none; d=google.com; s=arc-20160816; b=ng21sHEGnyb0tjIyNBZG0AdZRdbNxJyI9CTPH1dDlQ1yLnl9RNjpI7zPCbER5XPby2 Ilh16eyVEAFLO1NewXM1+mjLnhKZn5H/AFj+eV1odN5DpdTsyJRIyPj9XSjpRZ7yA8uw uYX49klAdTjrOrPygJRRhHf6z3NAwVAbrRbDHDnYmHpYOxgspAxsqqa+bdkKpm/NaEY0 govGLeZ5P9kGx7MOr4mhovkF2YpEehv+Ogv2hcozCYkm+k6CukqFxnUHtTFqWYcNNLHv 88NaYEnNFhj/51bN+7ktt9ZoTDhyNi+UCRIluB9nvLV3tHjOfkka3azNOYtvxzgt/RSt L4fA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=UOyU+jJDlbFQvubq1MniqCRTvCktj+381ucuHGNlqWc=; b=q15q+B+rK/KStychdgo5c7kdzlBbd7jNj6a5Lr7tELUYUHgj3IlOspSeV9yxXL7fwU qERiAtpF3+jIbg5yJY1hEAfrL5zp2ueEtNsZjNbWuG9ZIQO2f44B8t4UXAL3uF6kBDPs 1YR+iPZNCZ+WxTlZUPzZOeq/AK3Q4VnceLSKzeF3JBy3c27HDgCVoOzY4Eu0CRNev/6k RDr72u+oZygQRMlZ0oBnzZbb+3DCmk3wp7Sw8UByLYp5UrSf+MIs9ASgkXiXe43iMLgH oYL1TlnyUCB6SPI6P0KGqQSYh4cT5hGSwxWMwXzB+q7pWMeK7Qai/67YDr7juow7YMAm w3wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="QqXuvZn/"; 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 hp4-20020a1709073e0400b00780076c3322si10924497ejc.432.2022.09.29.11.12.10; Thu, 29 Sep 2022 11:12:11 -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="QqXuvZn/"; 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 5E6B668BA89; Thu, 29 Sep 2022 21:12:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f179.google.com (mail-pg1-f179.google.com [209.85.215.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ED65B68B1B3 for ; Thu, 29 Sep 2022 21:12:01 +0300 (EEST) Received: by mail-pg1-f179.google.com with SMTP id u69so2147873pgd.2 for ; Thu, 29 Sep 2022 11:12:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=/xjRMyNMPm2JNenzIi9iza/5NyJevSejmYvC5Ii/iYA=; b=QqXuvZn/W7MrH0b+RM80ZBR2WukAU5OQWmQ+XFHFYNYTxFOveWEsTw6b1xd9oQai2h McK3owIq81lltCfAIl+pwURX+rP4qW19VQcNcWCabpeB8Xf9BZhQI1FBK+0kfr94xFFY +H+Oq+KdDBMZmuOqW9sSERNqk/q6kLxtEaL/Kt4ISLqzuCO4CiL1AUJgmhWAWWRl7390 dAjkA7L/T1nnG+Y4OfsmYmhomqr6fow83Bkp5UpY5TmrtXNIhf/Z59UsX2SVAdQrKRdT LJC40XiZfyiAi8Ou0PZHef63mN6Iqh1vZGZ1Lp1IMQFVqH4CuvtgUxMEENwjKEGc2/E4 zxxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=/xjRMyNMPm2JNenzIi9iza/5NyJevSejmYvC5Ii/iYA=; b=3lCs9SncP66rj0u9vsWPU8xwWfh0AuBvqkAx0//OlxxageVVNwxXEVzQGV+H+R4MJg Gm7xRIspLXW6tDeN6awnMxeV+2YlzX1yJ1XfXVqwBpQvitgn3z7cAkqTGKCitKxOjzr9 pTjU2Kjiyggoek6POJ0NfzLkymAQhBRloKpJ+H4xuxE5GsD8BjuLW0JHJfoG4h8klusw 254/t8wlCHWm0/FALMeyReGgFi0UjTOanb3PvHuM6W7B3mUeoWlKFoLO9lSb6wp1mQo+ K1ioJXhhEsHtQAZfHysHT2aBEGZLiIpMR6lpoRkVc+2VbGt4bWMU08uLBQ3iLs2poj14 9QaA== X-Gm-Message-State: ACrzQf3CfH4+Nm1vipc8pQ+zQy9bQRUwgb7YoGsbhQeGvHC4/hZVtHLP p1Al0+APPH08LoET8pi3vb6f0WEzLx8= X-Received: by 2002:a05:6a00:9a9:b0:541:787f:f2c with SMTP id u41-20020a056a0009a900b00541787f0f2cmr4827112pfg.12.1664475120048; Thu, 29 Sep 2022 11:12:00 -0700 (PDT) Received: from localhost.localdomain ([50.232.73.154]) by smtp.gmail.com with ESMTPSA id ik21-20020a170902ab1500b00176be23bbb3sm177000plb.172.2022.09.29.11.11.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Sep 2022 11:11:59 -0700 (PDT) From: Guangyu Sun X-Google-Original-From: Guangyu Sun To: ffmpeg-devel@ffmpeg.org Date: Thu, 29 Sep 2022 11:11:34 -0700 Message-Id: <20220929181134.93922-1-gsun@roblox.com> X-Mailer: git-send-email 2.37.1 In-Reply-To: <166437412231.22057.248171982435729520@lain.khirnov.net> References: <166437412231.22057.248171982435729520@lain.khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] lavf/async: Fix ring_write return value 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 Cc: Guangyu Sun Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: z3kyWbH+Xzzv his fixes a regression from commit 36117968ad. wrapped_url_read() used to be able to return positive number from ffurl_read(). It relies on the result to check if EOF is reached in async_buffer_task(). But FIFO callbacks must return 0 on success. This should be handled in ring_write() instead. Test case: ffmpeg -f lavfi -i testsrc -t 1 test.mp4 ffmpeg -i async:test.mp4 Signed-off-by: Guangyu Sun --- libavformat/async.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavformat/async.c b/libavformat/async.c index 547417aa1e..3c6f89cab9 100644 --- a/libavformat/async.c +++ b/libavformat/async.c @@ -144,8 +144,14 @@ static int wrapped_url_read(void *src, void *dst, size_t *size) static int ring_write(RingBuffer *ring, URLContext *h, size_t size) { + int ret; + av_assert2(size <= ring_space(ring)); - return av_fifo_write_from_cb(ring->fifo, wrapped_url_read, h, &size); + ret = av_fifo_write_from_cb(ring->fifo, wrapped_url_read, h, &size); + if (ret < 0) + return ret; + + return size; } static int ring_size_of_read_back(RingBuffer *ring)