From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 023A745927 for ; Mon, 27 Mar 2023 20:33:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5891668CBB0; Mon, 27 Mar 2023 23:33:07 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2065.outbound.protection.outlook.com [40.92.66.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2133368C5DB for ; Mon, 27 Mar 2023 23:33:00 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jpJhYyWfhMrAhyYfmuTs+Fj8kWoaZzkiUIDSwxnat7egNqj18s2YN54qUflFogZ7nF6fBb4dWWVK1tfiw9vuyK5RpRl93UakdZ/P6g9/pxL4l+4GjizsIoJGFI4rNkr6zf98xEm9p6OLvtj+MKEup+qnCbBRYlpStmTP5TqhZzRKQDS/x3fxltZpPk1C5S/tCsfTTNrhNsBA/dBC/As7geosA0UU0pK0qgslMT9LP1zzmp4SMrvQy3Ir0NUP7evDnhBEist5K0xk+47ZdqPSXAd+zTg1L+u5Jzupz6R16omZHCHYviuoA6/la/BsmaM+JTyIDlM1WNpJr8/jMo4HcA== 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=YBpOAQLBrk71RsToycI+xiVsUzYpNqWpkWCozJ0qH7o=; b=lk+2dVqBtjuVWV4cFXhZMh8N5Yr+4M46dtE4WGlkaCRaLN+8hmIK85q04bH8U3uoI9tAdwCo6t9mCJ2hBdSec3o6xg/2Ie3ksGfovD/JEXckc9tworEOJRehN/Pp4hX9JwAqFjLDbiQN7wrdPgC6oI9bn1UOUdLf4RrA8WvV7VoKtrxwTabWIzk0psqry2Fe4OqCsDkcOaU/3h+W30juOaAsxE/lDUzjMaKGuv7uR86J2GQyw9qZ+iCwDeQvFvGP5pdOuSh8Go92N9QaCgElTaU4hDG4Cq4Jh1Xc26sxCc50CmxHn1Xt4bNfxLoD1zVLlV9wmA3QNsZJgTlAIOcFLw== 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=YBpOAQLBrk71RsToycI+xiVsUzYpNqWpkWCozJ0qH7o=; b=caMSCMeJoU9g5F8T/jAvuMCWWjCMXuMRqRE/6IVgiYrK/HBDftimp/a1pGjNXE1hnuIlF77fwvBoSOsuhF89yKBjJ2lrVMhGaZSm10OmjvCcVyYi8j5apbT1LzzJJybvFyVdPkaEl48GJFGfZN2QjAKneVSzoDET+QbYaJT5RZewN/hyxvHtBhBtlf5TlJ2gn9kC3H/IDwUvYIAfLmAsk1M76AsI5IxiZuyVqgi9rfNTluxLb+Bj9ZRDlYqAsLCMVaj12Ocng2opieVM0bQvs3ODPYIP/lomOP74ZNq42WFNUk1ANUgXv4a0Hwnu1HToXfrJ4n6BLUVbwLVxVw6GHA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PR3P250MB0324.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6254.16; Mon, 27 Mar 2023 20:32:59 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::bd9b:b9f7:e94a:109e]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::bd9b:b9f7:e94a:109e%7]) with mapi id 15.20.6254.016; Mon, 27 Mar 2023 20:32:59 +0000 Message-ID: Date: Mon, 27 Mar 2023 22:33:37 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20230327200956.2138-1-jamrial@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20230327200956.2138-1-jamrial@gmail.com> X-TMN: [GX7OAIz+DOoIOP15qpn+VmAqjE3DXqoKAH5FQsjLz+g=] X-ClientProxiedBy: ZR0P278CA0147.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::21) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PR3P250MB0324:EE_ X-MS-Office365-Filtering-Correlation-Id: c9a6aacf-e109-40d5-dc37-08db2f02743e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jbmDkVhA3vQlP/EyGgxLRNMhM7VQQZ+yNJ5WZwfw0yMD7EY4A98pqXd5VvfShvGXZtrKzuSCDRmTmcA3+qcOVBjcwNLRWnqF5ROLIcK3rFjMjM6pAhwgtF21aP/udMNdmY7DliX9R6SmVyi8JCjjXSC23650NzHh8E0iyRRp2Xl/4H8j4isXK5g+V9+DZopdpYTsTg1a0cTJBwBU97YqriqA3dvwt88R744KNPIrVjiaIaivmFqVePK3fSvjUcyR/yTdVFUDlJwxW1AhwTCHFs4lsD6xhdndBKZVocJunvH8jl8GEMFyZqBPrJf/GTPjfNkgB0waz3Uj3dkKLnT9At534QA1eacPVVcJ1lbmbDQ8uM+zQpkgkSIiv7RFHNH4xjH7vGFq16fDDYPvUxafV196QQDUJLD7OJLS60qYyoHWlLqO1dmOmARfq/fOMtSSXc+VYF1QzZ0cDELxHhuBDKanL/02h77AH27U/gcPLX/e9kD24OsgYGbe74Rge2aVIMg2HX78UhZne8J7pd5w1YcZ21a0PSLLC3pRD+qjFrr0t5J+i5MBklg9MGSVbVUPYFgv8H6E6rJwiRcgeAcHPi2lTNesmxmfnYLGc95BeKwLUkXo7J4RVgQmCgOBG6AX X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WFZ6a0g0L3NhdnpUd3NNMStrSStHdUJsRnhPcVpGWDg3MzdQSEhPVEFSREY2?= =?utf-8?B?Q2NHcUd0clJGcTFjZzVkMHpzNEhMOTBIV2E2NVp5cHQzRktoVkFZZ2NtZ2R5?= =?utf-8?B?a2Z3a0IwSW4yZnNlb2Q0Q2RwZzc0RnhESThVRG5UUFQ0M0tDTVhLREtGNXZy?= =?utf-8?B?K2I2d0NqcDl6eFp2akdtTGtOZmdMZEVFNHQzTFhXMzk5aDhNdi94aDBHYzlX?= =?utf-8?B?WE9JckxzRVhyZUdvN1A2aWpkQVd0WENFazkveUxaT2R6T1NQcVlhSzBBK29I?= =?utf-8?B?VEZQWnYyaXpNVEdVZHRsaHZJc1BuWitxNjl0UWU0cThHb3BXc3VycXhkMW9G?= =?utf-8?B?UDJ1OExvMVFrR3k3cnMrb0h6MVBtYjcybEc0QzRCeWovK3E4VENwRld1cjVV?= =?utf-8?B?U20wK2NWOVUwVUowb1ErUDJiYVkyUzh6OWwxR3F3dkFjcktHaFBnMHNqYktv?= =?utf-8?B?UDJFR2QxVTNvaWJOcGtYL3RxVFY3ZUM3OGc5enZLZkZPSEJKQTQ4Y2JzSE9i?= =?utf-8?B?dnR2Sndka01OYzBRVUNPSjNHR1BCTjRPYWRkK2FzNERJWkg5WGduVWw3NENi?= =?utf-8?B?TWRhR3JkY0J0TEFRSmFPUXRvSjF1QzFPMjVONVJ1SVVLbElKWWpQcVR0c1RY?= =?utf-8?B?aHMydldzTXJzSXh2M0tWSTJKeFBGbHdkTGN6SzhHWGc4YkZnZTBscnpzNzBy?= =?utf-8?B?bXZrNStRL0srS0VSNWJmQkx3NkhDWGhGRENlbE1FRDQ5ODJrOVRpZlczNHQw?= =?utf-8?B?WlpQUzh1RUx4anUram9neEMzbkJWSytJWEg5bmhqWm5FSU1zaUNXcmlGMzNo?= =?utf-8?B?SjhFS1gweGMzejJlaDF2eWlwT3BGaDNPWTIvRFA2bEVaZm1rR1JzeXRQKy9w?= =?utf-8?B?TWFFUllwa1lnSU84MDQ2ajM5VFljZ0Nkand5MGh0cUJNVkNmY2NwM0h1bVcv?= =?utf-8?B?UjlrSEQyRzdKaVZXWW9aZEN1TGxaZFhjYVp5a1AzM0VNQmJuUlhiVnQ1OUdp?= =?utf-8?B?cnhNNE14aXFaZmw5cWxETS9Sek45TVlkZ1NtNGsrYUVxMGU4ZVI2OFpHK2I4?= =?utf-8?B?MkFoeU5kZnBXQ2ttMFNabGxwUVJYalY4ZWVpNC9rN1ZtYmxyUXU0NGxuS2hF?= =?utf-8?B?MDFiano5Nzhkc1hHd1BEWU9tK1U1aXF6bHcwdjI1WXUwblJKZnRMVEM5N2JH?= =?utf-8?B?Tm53VUYxRi9oUXdicVJIRWh5NlVpbktkMWwvWGh4ZUsvU2EvOXpYeFloOW1R?= =?utf-8?B?cFdFcG5wS21Ib254ZXprODBudlArN1phU2szYURYQjlTL1UvclFpWW9VWXYr?= =?utf-8?B?YkU0eGp5R3Q0UGI4Q3AzTk1LeFRoZ0JuMnhoQ24vWVVYVkhzbWFzZ05Tc2pm?= =?utf-8?B?eHZid0NJOGtBSkVoSDVnL0oxVmpDc21LZ092ZXp5SHdvN29oWkYrRkxDcEp1?= =?utf-8?B?Y25HT2RHWHBDQ1Q3L2RnR2gxNWQvek1xbFVVZldlVStLeFJobk14dVhGK1cx?= =?utf-8?B?Vjk0UDY1b1d0NjVUYS9FMzFEaVVLY2hxaFpuMkVlOHllUzJmbEpKVVpxSVJj?= =?utf-8?B?Z2ttY3EvNjRCZHNZS01OL3EwQzF4WDhyUkZqOURXd1RNdGMrcEVSR0ZmYVpr?= =?utf-8?B?QlZhNTAvb0VmcjJWcVpYdlV6Z0Y3bmJjUGRRZHRsVGtjbStsRmFDa0hLRWN0?= =?utf-8?Q?oR+IBYQS14pwM7EWVAhD?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9a6aacf-e109-40d5-dc37-08db2f02743e X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Mar 2023 20:32:59.2653 (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: PR3P250MB0324 Subject: Re: [FFmpeg-devel] [PATCH 1/2] avcodec/libx264: add a flush callback 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: James Almer: > Signed-off-by: James Almer > --- > libavcodec/libx264.c | 24 ++++++++++++++++++++++-- > 1 file changed, 22 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/libx264.c b/libavcodec/libx264.c > index 92828fabc3..72c3b6cedc 100644 > --- a/libavcodec/libx264.c > +++ b/libavcodec/libx264.c > @@ -178,8 +178,8 @@ static int encode_nals(AVCodecContext *ctx, AVPacket *pkt, > memcpy(p, x4->sei, x4->sei_size); > p += x4->sei_size; > size -= x4->sei_size; > - x4->sei_size = 0; > - av_freep(&x4->sei); > + /* Keep the value around in case of flush */ > + x4->sei_size = -x4->sei_size; > } > > /* x264 guarantees the payloads of the NALs > @@ -648,6 +648,24 @@ FF_ENABLE_DEPRECATION_WARNINGS > return 0; > } > > +static void X264_flush(AVCodecContext *avctx) > +{ > + X264Context *x4 = avctx->priv_data; > + x264_nal_t *nal; > + int nnal, ret; > + x264_picture_t pic_out = {0}; > + > + do { > + ret = x264_encoder_encode(x4->enc, &nal, &nnal, NULL, &pic_out); > + } while (ret > 0 && x264_encoder_delayed_frames(x4->enc)); > + > + for (int i = 0; i < x4->nb_reordered_opaque; i++) > + opaque_uninit(&x4->reordered_opaque[i]); > + > + if (x4->sei_size < 0) > + x4->sei_size = -x4->sei_size; > +} > + > static av_cold int X264_close(AVCodecContext *avctx) > { > X264Context *x4 = avctx->priv_data; > @@ -1335,12 +1353,14 @@ FFCodec ff_libx264_encoder = { > .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | > AV_CODEC_CAP_OTHER_THREADS | > AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | > + AV_CODEC_CAP_ENCODER_FLUSH | > AV_CODEC_CAP_ENCODER_RECON_FRAME, > .p.priv_class = &x264_class, > .p.wrapper_name = "libx264", > .priv_data_size = sizeof(X264Context), > .init = X264_init, > FF_CODEC_ENCODE_CB(X264_frame), > + .flush = X264_flush, > .close = X264_close, > .defaults = x264_defaults, > #if X264_BUILD < 153 Wasn't AV_CODEC_CAP_ENCODER_FLUSH supposed to be only implemented for hardware encoders where closing and reopening an encoder is costly? - Andreas _______________________________________________ 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".