From patchwork Mon Aug 15 11:52:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37288 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3d0d:b0:8d:a68e:8a0e with SMTP id y13csp1225739pzi; Mon, 15 Aug 2022 04:53:10 -0700 (PDT) X-Google-Smtp-Source: AA6agR5nfnuUbfKAu+BRm/ki5VqP0qdnsTrGnHUt6Sh8yQlqnMtUsk9kbhGY1A/j7hx4WnVb2aRk X-Received: by 2002:a17:906:9749:b0:730:c005:5d59 with SMTP id o9-20020a170906974900b00730c0055d59mr10160578ejy.419.1660564390383; Mon, 15 Aug 2022 04:53:10 -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 r6-20020a05640251c600b0043d9d0dc4f3si8765137edd.451.2022.08.15.04.53.10; Mon, 15 Aug 2022 04:53:10 -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=hYdxABWY; 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 2FAC368B98E; Mon, 15 Aug 2022 14:52:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068067.outbound.protection.outlook.com [40.92.68.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5A32368B97D for ; Mon, 15 Aug 2022 14:52:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B9HZA3Vht5PtQ2C66jVJEN36+AMM57NVbOzx44DehcUVnW9yOWokjW2PSpwF+YD/yLxqEuJeK4wszkR/ABeEIKRcdlqK0NnAZOEvZG1Z6ZhoSlwCyCbfQaS7EPjS1CTp7NkNVgC7hdHjQQzO/FQvgOi5Ze8fN1f87GKTfkMn6RscAkSJU/8kTGd3ZedGTXG/j+jPH3Lh4Rbza7TP+P1jVvbBX5xUt5N2UTzKfv9Lq1hHYDepQ7O8xiVHkncmPR1yccGXeD0M+Yyu6EpsFliAhBGJLLI9LooeVatFsI+b2C2vj8JK6loJj6DRUZncFpt6DazSSsSVDBVLzPGCNd9slw== 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=f+cELD++EneQEhETXxwsVQdoD2GImGtB3nyLjjnhW5c=; b=J7rKnRJyXttB8xHBGKYEwcffFko0S6+P0TFZfvg/ajbwIKbXbvyrp5Ppf0SpsC+3S3sHRnD68Unofh4MRh92v8O+CEqj49Ui47OQj6Zc0k2H7P+iZhtxOCH5EFH8WTs2GKml1FXJex8n/JkRyhwDdzGcXLevS+cj1fQNqo71O/O6ZoeLv/LfQtydw8TiPADusEXCzRj2DV8jcpokXx44aVajDeNNcHmBwvZWPrZJMCQOZNAQIBMFxPwoHOUa/Iqak8xWEL9BOvHHPfl5pGfaypF2p0AhUpqF1rxHrqmObMKuVM1dmqez4ltY/v7yeqaDx6EJJiOGvG9I53InujsaLw== 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=f+cELD++EneQEhETXxwsVQdoD2GImGtB3nyLjjnhW5c=; b=hYdxABWY0jl5Ehvi18rKP3LbIwkASGApytb9+F5IKYTSWEUjI8JFBZDmi+f2aiqqBwedoJxGFeiT2heXRDcEN0xtevizS1lyIIy/RhZ8dCwo3Vzwdn+zhFnnuxySKWnlc+iJg9/zm05JpE+hirfIeB/Ks+aA7mucdcXI1U/PqV8x9GeQoA3riziGibG2vAez4TNaZ4J5rHIHvsC66N5Kcbs4EdgnwrqPihTOOXnBQIKEhhG436AhBREcNrr2wP2gQivIXlCcJRNp4N6njmo0AN7zvjvbdlc6zzZSRYxeQn1ZXq/jNaCYB/hgE39B42SOs9/71TksJ3Wv0HAS5USXcw== Received: from HE1PR0101MB2219.eurprd01.prod.exchangelabs.com (2603:10a6:3:2b::25) by PR3PR01MB7937.eurprd01.prod.exchangelabs.com (2603:10a6:102:170::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.10; Mon, 15 Aug 2022 11:52:32 +0000 Received: from HE1PR0101MB2219.eurprd01.prod.exchangelabs.com ([fe80::a552:4834:4a95:2c5e]) by HE1PR0101MB2219.eurprd01.prod.exchangelabs.com ([fe80::a552:4834:4a95:2c5e%6]) with mapi id 15.20.5504.028; Mon, 15 Aug 2022 11:52:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 15 Aug 2022 13:52:10 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [7K08+c22kqAGSRzDKFs0r/3kAAC02kZL] X-ClientProxiedBy: ZR0P278CA0194.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::21) To HE1PR0101MB2219.eurprd01.prod.exchangelabs.com (2603:10a6:3:2b::25) X-Microsoft-Original-Message-ID: <20220815115211.2237279-5-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 08af9c6f-523d-4201-36a9-08da7eb4a324 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTPBnr/PBTQGLC8wm2swa7NUs05gf0NXkHcu6kSPI8NHBsxhHk/OVz5UkzH7/yRtTvhFoDWATyMzxivyBMjeH0LkQbdAlQws4GU0Vr3T9F83DsspY1pe7O0p4Ja7KNYODXDkIe5uG8nmsaeLVGnTmgmWfY/hBDPOe//Ajal2K4RjVkVmEKcRG711dZrXclrHkEv4JuKWqAjukTGwAclw9ImwDACAhvUK3VUCYbw34DcdMNgOt0iv18F/hjlWXmVlvVCJOGiaIdjbJnVFSVnGzpYPlL1Y7+Xuy/uardPKOV3OtNksWlriEPBdima+ZrgsA+LDPu2ECVPmzG0ki9o3W99xv7P1Wljo8Kf7C1yHJnk9Z+Gcr5l8vDSHyonWzxg2BlxGv+QcNiJdLVdVvoz/2TmUgSG+yHbmYYAYtAv8J/L3SrhtFHxcPQFLY0LFoBAU9f/gaIeMZVnVgImQ025VqMY8c2PHgKCE5R2wWIL2hg/3wiBx40t4DwA0djUJm9VzoEe8jqoOE2SuwMY6Mwuq5pLUIFOREdtB8JPgAfwaEXifV+E7BIgkQ0Io8DRLrXEnd6wSUKhZSzLjRgwnu11dFoGTWy3UF5KhR6Nx9aSmjdvLlHWUEtf6nEld0V2UVkDdJRPA8d0l4AmQMRKKFlBECqEuSD00OKNGX9kv61fBYxaw3DFsbX/nIDKzvzk7SWeB69J6JtoYekIoqQNHx4gHr7nGxzmzOsLsRzrTKwVAG1MMBhjvV/HNJbHhKMCfs0+GgA= X-MS-TrafficTypeDiagnostic: PR3PR01MB7937:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: msCtHfDRkqGuSC0fCiPOgfQw3J/+L5SPRqPmvWp5ZnVyYpfjmI4h9WBfvS7RFRZ/IaKNk9m3JXd39tlL2FXHU+1YZPnqI98KzXP9GWZuCf0MfVKkrew/lEtRnbL2DDWggnVKovWYhcaQ+o3njacU14h5j1WskhIgkry3n6C4mm3LEclezwle9CEF2Lrj+u2N8gJxk5fr4lLlCjkSOx3z6vIztuOwsgz+P19lU39WNxhPjRC0kpVbeqWDL138abkIrU/ajahmW1VS6SdhNbSq65qXQyzGgBfegldrWIzvNKSiQatOgX5BwaM8no8ojV/yNSC7s6civnIAkcvx2Nj6zyyo9xeVhNXL+mQxZoZg45ieH4MXkNbMLoqLA53msle3k0vLyBvFyGXUHOX3n/5cLd2uelvy9IVs7BNcyqUh98qRgzWINsgtLVml7gwgK/EEnUVxzGnaKyUgCsQTOiaAqnyTjnSpG0OORMvyd1BL+WCRIbXIaiVmFDVnBP4HQ6fimbIHYByjxYlNT0JSjQEwM70RNDj2MJiFDcUiOMh4/dC9g1LU5IxXfTNa7W8FujXPQ6sME3bgeqCIU1sT7l01tpIimNlEJWYRnpP7ynhalz7u20QxROsipE1r8X10XXUvSK0UTL56U4lSVSxOrR5G8g== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: iRDRXsyXY+3ZdLcH9LGDLMv94rKsXoXy4UOJ+sxrSqBIXmEOsV7vnbZvHHPMrcUeD5VZZwHmiW5NRUjyLqP5V884KePExMCPm/sB+qhOF1CSw+QVxz1yf/V6JEq/4EadQy2PRjn3SU8dZYwWupUrwPJwShNfwDb+L6mqWB0TRoeAQ742Lw41vsQwkisv6qLP0EqCdYKhuMSHl/QRFPMZPyerzIy+AQyB5y8pyEfOXb7doqan+ipy7n9zLGxdbX84wu7FkzOiYDYW4yAPO9cbuCPOcxH8nObeBaX47ccOov+fjV14YVoSTfc1bpMB1hVGzH9mx3fWkjhZWGrG8qMGmK9CNPjMVrBUxHc4uijxTpuEkKIyaWCSZFfa6AJwYjhhVU0EzoV5AaxAtV7coe/vYGZAB3qymoBLIC3gF/A46ozXDdwzPLKPpYiMRTaOkIVKuBSpYX1S0eulAPDFnFVjcC6w0IjBT21hjjxewA6+n22sNGt3DTHtRN5mWff7wbk7tEdKfV8HbCXvY/mFxv+o2a9hAuJXiSffIFELC40PTpDMFpcIPMKWhhv2o013Osl2Ek0yWpWbFoDOnmBsVvVRvZStYDo7k0V9lAxEVlFxVVEgLhjrMxmHOURtA8FZRSk2UPdaq5COm1Hyykf5MCp05bOo9T9EWuFbCgCm7brtDpYdG+Q5B0Zi2KHLFOoGVFDZgij+w4RlbQ9RVFImB10PGJZJfQ1HqEHAWo0S0aNnWYIH6/Ma1RB4NUgOeckFJwIQ10ZpF+MZlllf7j0QOmc4yg+Y6vhkkKMemt72ijgGNF0OIQVsnEZt5tTJOuyeimUJ40iVcaRv46whxN5fHd6O5MnrrGnTsJZfE/pT77zrKVIckN5UiT0BD/NmQXYq/ZVDdYuMH+mLeRaYkU29c37ByNLI2dE0cRHDo8AvPClzypjPSGU6Ku1siMQt81ZiDj7tMscq5wi3ygKid5FFyswCRb4fnzF6BD/HKVFEEQ/1/es4xRVlakF3+GfFyJIojj4npUBKIo/oyQWb3K2Oqld9L3B3N0A8A26a++HADPmDiymDSLYjphDuZxLE0JSG/ql3BCabuDYPI2yAWKSL1RdzK5wcgBrAohPTHuaoRsWMUchqjaDHBRleIkhl7YYBGBIGpnoFtSI7PfJr8F9xfnQ2UUfvk6iQX66bJ9j4WLj/UyD+K4UMM3hHwiq38ZBSCN3S3O0k/YjJJrO1DZMBis62Vds5A2O6S6c5X6b29ntLt5Gi2U5neajtihPI3ASNBsDhSuH9YmfqApYeSQbdrxKyH35oPuA1EIl1rCu58AN3E70= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 08af9c6f-523d-4201-36a9-08da7eb4a324 X-MS-Exchange-CrossTenant-AuthSource: HE1PR0101MB2219.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Aug 2022 11:52:32.5275 (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: PR3PR01MB7937 Subject: [FFmpeg-devel] [PATCH 6/7] avcodec/ffv1enc: Don't create and keep unnecessary reference 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: nnk3ViXkdMTJ Signed-off-by: Andreas Rheinhardt --- libavcodec/ffv1.h | 1 + libavcodec/ffv1enc.c | 15 ++++++--------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/libavcodec/ffv1.h b/libavcodec/ffv1.h index ac80fa85ce..3532815501 100644 --- a/libavcodec/ffv1.h +++ b/libavcodec/ffv1.h @@ -91,6 +91,7 @@ typedef struct FFV1Context { struct FFV1Context *fsrc; AVFrame *cur; + const AVFrame *cur_enc_frame; int plane_count; int ac; ///< 1=range coder <-> 0=golomb rice int ac_byte_count; ///< number of bytes used for AC coding diff --git a/libavcodec/ffv1enc.c b/libavcodec/ffv1enc.c index ec06636db5..6f8b8275b5 100644 --- a/libavcodec/ffv1enc.c +++ b/libavcodec/ffv1enc.c @@ -916,12 +916,12 @@ static void encode_slice_header(FFV1Context *f, FFV1Context *fs) put_symbol(c, state, f->plane[j].quant_table_index, 0); av_assert0(f->plane[j].quant_table_index == f->context_model); } - if (!f->picture.f->interlaced_frame) + if (!f->cur_enc_frame->interlaced_frame) put_symbol(c, state, 3, 0); else - put_symbol(c, state, 1 + !f->picture.f->top_field_first, 0); - put_symbol(c, state, f->picture.f->sample_aspect_ratio.num, 0); - put_symbol(c, state, f->picture.f->sample_aspect_ratio.den, 0); + put_symbol(c, state, 1 + !f->cur_enc_frame->top_field_first, 0); + put_symbol(c, state, f->cur_enc_frame->sample_aspect_ratio.num, 0); + put_symbol(c, state, f->cur_enc_frame->sample_aspect_ratio.den, 0); if (f->version > 3) { put_rac(c, state, fs->slice_coding_mode == 1); if (fs->slice_coding_mode == 1) @@ -1024,7 +1024,7 @@ static int encode_slice(AVCodecContext *c, void *arg) int height = fs->slice_height; int x = fs->slice_x; int y = fs->slice_y; - const AVFrame *const p = f->picture.f; + const AVFrame *const p = f->cur_enc_frame; const int ps = av_pix_fmt_desc_get(c->pix_fmt)->comp[0].step; int ret; RangeCoder c_bak = fs->c; @@ -1098,7 +1098,6 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, { FFV1Context *f = avctx->priv_data; RangeCoder *const c = &f->slice_context[0]->c; - AVFrame *const p = f->picture.f; uint8_t keystate = 128; uint8_t *buf_p; int i, ret; @@ -1165,9 +1164,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, ff_init_range_encoder(c, pkt->data, pkt->size); ff_build_rac_states(c, 0.05 * (1LL << 32), 256 - 8); - av_frame_unref(p); - if ((ret = av_frame_ref(p, pict)) < 0) - return ret; + f->cur_enc_frame = pict; if (avctx->gop_size == 0 || f->picture_number % avctx->gop_size == 0) { put_rac(c, &keystate, 1);