From patchwork Wed Sep 22 17:29:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 30460 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp753180iob; Wed, 22 Sep 2021 10:29:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwcueyn/f7e89gKd0ksO8RpuEFsALZBWq8UZhrgkFhC39XglNbXGG5Wi8t7JzFG3j+AjR+7 X-Received: by 2002:a17:907:6004:: with SMTP id fs4mr298417ejc.567.1632331784641; Wed, 22 Sep 2021 10:29:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1632331784; cv=none; d=google.com; s=arc-20160816; b=yHRD31dxtEg0XsrLSo8NqlUVhCGAJZk9/QNYDPO4KWLnQCI/fvrC/9k1RjuNvjw3Hf 6ULzw1seNs0MN55BJPLAisJ7Gt8yQUDiZ+Krblf29uVbL76hKcJJF0qcStBhJZVaiYju b5VMwzUbrej2JRY6Bd7YA6pOf9YLvWZkrqr+mupNoYEJY8WyFH2u/YTQWk4QDzAj5+aA 5zD+FqhQy4y868S/843VMtFd5uRDolRCwYPYibjINUKBlLNohv0GkKkz/DF0K2I+X1w6 7MJTcI1Y2Et00KC4aOcwQUkfAnlA0Dqw25a2JFwpMtmLhIvpfzKMHth6EB2cyLDvMGSj 7Y7A== 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:delivered-to; bh=nN/0amMk62Ep4coEU9va41y4sRMnis1KJ4yAiTzguPE=; b=TY8e0OxO7T89AYxaw4HhGj8Y9VwBdfAMZkA37k3MWF8VOCMaCfZOycGQIja81uZvx4 P+97i4mIQSVBrvisjNv3M+Dp+EKhtnSX3vSafB8BrWR34zRsgWJpx2WZall3DJ0Gx6On 2C2rOKq/NiHWiuljEJ7RPourmHqAoa+UdrM2UbeWnYN9Vhn50hyOkyDOf5viM8MTW1rP oOw25Wr4JYHrQI6PoDINKrWnDndCJ75zBkO3/LKsynI2/X0aLXtzzEUoeIfsqo51jwiG yUCAqkyGdwhQf6O1zh5GvmsVBXUmm3aiYI/x2RgYMKWXqJK3+ze7ZIQFcF+oJI9VNCzU wbog== 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 co23si258317edb.449.2021.09.22.10.29.43; Wed, 22 Sep 2021 10:29:44 -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 7E6C968AB0D; Wed, 22 Sep 2021 20:29:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C2EAD68AB1D for ; Wed, 22 Sep 2021 20:29:22 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 2E8EAE5CFC; Wed, 22 Sep 2021 19:29:22 +0200 (CEST) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 8QQZMmcqIQld; Wed, 22 Sep 2021 19:29:20 +0200 (CEST) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id A45B1E5E82; Wed, 22 Sep 2021 19:29:20 +0200 (CEST) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Sep 2021 19:29:12 +0200 Message-Id: <20210922172914.17914-2-cus@passwd.hu> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210922172914.17914-1-cus@passwd.hu> References: <20210922172914.17914-1-cus@passwd.hu> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/4] avformat/mpegts: delay allocation of PES buffer 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: Marton Balint Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Ijc8fykJFI5m This allows us to allocate the buffer in a single code path. Signed-off-by: Marton Balint --- libavformat/mpegts.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/libavformat/mpegts.c b/libavformat/mpegts.c index fcb32ecd28..2620e79f57 100644 --- a/libavformat/mpegts.c +++ b/libavformat/mpegts.c @@ -1189,11 +1189,6 @@ static int mpegts_push_data(MpegTSFilter *filter, if (!pes->total_size) pes->total_size = MAX_PES_PAYLOAD; - /* allocate pes buffer */ - pes->buffer = buffer_pool_get(ts, pes->total_size); - if (!pes->buffer) - return AVERROR(ENOMEM); - if (pes->stream_id != STREAM_ID_PROGRAM_STREAM_MAP && pes->stream_id != STREAM_ID_PRIVATE_STREAM_2 && pes->stream_id != STREAM_ID_ECM_STREAM && @@ -1364,16 +1359,13 @@ skip: } break; case MPEGTS_PAYLOAD: - if (pes->buffer) { + do { if (pes->data_index > 0 && pes->data_index + buf_size > pes->total_size) { ret = new_pes_packet(pes, ts->pkt); if (ret < 0) return ret; pes->total_size = MAX_PES_PAYLOAD; - pes->buffer = buffer_pool_get(ts, pes->total_size); - if (!pes->buffer) - return AVERROR(ENOMEM); ts->stop_parse = 1; } else if (pes->data_index == 0 && buf_size > pes->total_size) { @@ -1381,6 +1373,13 @@ skip: // not sure if this is legal in ts but see issue #2392 buf_size = pes->total_size; } + + if (!pes->buffer) { + pes->buffer = buffer_pool_get(ts, pes->total_size); + if (!pes->buffer) + return AVERROR(ENOMEM); + } + memcpy(pes->buffer->data + pes->data_index, p, buf_size); pes->data_index += buf_size; /* emit complete packets with known packet size @@ -1392,10 +1391,11 @@ skip: pes->pes_header_size + pes->data_index == pes->total_size + PES_START_SIZE) { ts->stop_parse = 1; ret = new_pes_packet(pes, ts->pkt); + pes->state = MPEGTS_SKIP; if (ret < 0) return ret; } - } + } while (0); buf_size = 0; break; case MPEGTS_SKIP: