From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 600CC4F9B7 for ; Wed, 25 Jun 2025 02:26:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 5D46468D055; Wed, 25 Jun 2025 05:26:54 +0300 (EEST) Received: from CAN01-YT3-obe.outbound.protection.outlook.com (mail-yt3can01on2097.outbound.protection.outlook.com [40.107.115.97]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 2EE7968D096 for ; Wed, 25 Jun 2025 05:26:47 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mrGElgvUqdCIHolwRsOzxncwXy2bs1TXbxt56j4v4NOlKGdto6bxra/fdSMqruSSjf8ny3UsJTa7Hsi/V3xsap6P06GDAq0sempjUH+UQ6cnWupTJbKn2hQJ4F/FyJ4xJOAtMy+sPpxyRCyFr2vOjiU9pQEIzhIAIWkq3PYeqKuEuWO5rQhEAXjNM7e8fHeW4D5VqxV4pcf5OXNCmrsU0aaP9fBCYFCRPNirOmi/ODYrgTKtjnyD3xBn12pfWUMGL+Oec2GpEWlYjRa1vNa9k42dWLGPpadQjZV+SkIcFDFXMFDxICYiSMlXIALtlvF9Tvm2YsMlknafDMCRHIeFrg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=vf7DANB9rYSKAa9SjR2DfW0R06vuUwVh92NKLFPY7TU=; b=y86YKGvLGJT5oxhBx/b2fOtPYdvh1IefFrQqbolGKtsDE1Y5z/Fp/YXn71wMAebI8NDUgY5t+gHU0MsJ1XktWjP2mjJOyStcS8xQvAJrlz20qECu4+UFCNqoMAIXsWaPIR4WSDnK3gY0qJmuw3LF8kpO64eRJZ17fMW5JZbK7zg7BldmqRHQ8gp4HSKQv0/tyFSI8YBRySH2atfn5XsQceakXNNgY0SheELXs+REJSe2Jenv1BFuCrr7tSkq+cV43q3cJxRFfLacuOgHFP4zMpEsMz9IpvixTG8VYHG6CYRhhs/TGcbo8o0Ksa4FzPLPqAsTncewOX8mRUN3mcESsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=netint.ca; dmarc=pass action=none header.from=netint.ca; dkim=pass header.d=netint.ca; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netint.ca; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vf7DANB9rYSKAa9SjR2DfW0R06vuUwVh92NKLFPY7TU=; b=PB+gDTMTQQOYYoyEedEC8ycY0xjEs/zJtIIgY8C9+o9HOZYpLxtt97Fbz4FKkXTs1DT5cRqsP9IDy+QeyLbQCTi/EwWMSJRVjAsKjsx//PszVYrJgi7CiZ+xtYXVpYa4thMJD7KIuHyapTIiLdCOw+SkV2vU6yFts3SXmIfNbq8= Received: from YT2PR01MB4701.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:3c::6) by YT4PR01MB10823.CANPRD01.PROD.OUTLOOK.COM (2603:10b6:b01:e3::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8857.30; Wed, 25 Jun 2025 02:26:42 +0000 Received: from YT2PR01MB4701.CANPRD01.PROD.OUTLOOK.COM ([fe80::6697:95af:2af:a8bb]) by YT2PR01MB4701.CANPRD01.PROD.OUTLOOK.COM ([fe80::6697:95af:2af:a8bb%6]) with mapi id 15.20.8857.026; Wed, 25 Jun 2025 02:26:42 +0000 From: Steven Zhou To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH] fftools/ffmpeg_filter: at EOF, unref frame used for FPS conversion logic Thread-Index: Advkr4nORQhK0ZsgStaWpPMl4mtmBwACTjyAAAI1SoAACHTngAAlIt6w Date: Wed, 25 Jun 2025 02:26:42 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=netint.ca; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: YT2PR01MB4701:EE_|YT4PR01MB10823:EE_ x-ms-office365-filtering-correlation-id: d22ac68f-d5dd-4a18-bc5d-08ddb38fb907 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|376014|1800799024|366016|38070700018; x-microsoft-antispam-message-info: =?us-ascii?Q?dNT7jXX3LC0geEGYPVb9RNvz9FgVDjn+ktr/hQCaMK8wmKrvy9bRr+nL3vY7?= =?us-ascii?Q?r0y1sJn9vMKLzpiL3sebM3cuTHRzzy9O/g29oCpi15PCUiekk70VbfJsvf5u?= =?us-ascii?Q?gkcXr4oQ3fT3zi7NcS4WuiiD3MRAUF//4bjXDwWnUWcx0q9sKnrg9ahDw5JY?= =?us-ascii?Q?0GMjFt+rBKD2vWkiUZCmdXJH7pW0iw6K2zCMu2XbcaGZyIjWhT9zMuTnZIbQ?= =?us-ascii?Q?6tbD/lw44ERM0Tzs30EecWQ1oY0+HGeLQMmWtWMcIvj9TKJQtbS0sffHKLqd?= =?us-ascii?Q?1N/ZPYO5Y6HGquJG15vmFTylr4ODpdLbf58+kOBajRk7gnb+6W45BTJdWjhW?= =?us-ascii?Q?lE3Xuhvi/Z+D3T+pVMsyzQhBzZfokXNOKTNy/b3qcU4OmS/tKDNXTA4d45rd?= =?us-ascii?Q?7qvY9WFS6mPV0hz1eHWQIJb6simScxR9hmtEyTYDR6qv1bus7iYO/hdAw9hq?= =?us-ascii?Q?1C5CgjZoRH0fO8bNIE8HXYV39WfseFSyiC6mwFIbMmORPU1lhA+z0/I9ZRjX?= =?us-ascii?Q?ZAg+rg+sIEuDMwHR/hbLsI/5/+mAbPF/WTxubrEv7+bgxLpWZElbxzalswLC?= =?us-ascii?Q?ReKyaLWfKHsKfDQmxG4xTTUNzioMkjQJqVg3gpLJdU+5kpyGKJxHHuPv6+C6?= =?us-ascii?Q?7ob2LDOTPGu5WXjbiDlEIi5Wen7SkWQ5+bP6LVBGjngYuLead9gp8AuCY94L?= =?us-ascii?Q?UyEMLUROAVNsUaNqPenxDToCrUzPJTd0lHGMYjpd1cSbXR7DWO0/12QAm5sY?= =?us-ascii?Q?GtN4jslYc6ujRiML8uErqj/wqdI0gztkt7FaleI0JRoVvuXAaEo6dud8v+sQ?= =?us-ascii?Q?nJInGEGGfppu16eJuJmzTt6cJK4Lb8dJFdrXIlg47ZhpvZr3sBtGo+RFoFi7?= =?us-ascii?Q?iypAQuyF74zifkuwK+MSQsusv5nzdqwUVDfaxRcNTPRScFxU+e91WwTFB8Cr?= =?us-ascii?Q?+C948YT+XUm8Yq9YYSCWBEuU5aZHhYi21bNfwG6jrVDlqnMghTyFiznQK2Hj?= =?us-ascii?Q?3v3OF54p2RAn9zowgMXJKaMqd5Nzc2cAuLstuZsKkUGLTWLZYibKiUx558Y5?= =?us-ascii?Q?Ig4S30YCD45Ainu07O75xZmynEXA65fr14rkzJQ2602L44FktaiwMInNNgVI?= =?us-ascii?Q?4uRzwtZ2HqsYhqXagRUPfetLB4YCgERPWa0PyZ8VHbWtCZKWwZ4v3puYoBzm?= =?us-ascii?Q?hMKW2D2WYh7vQAfzJkTXM2F8swztTs6lLGRNj+84TCxT2KuKR0Bp6HYGfLow?= =?us-ascii?Q?Zy978BuElpk+kvVS4anlcZb3FnDwLAUpX6ANq7KGu4kXKokWQw8764HDRcyB?= =?us-ascii?Q?G7ObLHVkKsFvX3N2VmqXEfR8/6Ws6USxhiBYi5UbMkxbE8ckMTQTNTBr7v+V?= =?us-ascii?Q?dIS3T4CES2OV3FWcIqF8/ST5au9Q5I+92OOszj/WM6TOFNmLX7zyN39J1N+v?= =?us-ascii?Q?6ehgiCexpEhc2Rb4HDyOyLxGMkOeg6Qsm87wRGGFLUmy+YNtzuM58w=3D=3D?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:YT2PR01MB4701.CANPRD01.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(376014)(1800799024)(366016)(38070700018); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?dev6/dRKtSIHMTeS/N4Nd5oFlVnnUmqpFLkf3pLBDOndORsAE9mXXlplPBd3?= =?us-ascii?Q?Goxrgl1PXmTKegnxa5LrXnoSdFa4Oq9Oi0i2LtLubKsAMnxkyws9thuiZvPW?= =?us-ascii?Q?5524KR7Z2PP98xWhY37/lCI1eKuNeQz4sVOcEv5fYxErjvFUYcrengPVIsL4?= =?us-ascii?Q?xns2ux9hmjeuDvLwkp+gk5uFUr+HONEa+xBPu2R2hvoQRWWJ5a75ujNoFHF2?= =?us-ascii?Q?jQpmn0WsF6MQr7ALFs1I8qzYB8CyKQvNrTiwVVYkW/TF7NdGW3qbCRfTIa+h?= =?us-ascii?Q?8XheVvP92f33fzf+QEEp35WmaU8J99XtXZ3cK7oxu89BzPnwz8yIzRLZ07A8?= =?us-ascii?Q?B5ncd6XtP33J0DabPnJHFb3S3GJOOdTc1e5cp7vhQnigg1eg9uvfs1CFYVoU?= =?us-ascii?Q?Sam1A6y7+uXVYCPrjhdU8JmEJdhWJtpA04oowKHZ7cV67yoJ0MFFvQPPnUb1?= =?us-ascii?Q?k0LqdM+2J956OvtKopeK6Zye04vH4sRmZv23bck6O3sZMKXKJSWGOSNjoEet?= =?us-ascii?Q?Q+Tx+sssB/jHsRcxQDIJH0tkIc6zzeWQQ/4Hl272hn80JUB7hsSt39hbkVwq?= =?us-ascii?Q?nnX06Gem+sFMoWITUXzjvOQUZQ+wNMQKtHyM2BmyeJ6OqhDU2UfNzo9Wg9FJ?= =?us-ascii?Q?L7TKStcr7S45Q0gFYCaTkaURjSibznotiWt8D5lBm24F0iutuda7XjE+wH8v?= =?us-ascii?Q?1jk47lAOLl5aqAMw4PhZfNLofhYZDnjo25p3jku6U5E+MrZfNsvwJQKeBBpy?= =?us-ascii?Q?COhArngMkRmgSu2BlTJWa2BvJYAuEJPRNvTCegtLNcAsKWCCyA6wBYBL9f0j?= =?us-ascii?Q?3tnv/MUnNOdaju52AkhM6vO42HiAP+ofc10RL0juY3tKcurVn8DNmHIRzE7a?= =?us-ascii?Q?UpfHbM6A0QS2FQdjJRJOCJWKTpMTiMt0n/ojPgawpfSWbTrwyeBhk9q4zLSz?= =?us-ascii?Q?GleU/wEItr+zLpwAVbO/3rHhfISynt/WIRteRk0DXf5xEpL0v881P+3xO5Oa?= =?us-ascii?Q?AS82/y+eN1R9b3XsDlJG6BhE4Ij0dDcB4i8haxyiujlUssdtDt4dujgHOWZc?= =?us-ascii?Q?KlFIgxp62IT/j/pLFtjKmJFk+LIAfXDFBvVpLw9/OvrOJyplFuEXEdVp04fB?= =?us-ascii?Q?uUF2XKJxj5Zn5g+O9HXAxASHqTNDLUuKmtGwUBeklyWlAgOI7vZ5uteZBNeE?= =?us-ascii?Q?4mhn1jorJwUmaijXofhErB/JL2ONq5Spmrsd2zciFtCisy1R6M2ctpipWWvt?= =?us-ascii?Q?O88Lu9GGMW56PW6JAbMXUFvntUSRhAq0tSvDEdTr8PtyJaVSg/XjdwVszEDn?= =?us-ascii?Q?zc8R4bcAUwa6eDKepDk3R5lBYLZBOP3gaCuttPhfVedoUefAggt0wUkHi2HK?= =?us-ascii?Q?0WwJBhZJ87JLDmge1U/hIhqMsYrT9PSD9HUcR+GEsxymN3z001AHrZ8muUWM?= =?us-ascii?Q?E1w/VHtWQKbkimvOqUFDfUDN8Pkf2mqZdZU3d9XEo90556h74vge2vCSa6lY?= =?us-ascii?Q?bb2I6fI+/w77HjE7owGr6b6gnBZl4agkBg+0CKm1/RhRodOkTIPB6MsXSiZK?= =?us-ascii?Q?Oes8nR8D45RABdYYX8UiKXXuH8FVMgaina+r9wwd?= MIME-Version: 1.0 X-OriginatorOrg: netint.ca X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: YT2PR01MB4701.CANPRD01.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d22ac68f-d5dd-4a18-bc5d-08ddb38fb907 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2025 02:26:42.2199 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 76291bb4-3d04-48ef-9eb8-3e33475af3cb X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: gQt2PksDaJnhoGOudmuTU3Mpd0JC3uh4J0V7wuP6x40t9/0EqBrmDUJkZtFrb/76I0LgCmG09+pBiaHdMI5xCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: YT4PR01MB10823 Subject: Re: [FFmpeg-devel] [PATCH] fftools/ffmpeg_filter: at EOF, unref frame used for FPS conversion logic 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: > >>> On Jun 24, 2025, at 11:09, Steven Zhou wrote: > >>> > >>> fftools/ffmpeg_filter: at EOF, unref frame used for FPS conversion > >>> logic > >>> > >>> Ever since commit 64f3feb added > >>> `avcodec_free_context(&enc->enc_ctx);` > >>> to `enc_free()` the encoder context is closed before filtergraph > >>> output > >> context. > >>> The filtergraph output context holds a reference to last AVFrame to > >>> pass through it for FPS conversion purposes. This is problematic for > >>> HWFrameContexts which may rely on encoder context to free HW > >> AVFrames. > >> > >> What's the encoder? This sounds a defect in encoder implementation. > > > > The encoder is the yet to be upstreamed Netint encoders. I will put them on > Forgejo for review later this week. > > Perhaps the encoder implementation does not conform to FFmpeg > convention. If so, I can try to address this issue another way. > > > > The Netint HW frame data held in `AVFrame->buf[0]` is tied 'sessions' of > Netint HW dec/filt/enc in the Netint driver based on what Netint HW session > most recently accessed it. > > The AVBufferRef destructor for `AVFrame->buf[0]` in Netint HW frames will > use the most recent session the HW frame passed through to communicate its > destruction to the HW's driver. > > This allows for the decoder session which generated a Netint HW AVframe to > have its context and session closed whilst the AVFrame continues onto a > Netint encoder. > > Typically this occurs when decoder is closed for EOF whilst frames are still in > flight to the encoder. > > Both v4l2_m2m and mediacodec decoders have similar issue, and they use > reference count to delay destroy decoder context when there are frames on > the fly, e.g., mediacodec_decode_close. It's a little complex, but more reliable > than fix on the user side of libavcodec. > Ok, thanks for the advice. I'll take a look at those hw accelerators and try to fix the netint encoder issue without changing ffmpeg framework. This patch can be cancelled. > > > > I noticed commit 64f3feb closes encoder before filtergraph; but filtergraph > holds a ref to last AVFrame for FPS conversion usage. > > This ref in filtergraph could be discarded earlier when filtergraph processes > the EOF frame, hence this patch. > > > > Alternatively, the Netint codecs can do without this patch. The frame's > resources on HW would be free'd by other garbage-collection mechanisms. > > > >> > >>> This change unrefs the AVFrame > >>> ref held by filtergraph output context during processing of EOF frame. > >>> > >>> Signed-off-by: Steven Zhou > >>> --- > >>> fftools/ffmpeg_filter.c | 4 +++- > >>> 1 file changed, 3 insertions(+), 1 deletion(-) > >>> > >>> diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index > >>> a0dc4c745e..cf2d016b2d 100644 > >>> --- a/fftools/ffmpeg_filter.c > >>> +++ b/fftools/ffmpeg_filter.c > >>> @@ -2560,8 +2560,10 @@ static int fg_output_frame(OutputFilterPriv > >> *ofp, FilterGraphThread *fgt, > >>> av_frame_move_ref(frame_prev, frame); > >>> } > >>> > >>> - if (!frame) > >>> + if (!frame) { > >>> + av_frame_unref(frame_prev); > >>> return close_output(ofp, fgt); > >>> + } > >>> > >>> return 0; > >>> } > >>> -- > >>> 2.25.1 > >>> _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".