From patchwork Fri Sep 3 23:18:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 29993 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1731726iov; Fri, 3 Sep 2021 16:19:12 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxr6hIJzbxdAvRgZ5hop/TfVQj0PHCV5nDkBwxqF9ngQ+J0W1uHOsB+HKn8/IEi7/Y9dkuo X-Received: by 2002:a17:906:b14d:: with SMTP id bt13mr1350426ejb.39.1630711152417; Fri, 03 Sep 2021 16:19:12 -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 c17si714895ejc.333.2021.09.03.16.19.12; Fri, 03 Sep 2021 16:19:12 -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=KvQJQk+K; 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 C5A2268A588; Sat, 4 Sep 2021 02:18:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072037.outbound.protection.outlook.com [40.92.72.37]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1EBDA68A1CC for ; Sat, 4 Sep 2021 02:18:43 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=luXDHJjQDh0lXdoenWBVxC5KVyeBcH5AUN/VUEhzBQBHVa4s+mNTSv9Yk9gNPBIwsgwNIACzKpo8kXEokrBo5V9hdvRZxCZxBKWwTIh3w3bF5xnf5nHfAo+g4RYO2oGN6wzmsNhgP4gbiIBj9m4CkL/4ZXZHa7vNhKNLzuXm/AAXEpQ6Wf3cCdBGoO/1PTk99kiEXHlZLv/popdILcPzV+hJL1/eAYoybgd7iSS1wpV/ty67eBdet9i3uqNY2Q4EUknQyIAorSmq99wmy/dYtsM4rWDqhGXRVdIb1Er7FayUuA371mc4o5YVIA0BEliwvkSmr+zfq6bU2ebw9fSlbg== 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-SenderADCheck; bh=Z9gnVgXNYJqv7S7eVO1zcBeTJquz0G5+Qubu4bcQ9Rg=; b=CscSC+SUY4n+z5dC52EHxSbdTzIjOFnCigXlo1Yd4GX9DFg8XIBFj5qr/lwdQe1uAUgTQNJH8t00BVYJ0szIaEa/gYQX3aanGs0N0wIzFzTIwBTQCy25jbhJ0f5SIoYCpceN7V/T9WiwZ8xemhBFsGVafTcsmEkfFL3YRYbSjQI1equiiQ7PTSrwEh5jclbBUaWoh/RY9ZjOHdIDH2dLQrxo0QTTS5dWePe1fSxM3BWNALSC6mdMxi1kN4NdXNfw6+0RtgUrR393jzby/S4tYt68+2RQnvtg8K2iu+5ETFy5+vZCgLo+8KjAcGsLaWe/Ucz47dfs2pf5wnDMn7rWlw== 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=Z9gnVgXNYJqv7S7eVO1zcBeTJquz0G5+Qubu4bcQ9Rg=; b=KvQJQk+K2ns8b9AbLVdWdd+XtymvCP2z5UAf5BcMr9UMdwzWxzdOgw0MMNdsaw4LozGEkFqY0B8IgAYmWQOWt03h4lYmPI8BD3tjQWK6xPzzxngOIn6BV/CLJrsbfSaXzRgbOKRnsh4CE28YnM3E6DYGrQHtG9/UERpimKWGX38/h9yofpC2E0uk7wZXwmAM1PRJYCoy1+5zDhUA647P0o/X9tSXdIu2eKA+N2RZUSwqXYGOElBcELuJ3vvjGobRHRJQ/ZaDnDIMzSAd0Kx+4v+hNULs02PTwXhFmdCAMPXUeMJHyYDQl11L9WQPj8qxlSSRTl0NA4vZpK/EHV+jqA== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB3768.eurprd03.prod.outlook.com (2603:10a6:209:37::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.23; Fri, 3 Sep 2021 23:18:33 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4478.022; Fri, 3 Sep 2021 23:18:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 4 Sep 2021 01:18:08 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [1NqB1L/H4hhNHKXByzuO8FrsoVpfFQ8A] X-ClientProxiedBy: AM0P190CA0016.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:190::26) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210903231813.3346446-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by AM0P190CA0016.EURP190.PROD.OUTLOOK.COM (2603:10a6:208:190::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Fri, 3 Sep 2021 23:18:33 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 3581e07d-6195-4fbc-04f4-08d96f312622 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTW2Vzrq2cduMqp40Qh10aEg4HZQ6icyxatl3+fPS4i76Mx0PRhPz4m9auyCV0INTmTvMhmdOp/9YVt9iCmGWfTtr8pmzmuse2abhIxMyvNZLJ81R3gf/T1ZUgsxO7vLynKb5xNEHIWZXnmVHMssEb1dJDPff82mZWbTmHvkEzKC0ru4NOoh+Nkc+Ps/KcykJjYl5gJ8N5Mi9FpQRZ87xp8/8ZRR0HYFZDKNekq7MnE9uzhgjPN6j3P6+N49sicGVhXXfHENa8OKdbdKpDBxCnqWiYzkphU8ueI9yGNUKH3kR1L8VlbDC2XgnGLBOzzzz/iDnjRtXZRqA2nLeejYq1AHha+wzHdsa081OF8qTCCC8vRfswivux0upYFK6jE9R6upjZqVs3n30ZFGSklEUexvmASA0m+ZpxFLKme+c4Q4HjRaJh6qKcHQ0osDH7EDYoL0q+PxzYakVcJDNq5yMSsq0G6G0xvNhBQQ3ppMXL5G+akUiyFCPu2uFZsTb42axc8Hy64jp2kwAU/50uIzlvTUZAMGhvSOgnQK8FLEfkSSfiBXm/lz7cqrSLhar4UUg7mAwp5GuA4GptGOxZJbBH/fKBWyvAqkatVd8iGOTkiJAp0WdImNRAw7yHuW13nHFvE1pYl7c+Wh3akMmD+m0gPzdBFUJKzlIiBSN8DDa0Jzt3h/yfwNjolBp+X3IFm2nRutjExm1bKlR4G+bDjRHcbt23ZBWP7WEG4GW/clUyu/ih+ng1q4bNrjbHk2t5Ou7A= X-MS-TrafficTypeDiagnostic: AM6PR03MB3768: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: eazlVvzFtak54StCHFsOn2xEnxNQz66W/5blV2iCVBwyTO7t+5nn7iutone2q+GA4V/Tv9dLi6N7L9dhdGHdbqH9MHZ6YF6c2Hk9UluvZy0KCLUvKEruOg82pKybnHtvfSlnF4GK2HCV1xF1R8irLENv6dko9Osd6BxPgLYLHTLa/atdSesv53ix3fFqOaxifY9VcFMsavJBLlhxc5Ej3Strv82a9wK2Ze1Rpm+3iac86sPjYdmCmgmDye5hkcg5zSHbTXUwc4ysuCwxjLDIvVJLWHqU5AK1YEcuat4G/wU2gJSZRPPy1pGlA6CbE728ZjlvhKdOSUGFfz3KRRTKrbWIScOnceXao8GUPDwovQAPh1W89ovQnoLXVB+6KFYoODXnnySkdaccjt2DzCMVxt1jjxrlK4+brpsef1qmYN01s96Q/hrObqOQWKR9Tcgw X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: O0aELGsMvuPoLMF1qG6ZcDKo1idfXq4eiSs0OlmfHx27L0lVffyLKc9n7MijIJTweVEnFwU6rFyCDsCjYOQ2oFWmWtds5GYCmAXBLOozxe1XnXDpj2diD2Z7B3e/k90nartDclP61fQnip62mKQnTg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3581e07d-6195-4fbc-04f4-08d96f312622 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2021 23:18:33.5511 (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: AM6PR03MB3768 Subject: [FFmpeg-devel] [PATCH 06/11] examples/muxing: Don't use stack packet 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: fO17j6YvAJy0 Signed-off-by: Andreas Rheinhardt --- doc/examples/muxing.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/doc/examples/muxing.c b/doc/examples/muxing.c index 879fe06299..8a11e52842 100644 --- a/doc/examples/muxing.c +++ b/doc/examples/muxing.c @@ -62,6 +62,8 @@ typedef struct OutputStream { AVFrame *frame; AVFrame *tmp_frame; + AVPacket *tmp_pkt; + float t, tincr, tincr2; struct SwsContext *sws_ctx; @@ -80,7 +82,7 @@ static void log_packet(const AVFormatContext *fmt_ctx, const AVPacket *pkt) } static int write_frame(AVFormatContext *fmt_ctx, AVCodecContext *c, - AVStream *st, AVFrame *frame) + AVStream *st, AVFrame *frame, AVPacket *pkt) { int ret; @@ -93,9 +95,7 @@ static int write_frame(AVFormatContext *fmt_ctx, AVCodecContext *c, } while (ret >= 0) { - AVPacket pkt = { 0 }; - - ret = avcodec_receive_packet(c, &pkt); + ret = avcodec_receive_packet(c, pkt); if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF) break; else if (ret < 0) { @@ -104,12 +104,12 @@ static int write_frame(AVFormatContext *fmt_ctx, AVCodecContext *c, } /* rescale output packet timestamp values from codec to stream timebase */ - av_packet_rescale_ts(&pkt, c->time_base, st->time_base); - pkt.stream_index = st->index; + av_packet_rescale_ts(pkt, c->time_base, st->time_base); + pkt->stream_index = st->index; /* Write the compressed frame to the media file. */ - log_packet(fmt_ctx, &pkt); - ret = av_interleaved_write_frame(fmt_ctx, &pkt); + log_packet(fmt_ctx, pkt); + ret = av_interleaved_write_frame(fmt_ctx, pkt); /* pkt is now blank (av_interleaved_write_frame() takes ownership of * its contents and resets pkt), so that no unreferencing is necessary. * This would be different if one used av_write_frame(). */ @@ -138,6 +138,12 @@ static void add_stream(OutputStream *ost, AVFormatContext *oc, exit(1); } + ost->tmp_pkt = av_packet_alloc(); + if (!ost->tmp_pkt) { + fprintf(stderr, "Could not allocate AVPacket\n"); + exit(1); + } + ost->st = avformat_new_stream(oc, NULL); if (!ost->st) { fprintf(stderr, "Could not allocate stream\n"); @@ -380,7 +386,7 @@ static int write_audio_frame(AVFormatContext *oc, OutputStream *ost) ost->samples_count += dst_nb_samples; } - return write_frame(oc, c, ost->st, frame); + return write_frame(oc, c, ost->st, frame, ost->tmp_pkt); } /**************************************************************/ @@ -523,7 +529,7 @@ static AVFrame *get_video_frame(OutputStream *ost) */ static int write_video_frame(AVFormatContext *oc, OutputStream *ost) { - return write_frame(oc, ost->enc, ost->st, get_video_frame(ost)); + return write_frame(oc, ost->enc, ost->st, get_video_frame(ost), ost->tmp_pkt); } static void close_stream(AVFormatContext *oc, OutputStream *ost) @@ -531,6 +537,7 @@ static void close_stream(AVFormatContext *oc, OutputStream *ost) avcodec_free_context(&ost->enc); av_frame_free(&ost->frame); av_frame_free(&ost->tmp_frame); + av_packet_free(&ost->tmp_pkt); sws_freeContext(ost->sws_ctx); swr_free(&ost->swr_ctx); }