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 66CAC42D24 for ; Tue, 6 Sep 2022 01:34:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6EE3E68BA11; Tue, 6 Sep 2022 04:34:29 +0300 (EEST) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-oln040092064066.outbound.protection.outlook.com [40.92.64.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2281868B96F for ; Tue, 6 Sep 2022 04:34:23 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Pop/QUfOxqMB3ksKEz+M3TweryU+pQtGjnFn8pIntJk4qs0ok97peq3dxTsLxfJnrplYr8IzPySdAPlA3j37ZkmYMpCNzlOMCml5aFwoTMgFiUPmmzhd3jULiSjN0iYVBxOUujQCaQLNJn5HRk2O86bHc7i/5kXNXR+VvjNSBfAfHuI34qjRz5R/Vmqo7qNe2whPXvDUDkuv8rJSCxpfKZD8EfQZHCxB7xpXXPCTZFTyomiyGAfmyh1yRC1zBY6fD7t+amGAvr+DjMMFy0u4fDUKtdPcScfkTzxwb1qPIu+i21malkeQdur8o4og6lOTvYH/x968OMKp3MhHmeOkbQ== 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=fjahWC1Xzyz2Kmm2pVkHkxR0Vei6mUnR72szaiA2xzU=; b=K5/pHCXHtoxI85RxVlGxwik4Dq1wK9jX73lxEpLfFPUN62d8Ir4S9hQ7cK4duTPl1nPNx8xCHjMXUt79nKVNpA4xYZEiTDw2G9vOJ8g4d3hFrlJgN2aM3OBt+T0ROFfpZupkcP07ihtWsC8+8pYQeqzmrUjjBkHyW/3ejwsFIa+Q9dEfeoNPSn12gYP+y8Z4iG2crUoVThJcLHweWry530m0eg6+DpiC0SOYMSCbZ+wObNuTdLj0wn+tlQCIW7B/f8ZsSkpmwbWp6Y6rKOmcFZ6R+Ezq0IEGmrPxzXgt86zQI+kbusKDKFlJtSU7e77Hijkc1+fJJQvXb4I3UoHiNw== 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=fjahWC1Xzyz2Kmm2pVkHkxR0Vei6mUnR72szaiA2xzU=; b=PTMrLRHgO8dqFqGLXQAeij2je8J2t4D9V0EoRUbXzF5HFVoztSBvy9BGPVkt7y//t5e3RVfqdkxRpXaIKg9u5tLnQt+5wAIbWdJtoPq2px13f+BeTxh3I9+xUbnQekTlwvClax2ULMlDrBdz3T7gOsnD5vvgekpb3sngrYgJOImqvfaTKTuCwY4e0VPE4PAg8ZqjzgPFiZ6UU0bVvEyzoJQoZebGd24rUhY0iEdmBqmW1Dkf+7AL5U+/eta2p1bTbm/jOaY2nnkJ5PCf9AhUSYER0WhTycQvpjNgFS4kTtz6dNGjS+hWOVux1TgvypmRGHfquvQmylqzVdQpklt1Fg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0916.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3ec::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.12; Tue, 6 Sep 2022 01:34:21 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::c3af:c609:301f:beab]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::c3af:c609:301f:beab%7]) with mapi id 15.20.5588.018; Tue, 6 Sep 2022 01:34:21 +0000 Message-ID: Date: Tue, 6 Sep 2022 03:34:22 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [vJbBKAXkDzUifUvc2alBP0OELweX0wJ6S5U5hhg7KoQ=] X-ClientProxiedBy: ZR2P278CA0030.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:46::20) 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-Office365-Filtering-Correlation-Id: 9dee363e-6513-4762-1597-08da8fa7ec5c X-MS-TrafficTypeDiagnostic: DU0P250MB0916:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: inT9SL/9R3e8r6nr6vv1bRg5U3+2YDgqxrCmvq/+tpeDEpStuUnlSoo01towbyPB8tHVcs995IUiOSzibABYQEj/D5smuJLh5zW7RPeq3VJpO6hpaRmlV7yLSLU6ztmJ0D1LIJdAfxPK25cGuQ9gJ0sfnoUr8ASIwVqwGANpJlptItzPVeJAvq8m7ibdgwEjf8RzIpZdACQXaDQs6RjytM3MTr2YhvVmIkq01sLfFV2FRkxtgUTIHJNgUAoibmdlrRKfYywmqrZmmroqr7Mz+dRrCL/JkDb4Jf0nETwAEKGSznJZzXcGJmDpeyEMoYbJqoWXW9E/LZR4zfAicVd1XB4+p5aK2Ycd8z6VZ6i7AfBfmManqRpQ2D0/1uwjX0yOPSBkXapDzeyGZzTeQaIArZm/ProOrcybDxtxFlyx5zjehJMoUrOVTAcGatJSIT0vAwgqiGwP0N3ioQBwK8Q+Y4L7gmAF4t8IpZiOG9WIZGyV2vUjGghrGXA76UnQ2c4Yk5DZpMGhExRIuBac01iekVA8zKofbED3mU+8ny9AYJWkVHFR9NLdGxHiZMCHegKTpCFjZdxXJv2qjjD//dHurLRoHhBYtGPPgeRveZP0zoB41ijCYryGxUSwogFYRNtULwCdTG+tpPFfDioMn4NFdv0TDEwpLrDZrR0UbwLlan8dsqFWWhqIzzd5Yoiz9CuA X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?R2p5Wk1YOVlyT3pjVTVsNGRMYUVmTE91SlZlOUhTWEF1cU5vZ2U0RWRGbkRZ?= =?utf-8?B?bFBwd1g3VC9mNUNoM2NrN2lNN1dHdlVkbE5VeUNpWlV2cktvME9XR25NUFpx?= =?utf-8?B?SzNCU24vVmdxb2pxWnZ3dUthWkZYNVhrWEgvR1ZrYmdzQjRLN1p5R0tadUFV?= =?utf-8?B?M3A5YURFQ2JvdnJ0c1NrZHlvYjJRaGNHMUY3WVBkYWcvd0pjVFY1SXFkbnZj?= =?utf-8?B?bGozckZRWDkzY2xvVEtYSXhDcVlBRGIwdktqSEptOHhMYU8rQzNablRtekFz?= =?utf-8?B?QlJ1VTFQY2VBOENaU3FWK1BPMUFlZnk3dGc1b0c2RVBoZFlUVEdFNGNNMi9q?= =?utf-8?B?dTk5NFBLK0RRNXBRVTFJT1NGcG9DbmRLN1RPeTF2THhHMzNnNUkwRGVYdjhQ?= =?utf-8?B?OXFNWFkxeGVoaFVIOVNEcE5NMUJCQnlscDlhV2xyNHVyNklTMVhxTDNOQi9D?= =?utf-8?B?cklMaVJWVHdlclVmangyMEhwTjdyWUxRUWRscjFSSkMxY2FMRmdETmprejJt?= =?utf-8?B?OG10RzhyTFRTWEwxa08xNVlVa3ppbGtZa0prZkg5ZmVYWmdLa21HR2JaMnRn?= =?utf-8?B?Umg5WXZUMDVZTXdrOE1tSm1vVG0zV016em8zRnRFVlRvQzg4YjNjelVpUGhO?= =?utf-8?B?aEd5YzdmSDVDUTR4YXlJWnE5K3dLNGVKZXJCYVdxbDNvWjFlNjFORjcwanBN?= =?utf-8?B?cUppQmZxNkxuVmRzMGlNbjNkVElpOTV1Uk9XQlNvTi9OTDZOVDRzTktpSDcz?= =?utf-8?B?VG40eTlrdXJYSVJYVCtEZ0Z6UnVmc2Y4Ym8yaWFJeXhIZ0I3RWpFbFNheUZ6?= =?utf-8?B?ZSt3cEJWa0xWMEUyVjFSZDZ3Q01penVFeUVVU25Ka1ZrYm8xRHYzWGE0aldV?= =?utf-8?B?dlcyT1B1S1ByVEo0ZU96THZ5YmNGanoyTTNocm1na0RPMTBISEUwb09Bb2cv?= =?utf-8?B?RFpFYUNxeFFHbWNnWnZRQlV5ZTR6L0hLTGZxeGs3TmtUOFJnT2FxKzFhRG9E?= =?utf-8?B?dERILzVreWxOS1RmWWZqVWVta1VjbjVrczhwcDZrN2JyV3FhUUtPSEVwSGVG?= =?utf-8?B?WCt5Rnpnb2lmbXZsVVUvS093dXh5enJwMVZROWRXUHh6eWZPNWtXNjUxdVhQ?= =?utf-8?B?WVZOLzljOENCdmwzdk9OWlJZL3dxMzNBTTBYSEJLemVUTVVmS1dCUkVPc2Fi?= =?utf-8?B?MlEwaFBvWmZJb3BzRUVQRzh4OG9lY0xvUzl1eitNbGtqZUM2Ry82R0x1SUtH?= =?utf-8?B?SW9LUzF3ZitNa2EwODk4WklMd1EyV3UxSW9yTjBOcjd3SlBzeENkV2dYRXBk?= =?utf-8?B?ZEoxaThSdGVtZW5TaWcrVEdKeGZzVmNvV00vdlNQc3lTUzlFd3c0dVhZV3dK?= =?utf-8?B?RUJoSUNHbVFORFlLVWxNNE9SeHY3Vm1IdG9vVCtmU1dEZm5DOFJJZllObTBx?= =?utf-8?B?VXRmMnYwV1VsUnhHN1NjMy9IVld1OXhIZUpLak1CdENoM00wU2NydHZwT0NO?= =?utf-8?B?RXZWUzZBbTRqZ3c4U0czSkU3SjRlSXdHeGRhU2NVZ0RQVEtoZThicG9hdkZ4?= =?utf-8?B?enpYTHVnK1luUzVpdVZNQXd5MDdUTmJTaWFpbmRGaU5EQVhwRUNuaUFJa2lz?= =?utf-8?B?MGpOV2dqNENWSEJxMTF1SzZmWWhaUXQyTjdGMDArSFEzQm81Q0hHWm1XNnpS?= =?utf-8?B?UWRURW9NN1ZQYUg5YVczQ1hSQmFVSzc1MjZaU0h0WEVKWjNRTHVXY3FHOHZE?= =?utf-8?Q?cEAdZYWF1Cz5i+KiYLYZxx+K9j5PirKLGN8kNtx?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9dee363e-6513-4762-1597-08da8fa7ec5c X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2022 01:34:21.5989 (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: DU0P250MB0916 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/ffv1: Only allocate ThreadFrames for the decoder 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: Andreas Rheinhardt: > The FFV1 decoder only uses the last frame's data to conceal > errors. The encoder does not have this problem and therefore > only uses the current frame and none of the ThreadFrames. > So only allocate them for the decoder. > > Signed-off-by: Andreas Rheinhardt > --- > libavcodec/ffv1.c | 13 ------------- > libavcodec/ffv1dec.c | 23 ++++++++++++++++++++++- > 2 files changed, 22 insertions(+), 14 deletions(-) > > diff --git a/libavcodec/ffv1.c b/libavcodec/ffv1.c > index c8781cdaaa..b6204740ed 100644 > --- a/libavcodec/ffv1.c > +++ b/libavcodec/ffv1.c > @@ -43,11 +43,6 @@ av_cold int ff_ffv1_common_init(AVCodecContext *avctx) > s->avctx = avctx; > s->flags = avctx->flags; > > - s->picture.f = av_frame_alloc(); > - s->last_picture.f = av_frame_alloc(); > - if (!s->picture.f || !s->last_picture.f) > - return AVERROR(ENOMEM); > - > s->width = avctx->width; > s->height = avctx->height; > > @@ -198,14 +193,6 @@ av_cold int ff_ffv1_close(AVCodecContext *avctx) > FFV1Context *s = avctx->priv_data; > int i, j; > > - if (s->picture.f) > - ff_thread_release_ext_buffer(avctx, &s->picture); > - av_frame_free(&s->picture.f); > - > - if (s->last_picture.f) > - ff_thread_release_ext_buffer(avctx, &s->last_picture); > - av_frame_free(&s->last_picture.f); > - > for (j = 0; j < s->max_slice_count; j++) { > FFV1Context *fs = s->slice_context[j]; > for (i = 0; i < s->plane_count; i++) { > diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c > index 794c58cc40..d4bc60a7da 100644 > --- a/libavcodec/ffv1dec.c > +++ b/libavcodec/ffv1dec.c > @@ -823,6 +823,11 @@ static av_cold int decode_init(AVCodecContext *avctx) > if ((ret = ff_ffv1_common_init(avctx)) < 0) > return ret; > > + f->picture.f = av_frame_alloc(); > + f->last_picture.f = av_frame_alloc(); > + if (!f->picture.f || !f->last_picture.f) > + return AVERROR(ENOMEM); > + > if (avctx->extradata_size > 0 && (ret = read_extra_header(f)) < 0) > return ret; > > @@ -1068,6 +1073,22 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src) > } > #endif > > +static av_cold int ffv1_decode_close(AVCodecContext *avctx) > +{ > + FFV1Context *const s = avctx->priv_data; > + > + if (s->picture.f) { > + ff_thread_release_ext_buffer(avctx, &s->picture); > + av_frame_free(&s->picture.f); > + } > + > + if (s->last_picture.f) { > + ff_thread_release_ext_buffer(avctx, &s->last_picture); > + av_frame_free(&s->last_picture.f); > + } > + return ff_ffv1_close(avctx); > +} > + > const FFCodec ff_ffv1_decoder = { > .p.name = "ffv1", > CODEC_LONG_NAME("FFmpeg video codec #1"), > @@ -1075,7 +1096,7 @@ const FFCodec ff_ffv1_decoder = { > .p.id = AV_CODEC_ID_FFV1, > .priv_data_size = sizeof(FFV1Context), > .init = decode_init, > - .close = ff_ffv1_close, > + .close = ffv1_decode_close, > FF_CODEC_DECODE_CB(decode_frame), > UPDATE_THREAD_CONTEXT(update_thread_context), > .p.capabilities = AV_CODEC_CAP_DR1 /*| AV_CODEC_CAP_DRAW_HORIZ_BAND*/ | Will apply this tomorrow unless there are objections. - 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".