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 89BFC46905 for ; Sat, 24 Jun 2023 18:52:28 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4DA1768C123; Sat, 24 Jun 2023 21:52:25 +0300 (EEST) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2092.outbound.protection.outlook.com [40.92.91.92]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBEB8680BC0 for ; Sat, 24 Jun 2023 21:52:18 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gn38WBTyYMXan5uSf/Rmcs7l0DZcUpqbW1oxcWDz7NSRZumi9Eho1vHAK+zqxo4SX21VFPPx+6jA17Ncsn3aAW2dsKFXrKfMZn7+5rdsHljqC6qQ6R5vKSUCrld0ez/yAXAjvV8sN4Ec/GAf1k96yCSv3pV2ZhR1ErlSWsSPkeSWZE7pQ4yMQi8VqIZppv8577A8R0of4yukNoTgjjxqTn8P8BXTiDmKmw3NBHhkyJL7MBQaeES3QfbV8h6nkorROPW8Iim3hhfi2LNeiqRnQGZen+sGYbpt0LU7pp3g0J3Rs/FdmjTcp639CxgBQ5VnZ8AU8wKxtCJ75veJVXhJAQ== 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=j3PSB1nvJ9z0lwB6W+tY/3BjEI82Ifzf5JNeElTyoA4=; b=QcOtc0OcaRN1H5P0XTMSeW6EODPD+zDh5WzSOAZmzrHGHlrSAC3nAXy29NlpjSle0nULk4NAXUTFijDgPEF09f4PqT3b1FyeqinYolw6GrA3TmmfMS3a+ojowfwI6M7bWaeVLIWjq5YeYD+M8t/7uG724168c9CpyeIIwSkuIPDUIcZ790LxUBkBUXy1C6ElrCcnK3Ko0/w0r7UI+OB5C8nyGg7AX0Rkol9yoO37l5IL0tLdcwKyr5PzGIPrw5dz+oxC8xogUgvxJ+aAcdDHT0sXmRv33AVSpYKMcx3cdUNRusD2F4Q0iZe+sT5qpF+UZtGSRZWu+SazUC/JgFBiXw== 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=j3PSB1nvJ9z0lwB6W+tY/3BjEI82Ifzf5JNeElTyoA4=; b=TiwYpQPyg//kREg3lBwFKCyDA7EQtYSuGiEP/5YlLpAEgkpfxTJw4AHDXw0DhjsTVVPB8sbsL7jMa0q0mJwjqTKHUixvYTjjkbiFt6Hs+kael4T+KrZwVsZ7Rkn88kmEM07FH+IOIFcB2b77+u7F5nqregnGUxc2gYcdZsMozuHQ/f5xXkqvPvsg+7XF5AqTQHFrDWeNfNQqxl3kjWLnldKSnpVpK8T9336u/w0ULbT1zKLXkybh/yoygcneYiope1mNhMytaCrdcXz1KprlDYcSlShLP78JVsSOfWjTgqV22lPX3TVl/6WRvAsdG9ioL4/vSaqcPm/0vSM/YXYcfA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0302.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27b::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.21; Sat, 24 Jun 2023 18:52:17 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::5ed5:2c98:b8f2:616d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::5ed5:2c98:b8f2:616d%7]) with mapi id 15.20.6521.026; Sat, 24 Jun 2023 18:52:16 +0000 Message-ID: Date: Sat, 24 Jun 2023 20:53:26 +0200 To: ffmpeg-devel@ffmpeg.org References: <20230620141608.31759-1-anton@khirnov.net> <20230620141608.31759-2-anton@khirnov.net> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20230620141608.31759-2-anton@khirnov.net> X-TMN: [1OWl6htwzy6hLcSnIy5udrtorCLFZH6H] X-ClientProxiedBy: FR3P281CA0203.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a5::11) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <9d9fae3c-8c8f-d312-346a-218eca895b1d@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0302:EE_ X-MS-Office365-Filtering-Correlation-Id: 848da7b5-d796-42b3-3b86-08db74e42178 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dc1dahttLFrY+PQVuDvelajkiSJPLyqdb4hOmbI6PD51LVfXgEEpJiDVQFO5qhvXDe1BF5/iVoLh7u/O0JYVR0O9Efyj4WqagvgbIz+MRj8XvNpmN4WV2aM+OGMFjGwo0TjpIqVYd4ANpcVp34OOZCchBciP2FLHJqDsQKQ0QPTHwTTRHwRt/xQqKORiuLO5yNX174GN1FhRPF2dC3mQ4SjvMfz2lkxAc2bvAb7euR+0JrNu5Xz6Ws3ooqv8TmGLktboQKbJvfz2YYVwawQugn/8q6uavocMtU2TEwVSLMcE+9hpzWiTzFdsvVvz3motH6UrF9UV0R7abUntfFXtrGne23tGF+Kh57X6whDVRWxAHBKnhznNctdFy34TwjbPzLREKAWBlDsdF2OIVsemC8HsNWiFOJd2agMSsmIQ+w9mJL9HAxdOrUOYHao3Eje2CHM12BHrWzzlBMblDCQ+bOvIezwFaAAOC5XwPMJPCFha35PCtSX/aObyzC1Qsexwgf7emz+XV1T9zSGrKoA5lVtXJxVnu6j7CDtG4x4X6WquVCTdzFKpM4984zFdC4VZ X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UkZHVUN3T0MzRFhveTQvUTY3QnpiRlJqc2VSdmNoTnlNaDQvWjMvSGpzZVdK?= =?utf-8?B?N0loTmwzcUt6cGFpQm5BQTFhQU84bHhMVm55cVR5U1J4cFNUenZNMythRFZ2?= =?utf-8?B?ajc2U2pBZVV6N0NCRWFtUDlJQ010WUFyZ1Q2aXFlZlM1SFB2RkVWcFVtaGxM?= =?utf-8?B?QUkxOU90LzgyNEdPbHdzRkI3RWErMnllZTQxVnY2ZE42bll0WEUzTE9LQk1s?= =?utf-8?B?ellNbXRONkVuQ1lsNmNLTDlPbnpuOXdkYTF4UEcrb25YeWx3UGRTSzNSUG9V?= =?utf-8?B?TURuaUJOUDV4QnRRSmJXbUxEUW9XVUowVU52WnhYZG5ZOWhCSzh3Yks3TWl4?= =?utf-8?B?SEhoOW1DVG4vNlNLWUZmd2puU1dCUnVEWi94T0FqSEpjZDUvL3pBOUp2SWla?= =?utf-8?B?MTArUFU4UlNMenVpcTY4N3NhMWE3UHhDYnZIN3lTeUFWbzl1UWUwTGFPeGty?= =?utf-8?B?cDJyOVJzQjVLdFRRTENZeFJMTkREbkxITEJpakJzcWxTM1hod0MrVGZTVG9i?= =?utf-8?B?dGlZTjY0Mllpc0pBK0QvS0owWWdBejltTDl3LzV4VlI0TjNkVGNIcmw1YmJv?= =?utf-8?B?Z3hVZ0hTTmRqT1NNYlVYNzhPMFgxZkxjdWtkbkxtZzlZRG5MTFRyWEZQa1hN?= =?utf-8?B?alZHSmcwSm5zai9iYXNnZ2JUcWUvbGtOalh5bEZPdWlBNEN0VlhoRThqeVpr?= =?utf-8?B?SHROL2Y3N3U5d2g5OWxVcnViOE1XaVhZSEFwaGdCaHd1WEg1MmEvSnJaeDIy?= =?utf-8?B?TmIzaHB6MHFoWTcvUmtIc2ZWQ0dKSy9sVlY2T1JBTUIwYzFsZGREZXVPd3RL?= =?utf-8?B?dHV6OWphN3hNOGpvN2Y5ajkxelhpY3Rwc25ZSWFrOFRHeG9iR0pHRm5ISlln?= =?utf-8?B?QTBkV1R6Z2RlRmFvTzBlL284VmxJWGQxQ3BGaHloNmVicGdnMFQzLzBta283?= =?utf-8?B?cTZqeFpXRis3bUtDdGlqcTRCSUhVYWNzRWgxRkRDcE0zQWlSenhjSmREZ1B6?= =?utf-8?B?UGI2YmVJUjV5Mm9VNDJJTGxWT0JkL3BRVzJDR05VZ0ZkS05LM0hKaDRrOHNB?= =?utf-8?B?R09HWTB2V0JQWVM5MHZGN1N1YjJRZG9uSE1ZSU5LYncveHdkby84TTQ2dytX?= =?utf-8?B?MlRtSHhncEFUUFQzVzF1cWNJY0ltQ2VWL21FamVRVVg2ejZnT3lzajArU3Vn?= =?utf-8?B?VTVEMUg1dnhzTUYzdGRKV1grblU0MUpJRnV4cGI3NGtEYWRQVEo1WENYWURD?= =?utf-8?B?ZkV3bkpualk1TWFKdkRrcEV0VkV2eTN0L21OR0xsUUZ1NWQzeHgwZkFyYW9t?= =?utf-8?B?Zlh3NGFyQllPVlhqTFZkSk01SThKTWoweExkRi9xdDNuay94MHd0N3NnRlc3?= =?utf-8?B?czE3a21aeXdNaDZ2M2l4a0hhckliNHpCQ3FjOS81Ym9aVm5PWG4wZ1F5US8r?= =?utf-8?B?Uk41UHh1clRxb3EyWW9TY05va2dPYWZvbEVXK0p1MW85L2piOG04NXVBcEhn?= =?utf-8?B?L2UxOUdMTTlyZTZ4ZHpIaWJyU2d0Y25TQUhtVDRmYzN3U0phdW4ySUs2bzl3?= =?utf-8?B?c2xNb3MwRXZ3NDA2L1FqMFRZQ3I4aXpBUWV6UTJGMEpEOEl3Y1MzYzM5SU90?= =?utf-8?B?dUt6cFZZd2ZtQ05IeHhKQzg2Q0c0L0RDV0JDMnZacmkxV050NXN4YUwxVXEw?= =?utf-8?Q?gCfZKa5JgFsh0DtxohgE?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 848da7b5-d796-42b3-3b86-08db74e42178 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Jun 2023 18:52:16.9332 (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: DU2P250MB0302 Subject: Re: [FFmpeg-devel] [PATCH 2/9] lavc/avcodec: split flushing into decode- and encode-specific functions 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: Anton Khirnov: > Will allow making some state private to encoding/decoding in the future. > --- > libavcodec/avcodec.c | 26 ++------------------------ > libavcodec/avcodec_internal.h | 3 +++ > libavcodec/decode.c | 15 +++++++++++++++ > libavcodec/encode.c | 18 ++++++++++++++++++ > 4 files changed, 38 insertions(+), 24 deletions(-) > > diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c > index 638cb55146..a5cb6035b6 100644 > --- a/libavcodec/avcodec.c > +++ b/libavcodec/avcodec.c > @@ -373,33 +373,11 @@ void avcodec_flush_buffers(AVCodecContext *avctx) > { > AVCodecInternal *avci = avctx->internal; > > - if (av_codec_is_encoder(avctx->codec)) { > - int caps = avctx->codec->capabilities; > - > - if (!(caps & AV_CODEC_CAP_ENCODER_FLUSH)) { > - // Only encoders that explicitly declare support for it can be > - // flushed. Otherwise, this is a no-op. > - av_log(avctx, AV_LOG_WARNING, "Ignoring attempt to flush encoder " > - "that doesn't support it\n"); > - return; This return makes flushing an encoder that does not support it a no-op; this will no longer be true after this patch. > - } > - if (avci->in_frame) > - av_frame_unref(avci->in_frame); > - if (avci->recon_frame) > - av_frame_unref(avci->recon_frame); > - } else { > - av_packet_unref(avci->last_pkt_props); > - av_packet_unref(avci->in_pkt); > - > - avctx->pts_correction_last_pts = > - avctx->pts_correction_last_dts = INT64_MIN; > - > - av_bsf_flush(avci->bsf); > - } > + av_codec_is_encoder(avctx->codec) ? > + ff_encode_flush_buffers(avctx) : ff_decode_flush_buffers(avctx); > > avci->draining = 0; > avci->draining_done = 0; > - avci->nb_draining_errors = 0; > av_frame_unref(avci->buffer_frame); > av_packet_unref(avci->buffer_pkt); > > diff --git a/libavcodec/avcodec_internal.h b/libavcodec/avcodec_internal.h > index be60a36644..6ffe575c3e 100644 > --- a/libavcodec/avcodec_internal.h > +++ b/libavcodec/avcodec_internal.h > @@ -50,4 +50,7 @@ int ff_encode_preinit(struct AVCodecContext *avctx); > */ > int ff_decode_preinit(struct AVCodecContext *avctx); > > +void ff_decode_flush_buffers(struct AVCodecContext *avctx); > +void ff_encode_flush_buffers(struct AVCodecContext *avctx); > + > #endif // AVCODEC_AVCODEC_INTERNAL_H > diff --git a/libavcodec/decode.c b/libavcodec/decode.c > index 8adb532616..7d000fec32 100644 > --- a/libavcodec/decode.c > +++ b/libavcodec/decode.c > @@ -1739,3 +1739,18 @@ AVBufferRef *ff_hwaccel_frame_priv_alloc(AVCodecContext *avctx, > > return ref; > } > + > +void ff_decode_flush_buffers(AVCodecContext *avctx) > +{ > + AVCodecInternal *avci = avctx->internal; > + > + av_packet_unref(avci->last_pkt_props); > + av_packet_unref(avci->in_pkt); > + > + avctx->pts_correction_last_pts = > + avctx->pts_correction_last_dts = INT64_MIN; > + > + av_bsf_flush(avci->bsf); > + > + avci->nb_draining_errors = 0; > +} > diff --git a/libavcodec/encode.c b/libavcodec/encode.c > index 3a016b14c1..3341a79c9b 100644 > --- a/libavcodec/encode.c > +++ b/libavcodec/encode.c > @@ -785,3 +785,21 @@ int ff_encode_receive_frame(AVCodecContext *avctx, AVFrame *frame) > av_frame_move_ref(frame, avci->recon_frame); > return 0; > } > + > +void ff_encode_flush_buffers(AVCodecContext *avctx) > +{ > + AVCodecInternal *avci = avctx->internal; > + int caps = avctx->codec->capabilities; > + > + if (!(caps & AV_CODEC_CAP_ENCODER_FLUSH)) { > + // Only encoders that explicitly declare support for it can be > + // flushed. Otherwise, this is a no-op. > + av_log(avctx, AV_LOG_WARNING, "Ignoring attempt to flush encoder " > + "that doesn't support it\n"); > + return; > + } > + if (avci->in_frame) > + av_frame_unref(avci->in_frame); > + if (avci->recon_frame) > + av_frame_unref(avci->recon_frame); > +} _______________________________________________ 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".