From patchwork Wed Mar 30 22:49:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35100 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:c05:b0:7a:e998:b410 with SMTP id bw5csp1066696pzb; Wed, 30 Mar 2022 15:51:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyN1nTSBW4Z3mjz+lLOyGNKRuNHqwJVpHZpUvuh55ehT7qNUfOP0K6yrd431kvyMfXI2+an X-Received: by 2002:a05:6402:1e92:b0:419:76:21a6 with SMTP id f18-20020a0564021e9200b00419007621a6mr13467476edf.128.1648680664292; Wed, 30 Mar 2022 15:51:04 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e15-20020a50e00f000000b00418c2b5bd97si24112950edl.121.2022.03.30.15.51.03; Wed, 30 Mar 2022 15:51:04 -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=@outlook.com header.s=selector1 header.b=QFPHufVG; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A063968B29A; Thu, 31 Mar 2022 01:50:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2075.outbound.protection.outlook.com [40.92.89.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EBB8668B28A for ; Thu, 31 Mar 2022 01:50:34 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UWMUizkOz1qYhPZepJKOLUKbAvkd84vBA/ZwB3qAecnrrsmNuzKgWmuuH0Kn+Atkv6v2klk3qgcMyYW79HhOfzW7u+t9EVBX1w1RVHNuH6muwzJ4L9JWfJ2hAeFDBhufe51ITAnHE0GPyiIpazgpFfuavlnjqEy9Unkn+8DTfPPtONLEmFE1NlFw1oSATbhv8xd1c4EL66amchNUBh0SpbSGZ1yE1+rApyRemPEqaNw7pFBp6AOq4UE5AjJ3NCwsXDsZMBfUlTdVxd11IW8D9x+iQSBFCYkYFGCBVGc6ZFUfKvoJM6rt6f8CtBSZNcLJLFZ8w+GxwNgFCh7TlBo6Ug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aV04TANpq16x3VoUabVGdIUJJ/Iw0AXM5midIRfxDtU=; b=AsYb4jOMVQAx6ncPUyZCmeHzAMc16xxENJPr4YEMN0rNSTZtRV+O8RXwgTjuv85iwOOPWOc7f4N2DSVSEdrYIBHEKSuxMDsh7+d5Yuyclfof4Bj4xoGnGSgFV3zikCFzbAq5VGLjufToGworsylshCqWk3wmi+jDTJSqFszWBZyfNOrzs+H5tE5tpY/AAMcyqUSHmlt0PcPLdeHz6jezKvtG0lHdXcDuoesEL+dJ0/LMSQUFDaSwKvF7s0y/RJ0SMvLiE17JYoJNm2oAuxjT6QhFgDaSjEn0PgA0L8dOosTsJTD2YBzIU/9xZHW9Y/TfOgf0PfgBCYNu6zteGVspFw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aV04TANpq16x3VoUabVGdIUJJ/Iw0AXM5midIRfxDtU=; b=QFPHufVGcvUvP6bcl/G8RnimyV4E5ZwTI3fJCzIPl5h5A+v+EQK8/qouKoEqxVodU03n5R/MCDrCw9mSJ8MT51yQwvL/taaOMedJ3+QEXRI/AluYZ0O6K/Bew6sOYi5OeWZoHT5usZHEOTX5yNmRCgtb4lfyfCiQwlXSI9hK2uW6mBqZdIj+91m1DpXHWzaZa5+3AS0Sz5iB2XVHgd8Md7VVYiCjtMWTXEOV47jxinHsFKtWGRtJckkr/UwbQI7G8YoiPzbF+uj0or5Xrb2Vn3Ou9VLs/RmeHxxSeQYz8VPDRbHrVlK/btX4oTtqIeCVRPLOlTIEiLLKy/xF2lBXVQ== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by AM5PR0102MB2579.eurprd01.prod.exchangelabs.com (2603:10a6:206:d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.17; Wed, 30 Mar 2022 22:50:29 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%3]) with mapi id 15.20.5102.022; Wed, 30 Mar 2022 22:50:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Mar 2022 00:49:58 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Wwtxn/YNY+rwcLf0PvjIhO18VUJFHdW2] X-ClientProxiedBy: ZRAP278CA0002.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:10::12) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <20220330224958.538843-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a14c88df-51fa-416a-f54a-08da129fb00d X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQvrz79k5T5N22eDaDjTtMWw3JvljEAPzyqXaHQk803kAIWxFrGY3HxxSpShKZvsS4JKJGhZtWwVEKuxH64XXVtyZj5XduRiPNT/nqOHRc525niR3AdmVFEA3HkuhzClj9ZHimBRY9TfzwCbxuBon1scG64WUA8VlP5asOvBIRzhilG5Zn0uLsg3bQKuGgNNl2DaI11yh9e+1pgHYln3PXrGGky3DKDvtcd9H5r9k+mxt4etkfL8zH+oPjfNkDPrrHsN+atlawv2lrhzgaI7hhHBDYtlEQouWHdjpo9guktzWExyi1xeLhvl03rjaUSEpKEN+jsgyGfMtwtRAHTZdOhDpW6s+n7QqdSqTf3kWCopUFpXmamVoBsoFoHTsLsbeQLT9OkfTHllctrYkmTPnw/Oxzcz3SFHVRoic+IE6QgSCmqtzss7V8+LqINulX6A2q2HYN0nrEpzG+eNoXOmIRSWAu5DlfqdEsnwycHLERREycfeIrBgh/aOzVL9lBAQaOv1ZuclWacFRA/MUdUve6laCsK8vJfeh0fsS0TTKBhMkQ8tyI1lXeCt6hKgMgcObEVXvb/PSBU6FB7Qz857JaJlVe/hdAgwLVrbR04Ph+Nb9piwLAbNBqywSoMMXnAw5rDmi00ykyC1pUCnEgHiWb5WHJFlBrbBAc4eyYTGoByVx7k7sO1FeIT4ZR2iUdq8oFghdQw1GSy1bDlbr+Vid3C5Xd5mFQwV/ECtsI+sjga2dbXj5aLVv7V21kmJ+B264Y= X-MS-TrafficTypeDiagnostic: AM5PR0102MB2579:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FXjpKE5TT2mVW5E0JqpeAm3oec0PdFZ9PnOUdjXfD5/0U1mpWpFiXRuelmGzm7XpEsturpxvKwGjZq1POzsXS0KiTqXFwnuNXQYH0YZMbljFFAzbEMiP2ZYSOc4VtFxpYkvjgv7jGw7j8O3ZVFDUvC94UZys9w8C9/Lc1gAgr5ijVj2U0T5xWMB6/mVBWXDeljE7Z/B3cLnGd/3mQ7OyQyyKfGYHqaVr/GvIoGF5C4OvmAFCwUzGqvhnqPStwWEKRhS8gX4xtGWHdTkjURf9suxfFJmoZpUF+1qzdQAgWhUFBiLMr0hZPo4htJN1ctDNBhSQIi1h0rxCZo4RpPuhUUPkgLFfAniOA1GUsPhtXLvI4kog1/ZgZISjXn9Mbaoy6czirpDYuPHReuXxNKP6agPFKijDfQ/e/Ym1UqtwZYxYr1MIbC11B6OE5jmdHDla3XMinMmySrBAH09GdLaHg/3cjRFI0HZr+0Vi01CTddNg2MQ38H6soCK8+GpkIuiQuWXtZqmPijYDuBNoo22Oo+vRlZpeLJRfDVYQrI/r0o2dHgT+e8Xl8sPnp1xaYk5pLeRrG/MBnghR621lW4R9QA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: W+U3MdpaMsShb5gWz9CuN59/DcdcpxRbF+EjQl7uHnDKuTlXE13h9I1XiX0t1xc+rDP3I8KnqujvQj8uc6WbEjin5hZaLIrPvORVK4f1ONchFmkBwK+OPVNhyANA50klj6K9+d1+U1/ZmYei+Nn9XYHINj6PC5DQj8jev4FUeZSeVX1/1Z5ls7nzOdTCGJOSvP8HwvzTfmFn7rxygop2EvsBxsnDN9fO8vx65o30pNN9xfzwGb60AW0YfRbIXCJeYpNIG1hR3DiEFbbAVVkWID2Hrzic2nuh65rhpIQyCuejsxlCB2R/XavVmR/8LK5K5K7x1KRnqxe3djQKIJY/qeyWqC/T1M8bgnNbyBZqhFwk1kNAQXI0CBRYn3IV3kBOEdKunHt4mde7slZqhjmMkptN2z39z6q1qXRgA0T5YULLItTtVPfz/vzgdVYDuZ3FNvFCmfiI2XUx1vrvL+qQOsaEbFI9EcFQ2LUrdiRJZCdTRBUQt2DRS7FjAWKn+9MK9+poyEaEHsuf+G+1E3ZsTsyyTF/7r59xiNxzCrH15Ch7fo4w13dY2oc/nUA9oefkQQtw2Vd+vIbs6BNR1T6M84DINquIev98NUWHT/zJQD1NJJLrgSJ7e0JQ7KBeIUkArRF4xxy6PcM+qGUQGWuTwPJmL1gjfMxpyIf/brvKIVlQn5WHA6sBNdQWYf0IK8A9/t4FiC7JfCZC7bMqMi9WcHgT4dPM1R4E8SCl7yw0q3eut0B8xlJHnrIpZBSA4lhR4j5nXMXzlq2EcI7NfVb08l+Qq1hbUiiw1I44UQHhRUrc/iIi8fXDRkCqtdIvk+MFeGGmjUAE8UhvQyOJeON2N7o70mo+GLIIlAmv63ouI60Sgmx/5jQiPytxjGHRFU/YxTmD0aoX1Y2vrmr2AiRkjpiF7hSg3WJWwxbxgyml0EATxt4+FtiUeyyYy+Lh0VA+ayciJJeqbs3Q6alA9IDU+f4XUkpPORtegLnaCKd90Sfw1GYcvBFFISdvU5P6p9BteUgCCIrdMjsmZWDkQMVw441Og+ZVcYHm5XRqLbLLBiBPUKGUszmklHzM/FO2FYZHHNzAg4fedNxGcjk5u2gKWXmZSKEcVI/d+UB1TCKO16Wz5wNgJUEZDuAK9fk51fj+MOFh53qbGok8l8RFja0eEApEcXeYbKEHVoFmt3aVO1lRAyBvSoKbS16BfMQhaIWPQZSWg3dtaq82yElOocvOvPbyLoRBB/1ZrlyXQOZHVft0jKdRev9v+xml8Ey0ayvW61ADg/4k+fNtdi+ExG1aSOeSmzirqkuUq46i7qeXd9eVO06mLir4hyYqRyMFrX5DuiMVri2EgdQ71Kv5EKW6tWoLtwvDyglFt6lGmRCrtdsladtANOJ3mVdytyJduVAhuBY4TvHvfMHVaC+V25LvGtBoqfGH0aNYWj+cB9Y+LExKWJC7gTMuATAg483A/U7C X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a14c88df-51fa-416a-f54a-08da129fb00d X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Mar 2022 22:50:29.1026 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0102MB2579 Subject: [FFmpeg-devel] [PATCH 7/7] avformat/demux: Avoid stack packet when decoding frame 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5IQtaB0LShEG Possible now that avcodec_decode_subtitle2() accepts a const AVPacket*. Signed-off-by: Andreas Rheinhardt --- libavformat/demux.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libavformat/demux.c b/libavformat/demux.c index ef189d9d8e..ed5c811a01 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -1983,7 +1983,7 @@ static int has_codec_parameters(const AVStream *st, const char **errmsg_ptr) /* returns 1 or 0 if or if not decoded data was returned, or a negative error */ static int try_decode_frame(AVFormatContext *s, AVStream *st, - const AVPacket *avpkt, AVDictionary **options) + const AVPacket *pkt, AVDictionary **options) { FFStream *const sti = ffstream(st); AVCodecContext *const avctx = sti->avctx; @@ -1991,9 +1991,9 @@ static int try_decode_frame(AVFormatContext *s, AVStream *st, int got_picture = 1, ret = 0; AVFrame *frame = av_frame_alloc(); AVSubtitle subtitle; - AVPacket pkt = *avpkt; int do_skip_frame = 0; enum AVDiscard skip_frame; + int pkt_to_send = pkt->size > 0; if (!frame) return AVERROR(ENOMEM); @@ -2042,7 +2042,7 @@ static int try_decode_frame(AVFormatContext *s, AVStream *st, avctx->skip_frame = AVDISCARD_ALL; } - while ((pkt.size > 0 || (!pkt.data && got_picture)) && + while ((pkt_to_send || (!pkt->data && got_picture)) && ret >= 0 && (!has_codec_parameters(st, NULL) || !has_decode_delay_been_guessed(st) || (!sti->codec_info_nb_frames && @@ -2050,11 +2050,11 @@ static int try_decode_frame(AVFormatContext *s, AVStream *st, got_picture = 0; if (avctx->codec_type == AVMEDIA_TYPE_VIDEO || avctx->codec_type == AVMEDIA_TYPE_AUDIO) { - ret = avcodec_send_packet(avctx, &pkt); + ret = avcodec_send_packet(avctx, pkt); if (ret < 0 && ret != AVERROR(EAGAIN) && ret != AVERROR_EOF) break; if (ret >= 0) - pkt.size = 0; + pkt_to_send = 0; ret = avcodec_receive_frame(avctx, frame); if (ret >= 0) got_picture = 1; @@ -2062,11 +2062,11 @@ static int try_decode_frame(AVFormatContext *s, AVStream *st, ret = 0; } else if (avctx->codec_type == AVMEDIA_TYPE_SUBTITLE) { ret = avcodec_decode_subtitle2(avctx, &subtitle, - &got_picture, &pkt); + &got_picture, pkt); if (got_picture) avsubtitle_free(&subtitle); if (ret >= 0) - pkt.size = 0; + pkt_to_send = 0; } if (ret >= 0) { if (got_picture)