From patchwork Fri Mar 18 13:15:04 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nicolas Gaullier X-Patchwork-Id: 34840 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:3486:0:0:0:0 with SMTP id ek6csp1763881nkb; Fri, 18 Mar 2022 06:15:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy13XoyaeyOCcVXuucgzaAGdIhcUQeED2zxxLO+gikk4qHW4eIuMuB+3ZOpexfMLWvN9H2G X-Received: by 2002:aa7:cac8:0:b0:410:cc6c:6512 with SMTP id l8-20020aa7cac8000000b00410cc6c6512mr9432113edt.408.1647609315908; Fri, 18 Mar 2022 06:15:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1647609315; cv=none; d=google.com; s=arc-20160816; b=YKMWGiRj5nNIWrpUWwqvFrxTAIL4xVFx7p7B/Gcwjz981l4rT237ggpJmcpZOaeFfQ F7aC18iC2kAmBxnwkbSq9OcJvhBrKkjGn07s1hyuWpu+HxLVQjd5DgSfy4x/wUAsS9/M GCRWJ8JLywvehV4Bg24DKMw4sGeMxNXUJgCfSrChJUE/MnGR1E9YBBw9lE+wKCel23P7 Z8Z1Me02rkGP14R1pGerxx2X28Vx83i9p7XrSs/dTzUWjxRosFFMQKuGbuJ6NWcZ/l1k fMqPHkx5eb/qCOsgarm6MvYItE/1TiKZM7FLljurj8l3bBOmtfY/SEpnGIEuRsbKpxEd MkMw== 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:message-id:date:to:from :delivered-to; bh=XR91ne6v6na5OqTlji4dbKtFalVwoxlECrFpdS+slO8=; b=jrWtORhiraE9ye99mG88BeARz7SrHLmDnh2oMrZB6SKHU642GTtdrFl8Dv02Y+deZZ SXdd0XXi4vwCIhKK4YvoZ7+Rx/j5N5OLpewPBs8XpRIhENHn/YTztvk5LFgloeT2HhGA BAhL7YOo4ZGfFqFTzK8QfHCSI+WkFA3tsMmo9JWwiTA5HH+MrCuxExdSqNGaIqeRMrpk iDSyePSCxz+kbkF6UEpqA2FolVJ7wLJBC5+o1uZyqFWhBuTmyrfwAjH1Db4LUuX30jtm HK09lLIymzw5GPE/zqGeGnoEQXhanQioqq3u//krMtvE7Xf+i2zdGCsJjlbj2U0kUtGu bd0w== ARC-Authentication-Results: i=1; mx.google.com; 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 24-20020a170906019800b006df9ffbf08dsi1307286ejb.365.2022.03.18.06.15.15; Fri, 18 Mar 2022 06:15:15 -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; 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 7233C68B12A; Fri, 18 Mar 2022 15:15:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from srv-infra-1.infra.inf.glb.tvvideoms.com (www.inf.tvvideoms.com [213.205.126.156]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 62B6768AE56 for ; Fri, 18 Mar 2022 15:15:06 +0200 (EET) Received: from cji.paris (unknown [172.16.3.159]) by srv-infra-1.infra.inf.glb.tvvideoms.com (Postfix) with ESMTP id 0138A21687; Fri, 18 Mar 2022 13:15:05 +0000 (UTC) From: Nicolas Gaullier To: ffmpeg-devel@ffmpeg.org Date: Fri, 18 Mar 2022 14:15:04 +0100 Message-Id: <20220318131504.18488-1-nicolas.gaullier@cji.paris> X-Mailer: git-send-email 2.34.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] lavf/mpegenc: fix memory leak in the fifo since the new API 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: Nicolas Gaullier Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Mc7c00EE1It/ The older av_fifo_realloc2 implemented an auto grow that should be ported as such. This introduces a limitation in the buffer size. AUTO_GROW_DEFAULT_BYTES is currently 1MB which seems reasonable here. Fix regressing since ea511196a6c85eb433e10cdbecb0b2c722faf20d Signed-off-by: Nicolas Gaullier --- libavformat/mpegenc.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/libavformat/mpegenc.c b/libavformat/mpegenc.c index cc47a43288..ba0b5d813a 100644 --- a/libavformat/mpegenc.c +++ b/libavformat/mpegenc.c @@ -461,7 +461,7 @@ static av_cold int mpeg_mux_init(AVFormatContext *ctx) av_get_media_type_string(st->codecpar->codec_type), i); return AVERROR(EINVAL); } - stream->fifo = av_fifo_alloc2(16, 1, 0); + stream->fifo = av_fifo_alloc2(16, 1, AV_FIFO_FLAG_AUTO_GROW); if (!stream->fifo) return AVERROR(ENOMEM); } @@ -1151,7 +1151,7 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) StreamInfo *stream = st->priv_data; int64_t pts, dts; PacketDesc *pkt_desc; - int preload, ret; + int preload; const int is_iframe = st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO && (pkt->flags & AV_PKT_FLAG_KEY); @@ -1207,10 +1207,6 @@ static int mpeg_mux_write_packet(AVFormatContext *ctx, AVPacket *pkt) pkt_desc->unwritten_size = pkt_desc->size = size; - ret = av_fifo_grow2(stream->fifo, size); - if (ret < 0) - return ret; - if (s->is_dvd) { // min VOBU length 0.4 seconds (mpucoder) if (is_iframe &&