From patchwork Mon Sep 6 02:27:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30018 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp3374401iov; Sun, 5 Sep 2021 19:30:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzghcWXk1vviWr9puqr8MimLBCYvKXPSlCmJiBCMceO8/T94sg7g+vpkRdr0GhBk8bshOQj X-Received: by 2002:a17:906:d88:: with SMTP id m8mr11688928eji.250.1630895456801; Sun, 05 Sep 2021 19:30:56 -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 mp6si6866681ejc.384.2021.09.05.19.30.56; Sun, 05 Sep 2021 19:30:56 -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=ZOBLmd2b; 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 CFFCC68A8A1; Mon, 6 Sep 2021 05:28:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-oln040092066075.outbound.protection.outlook.com [40.92.66.75]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B3FDF68A7BF for ; Mon, 6 Sep 2021 05:28:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hK3E9YLS7UHBScTkiW7D00RNb/F765qER2LZn5In8GoC4qQP/l1CLbBIl9bGTiklzv/qNAulC2WHC/y3FFv8azJUU5HVm7SdAtxXx91fJmyzYRs+wCGy7dAyCu0UIwL40z2Uh5DbFH6lpfpYgze/EQtsk65ZwhG9MDCTvdrkJegJfXtuttJ3Ou+KP+Rf8Q38YVwjjwsNIBlVdflRiuLpUAboUDeKHkCBl6oZjbWtxnR3+5yxlJOo0vWyt4YsDq0huzyPV0SA9LZUHTomC2UCINKTmvAs3XFUZnTsdqhSYX5x5hn93OVJHfVTHMWB+H9xVPOBpaJWP4HFnwrgtjDPKg== 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; bh=Wa9D1ueKOzH/2hEOvqd6dLmTWjnzAXBC4+QVKhne/5o=; b=PN69z4N6iaNtlRZMYZUAxd30k6zXqZAGt4Nnng85moZxEd8+pn0X3HCZF9CEWzGwoTGqqfxgDM8zkb0jiMz80qUnzBjkzWlUQrySnhMlOSjFHtcP0ho9dzkqjXK93BYzFsqJhdR4CMLaQR78B4JT7MG8veyiDfueLHpcvbcaVeIIM/xyce4Tyek2sJcI8iy3CHC3Rph005CAwnDI6XfrUTByiT/nlXRGBmGs+90PCQThLdYwZdrFEi53fwGmrPJ97cVYjldu2lsywCwfaQtmUjgqNWPHME4nfyAas3auoazKYgu1KOenZFOtqVM0R6J5xPwHp7wWYNxEtnHealwCjw== 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=Wa9D1ueKOzH/2hEOvqd6dLmTWjnzAXBC4+QVKhne/5o=; b=ZOBLmd2boo64DVKccBWJsRSjyVFW9ZG/CeU2dDC2lXuWTi7bdDw6uc+5xvlPYjqDG7XGdwD4JrI4t0qjjN4YYRxjChrNz0pHSblglu0Q4bjm897zUyVqSSY0/trcaVrNvgDxaJO3s9Sw5pjWM2wJnI1lkIUO8LdytB69wgcpaT+zOO60Ced+Hubo7Lr+4glpDEYHUshGp0Z57roovFo6+1FFzo9ABvtb+T6jHsUhJtauysfUFx6mJVUozbHKzpFxV9XDxGKPBp/0SUA0kneMC0jv855O7J4mRoPv1zsODPm1WP6ivX/dl53uK7XkrTqdjqf8ANiXld+oJaY5t/A/LQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM5PR03MB2850.eurprd03.prod.outlook.com (2603:10a6:206:20::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.24; Mon, 6 Sep 2021 02:28:29 +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.025; Mon, 6 Sep 2021 02:28:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 6 Sep 2021 04:27:54 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [XKnCVFG+oCZj7f6A79Lnc2i5vRlqE5ec] X-ClientProxiedBy: PR1PR01CA0033.eurprd01.prod.exchangelabs.com (2603:10a6:102::46) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210906022802.4072793-15-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by PR1PR01CA0033.eurprd01.prod.exchangelabs.com (2603:10a6:102::46) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4478.19 via Frontend Transport; Mon, 6 Sep 2021 02:28:28 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f3ebae8d-5d1c-44b7-c25b-08d970de033d X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEuzDfZWnnqn466TZwHdqYFijrRejG82ueuOMypTJ4Ejo/ckd+kCFqBbp6v+AUvjWK+UY/FfM8wHSWVjT7UZSg08XInTJ9PjV85r/ruhaKNw6dXka1iavgKJJINq+hAmCqdv/gN9fNPij6TUPE3JTLNV7/qbn8uTzKiGjI6vScqTTlH68E6kVobuyjiw8/eL3vBvtpJM9aRgTqbItPI6nVNuixA9mmyQzyLj/4FI7rPVo0lmshgnulWj+iEBBMMpGN13lp7LJEJgFke4r+SY3JEvpMJwdfEomIoMg30AXODrsFAnvEqE+QkzHxwfGShod7KEjvKK+9CfDeyrPlzZs0Smj/nNac1r5L5HFBiZJgv4vGav8F9V2i/ViXlya7VzzwaydAC0TEufdCladuWgqxmIQ5DPCLxCU4JEZ0lxMHzJbIhCaSfOHW4ZGNkv2JKPu7WHX2FfOcNiXz0neLCh3IL1sGgil5FS8bY+2/dEhQ3haJOmwGSyHHtUtngq1eHZrBO1uzjK5MnENLddU+sBu6luKRA96kGHBEdw5XJDSOt3priU3yqiol1eonZ855r/zp+HlyZfpQIarO+P08xPE7WuzEH1xu5h33HwtTxVBMpr/fBP9oJmHcI0O0znjK9w4jGxQzRe6soLx6c8e0nELBQqFkZBEHOIZr16IGNt0yspDVHr3S4WXcYD3r2zDboKd8QVgTqc2reyfeDwT/cWjZ0zs7mwUWFDFMewEho552CwWWhgGnqqA18SrvtcRCeGKWgkT/PayFl5iAEyCTFilNe4 X-MS-TrafficTypeDiagnostic: AM5PR03MB2850: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2W+kboaBthVNZ9F9zCLXec0bvjbt14nvBLKXKC6OYq+FkjyWmUo6PcoVE5rd64ZSJaGAMTN3th9UywmDHCohfWy7R5SQUlMQjruEX4idY1CqlswvDK0Ef8l0OnlKzJtfhM1Ti5D+wgr3iV9CSOSaBTYr+t9ncHUjIYiHiTawFquRDazvG16cWSID7wCtqdste7C+MIrnzj81M1P/RYJb2JiyVLiOrc1Y094M55aJJCqSw/fAeNAYQyrffrIn1FwoDqYC4sJgiGPDnKMbv7fQr2KHQuqWgMu315rNlgMW8rSgawMN2hw9o9bkzqWXmgbAo8/P6/rGostSAyI8WC4ApmW6Hy3s65CuGaQwl9FKzE44IX16vW7luYoAu634cUROO+xql+lLJ7Apsk70v4wVQKqCevf61I1NmiSaiZA+TjMYOQ5a7aW1DIOMm5oEkn1q X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: yHQTcPmQUOQYVBNvWnwLrycMCv5KsBQGKVEdWGr9FZ+7sSjjREq6mzMytTJ2VU/rbwFYZQVjhZgJ3fZhE/wwTWoFG6xGbf5D7vs0N0GuiKaIx8raes5iZtZX1XHlr7lb6ctaCamkvcmgO4DFfPlc9w== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3ebae8d-5d1c-44b7-c25b-08d970de033d X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2021 02:28:29.1385 (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: AM5PR03MB2850 Subject: [FFmpeg-devel] [PATCH 26/34] avformat/webpenc: Don't use sizeof(AVPacket) 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: 8lHuUNmQwhE2 In this case it means replacing a packet in the muxer's context by a pointer to an AVPacket, namely AVFormatInternal.pkt. Because this packet is freed generically, one can remove the muxer's deinit function. Signed-off-by: Andreas Rheinhardt --- libavformat/webpenc.c | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/libavformat/webpenc.c b/libavformat/webpenc.c index 9599fe7b85..8c9582a2df 100644 --- a/libavformat/webpenc.c +++ b/libavformat/webpenc.c @@ -27,7 +27,7 @@ typedef struct WebpContext{ AVClass *class; int frame_count; - AVPacket last_pkt; + AVPacket *last_pkt; /* Not owned by us */ int loop; int wrote_webp_header; int using_webp_anim_encoder; @@ -35,8 +35,11 @@ typedef struct WebpContext{ static int webp_init(AVFormatContext *s) { + WebpContext *const w = s->priv_data; AVStream *st; + w->last_pkt = s->internal->pkt; + if (s->nb_streams != 1) { av_log(s, AV_LOG_ERROR, "Only exactly 1 stream is supported\n"); return AVERROR(EINVAL); @@ -77,18 +80,18 @@ static int flush(AVFormatContext *s, int trailer, int64_t pts) WebpContext *w = s->priv_data; AVStream *st = s->streams[0]; - if (w->last_pkt.size) { + if (w->last_pkt->size) { int skip = 0; unsigned flags = 0; int vp8x = 0; - if (AV_RL32(w->last_pkt.data) == AV_RL32("RIFF")) + if (AV_RL32(w->last_pkt->data) == AV_RL32("RIFF")) skip = 12; - if (AV_RL32(w->last_pkt.data + skip) == AV_RL32("VP8X")) { - flags |= w->last_pkt.data[skip + 4 + 4]; + if (AV_RL32(w->last_pkt->data + skip) == AV_RL32("VP8X")) { + flags |= w->last_pkt->data[skip + 4 + 4]; vp8x = 1; - skip += AV_RL32(w->last_pkt.data + skip + 4) + 8; + skip += AV_RL32(w->last_pkt->data + skip + 4) + 8; } if (!w->wrote_webp_header) { @@ -122,19 +125,19 @@ static int flush(AVFormatContext *s, int trailer, int64_t pts) if (w->frame_count > trailer) { avio_write(s->pb, "ANMF", 4); - avio_wl32(s->pb, 16 + w->last_pkt.size - skip); + avio_wl32(s->pb, 16 + w->last_pkt->size - skip); avio_wl24(s->pb, 0); avio_wl24(s->pb, 0); avio_wl24(s->pb, st->codecpar->width - 1); avio_wl24(s->pb, st->codecpar->height - 1); - if (w->last_pkt.pts != AV_NOPTS_VALUE && pts != AV_NOPTS_VALUE) { - avio_wl24(s->pb, pts - w->last_pkt.pts); + if (w->last_pkt->pts != AV_NOPTS_VALUE && pts != AV_NOPTS_VALUE) { + avio_wl24(s->pb, pts - w->last_pkt->pts); } else - avio_wl24(s->pb, w->last_pkt.duration); + avio_wl24(s->pb, w->last_pkt->duration); avio_w8(s->pb, 0); } - avio_write(s->pb, w->last_pkt.data + skip, w->last_pkt.size - skip); - av_packet_unref(&w->last_pkt); + avio_write(s->pb, w->last_pkt->data + skip, w->last_pkt->size - skip); + av_packet_unref(w->last_pkt); } return 0; @@ -159,7 +162,7 @@ static int webp_write_packet(AVFormatContext *s, AVPacket *pkt) int ret; if ((ret = flush(s, 0, pkt->pts)) < 0) return ret; - av_packet_ref(&w->last_pkt, pkt); + av_packet_ref(w->last_pkt, pkt); } ++w->frame_count; @@ -191,13 +194,6 @@ static int webp_write_trailer(AVFormatContext *s) return 0; } -static void webp_deinit(AVFormatContext *s) -{ - WebpContext *w = s->priv_data; - - av_packet_unref(&w->last_pkt); -} - #define OFFSET(x) offsetof(WebpContext, x) #define ENC AV_OPT_FLAG_ENCODING_PARAM static const AVOption options[] = { @@ -221,7 +217,6 @@ const AVOutputFormat ff_webp_muxer = { .init = webp_init, .write_packet = webp_write_packet, .write_trailer = webp_write_trailer, - .deinit = webp_deinit, .priv_class = &webp_muxer_class, .flags = AVFMT_VARIABLE_FPS, };