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 C8E864936A for ; Mon, 8 Apr 2024 20:15:34 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 18F0F68D390; Mon, 8 Apr 2024 23:15:06 +0300 (EEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01olkn2073.outbound.protection.outlook.com [40.92.66.73]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9F9D168D352 for ; Mon, 8 Apr 2024 23:15:01 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kfLXkJ+44//JapzjdE4YMWgIRIgj9NjYeHDdhC1WKqvyIQZ+/b90TyI4Eimw1bX4TV8dRQARQfcDaaw0aaYs8DaRUra7rlF7vhFmaTxFOQfnhFSvVZ5Fd5IEYeqJKqEq1g/vmQq9WMIKK02wXQMSCrX0Q4744hZmxRSiVFv2HBcnrXqjDm52DI/z5RTo9nHxk1DI9S0wD/I5CblU6VsW6in4hFADvgsOrtT8HnxPBHGTs6Eu7UofqhJmpyPCUKSASFUihc/93rRd5cyfL+jmuvAgzaOU7btNER/chYCubBhFzV5Zl1/QBc6nhEERIqX6gtFKFFITxyKGOxA2U41rmg== 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=lFLIaQBuwNkCp4YDja6ZV1H/pkryIVEN0qBPCQw4C3Q=; b=gMcLz3A9tN7SPQtitXIM0wFMcuCvjGPPJIgxiyKNzouVwIGWVJG17BP4UlvjWhyXqQKV0xM7YeIpX/fVo/9ZrPwyB87w8mmaCeSYSF7kVlshi9CdOVyexyzYG6f/jkW1XG7A5zDW6RanxYqhp+hrV0s7vk0K8Qb63NzTHVwr929r42wnMHd1MQ8mS/0MK5Cyh0MgXeWgzlzDiZ/l8YwptKY31UOj+GDrddVEEuq1kZSaUUk9mzr7zexKzisdAvr3VMrLKSAm8GvVGatw/LtLDOJXa59a9afIMQXWWcjVj9PBE3RmOC5K4omar+nIM5ubwfvIhRSaGt2W7PrpUWm7Sg== 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=lFLIaQBuwNkCp4YDja6ZV1H/pkryIVEN0qBPCQw4C3Q=; b=bki/nokGI+U2fTMkcLKW34dljv2v639JKFXjcNDuiLPJ1VwG/xaCwKGzs5HvyPFR/50wWjX8p8XpRKDMtuPMlKjsjXwEfkInXaZaRG1vgbOI3e3ZAycWmLM84LoXO3/6tjUlsHBc1LEFuSXCED4MTsXAiVmIl4I9PW66t4+EPSmA2eq/HTGbwS23ymLvL1QyyTqc+ygPKDZLWd/Vdgwg4sJuVQj6Vnee82iVdgRyYCKcK+WwBNN4Rr9a1IgodZY69KbkNXy4x+oouN4JKL6zOBxgVzrl3v7diveSLsaJiPlF2Frm7Hu28/dbE9lJ7CEzCRMnsX2dwRXM7qwOye6M4A== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by PAXP250MB0494.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:28d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Mon, 8 Apr 2024 20:15:00 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::4a3b:cf76:cddc:c68d%4]) with mapi id 15.20.7409.042; Mon, 8 Apr 2024 20:15:00 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Apr 2024 22:13:46 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [sxkWN7mgGjniIjSk0Ehe2Tod3bvfRTBBf2P+lGy5R5s=] X-ClientProxiedBy: ZR0P278CA0124.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::21) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240408201405.2136840-7-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|PAXP250MB0494:EE_ X-MS-Office365-Filtering-Correlation-Id: dbb194c5-1c26-4908-fb15-08dc5808917a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Am0WAy1WNQe56y7FWJMNP1jNIPB/4xKJl+r/ISmLSaCrwIAJNy6GJihga9OoN7olA3Kw0kRB49sxZzGLntGyTBSsdOyi+Ns/mIB4U5mwXb+X8ChUUWuPhPLKX001hcQJ2SC60pnW0C7XiKDtXCHvirTKr7eBvMPEfJNyn4uVyfHKTssCZ+OtWvRn57lvzo+QucxgCJkG0vQIJavJEfVODNKTyIVWGLOMaoplrwvpp0LmRBC6loS23IZdV8I5StgO5rWKTvqoqUaKnCdGK7cAPGYQfylYWYq0/OwX0HCrJVkvozZXzmptkneTsiTNYifeLWOkhXDHa05tIbdMSnWhkiRPydoo8jYvEgC67rSepOkBxmI+6yv0/NsqgwLwMxOhwnHrZDu9YV27psIjueMrAj2XkZW2394xS+OGWVxS80Sitsl7ieglPYjpi5NEgJT1uXUfrkMrvfag6767cvDQaQlf7sSIDDw1lSwivb8P+SGaAkSjsB69nj7+h9jXSx6fjm0G13Rus4VbeZafHLKYNHFl8tEJAeM4yiBIqh0FNQp47oBmEYsWDVOJ9Tk0NTR9+yuKLPIDz4uewiInuM+qwTCHGp/Bx6nbvv6GbrNUVQCc8fL2Zf8Wn3SULyx/9hkC X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?H1uwXd8rk1llbB4ohax3gB0LYmvNTA0g8FscS9rrVfLiiQLgZInVSrGZHRc3?= =?us-ascii?Q?ESLo2CMbQn0GqGQlupsbO6n6oKV9KnBKUiEHBe3gNhzifCtIgC3zKbogR8gS?= =?us-ascii?Q?4bkJAO0tnS95sjf9gIhh6/jAIaEn27bmhDswiToJDKotMHBsQECUiLkoh0Jg?= =?us-ascii?Q?QG2deqWD2HZtx/dWnqccbD4p+nVHbbEBUoD1GKiAwgXe99nN1i8RZ9JiGJim?= =?us-ascii?Q?PtneS9l7M4jfPPPJcxUEIZXVoohBPaeQY/HByx1XEMvtw9EyB7ZL5i95ToNU?= =?us-ascii?Q?m+yvMVAY8lBDhWl6ZC3nCNQrkQ22/fNelA4+N9qupz9IRKeU8VKBWOqMaBvO?= =?us-ascii?Q?S05KsYzUZeQBfwWJ3QPrrxoeU2mNru11oVo7ilb/jtSn4pEUrFkzhiqc12oV?= =?us-ascii?Q?gPG+kYlgsM3hazeKB97b4291PN7dD4lWmAq1V32rMtefGzm/XQgWkycCKPsP?= =?us-ascii?Q?R1NzksWuseDmuzI9nxpbP8t5YBDtFOECLUfxvEptzoM9LxM1gnhAZ+F/0frP?= =?us-ascii?Q?uK6WygCJbUOKhtOvfHv2wh69IrIc6jx18TjKbbkyxPD9DUqLkKff211UBiML?= =?us-ascii?Q?KQUnPFW+UZf0hbNG4QtWrVIfbZAvXBFvKFOLKu23hxULCjwMd37++tMnIgU7?= =?us-ascii?Q?9yhPjlP2hogjduZ60N2Ob25ZrO1f72BMNoa5f2Ayr2arKDJsK1KY45OXV23z?= =?us-ascii?Q?RlK9itUrtThl841RsiRVRKLaKd3K14XGLjPcwOGGMxCv42CBso/JG9jRPIvW?= =?us-ascii?Q?8Qj4ffNHLP51wMpQzYz1S/z4YiyKrEZZoJJV6pFaIrrPlYVPFPp0YGJKycJe?= =?us-ascii?Q?f6ezIPj7+g6PSyO7VRCB9Je/UYzvzoAVZUUpGRwss+XDxQsY+OQqKeFjhGb0?= =?us-ascii?Q?dNCn6L15AwOWfuAf2B/aohxyrJvfwBs4M4a67tFcKfIV7o150t7wA2rlCwQm?= =?us-ascii?Q?QGFEbo8OJ5JyjJgto6GJGG6XeiAZMJ0NyH8hDAQ7CMNEYLHMYJe0jwRooVWl?= =?us-ascii?Q?1XY+i0wxFJx5K6MJQnA27yuS7m7Bodv9Hu/4xXhrTkpjP3ZHPKNLF7wTjtTV?= =?us-ascii?Q?hpE8ReC5rtUz2BWBi0+t3pIxj8AELM45lt8NLwMXElTp6bpWGzngO3NcPdU/?= =?us-ascii?Q?pudksZpwEKuaRB8zf9c8yb7Mll5thDvlDLVT/zZ57bopPF1d5XRYN9KxVwA5?= =?us-ascii?Q?P6dwpaDgCqaluh0F2wlJa6i2/TXQbjdKw3y2Bd+bYqiwUfwmPGQsLszWfwm8?= =?us-ascii?Q?o9IFJrLdnbawINn4Nu14DVm1kjh1Oi8ZKWQzjzD/uw=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: dbb194c5-1c26-4908-fb15-08dc5808917a X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2024 20:15:00.5379 (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: PAXP250MB0494 Subject: [FFmpeg-devel] [PATCH v2 08/27] avcodec/vp9: Simplify replacing VP9Frame 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 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: ff_thread_progress_replace() can handle a blank ProgressFrame as src (in which case it simply unreferences dst), but not a NULL one. So add a blank frame to be used as source for this case, so that we can use the replace functions to simplify vp9_frame_replace(). Signed-off-by: Andreas Rheinhardt --- libavcodec/vp9.c | 16 +++++----------- libavcodec/vp9shared.h | 3 ++- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index bdfa543188..443eb74c3c 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -147,11 +147,11 @@ fail: return ret; } -static void vp9_frame_ref(VP9Frame *dst, const VP9Frame *src) +static void vp9_frame_replace(VP9Frame *dst, const VP9Frame *src) { - ff_progress_frame_ref(&dst->tf, &src->tf); + ff_progress_frame_replace(&dst->tf, &src->tf); - dst->extradata = ff_refstruct_ref(src->extradata); + ff_refstruct_replace(&dst->extradata, src->extradata); dst->segmentation_map = src->segmentation_map; dst->mv = src->mv; @@ -161,13 +161,6 @@ static void vp9_frame_ref(VP9Frame *dst, const VP9Frame *src) src->hwaccel_picture_private); } -static void vp9_frame_replace(VP9Frame *dst, const VP9Frame *src) -{ - vp9_frame_unref(dst); - if (src && src->tf.f) - vp9_frame_ref(dst, src); -} - static int update_size(AVCodecContext *avctx, int w, int h) { #define HWACCEL_MAX (CONFIG_VP9_DXVA2_HWACCEL + \ @@ -1584,7 +1577,8 @@ static int vp9_decode_frame(AVCodecContext *avctx, AVFrame *frame, data += ret; size -= ret; - src = !s->s.h.keyframe && !s->s.h.intraonly && !s->s.h.errorres ? &s->s.frames[CUR_FRAME] : NULL; + src = !s->s.h.keyframe && !s->s.h.intraonly && !s->s.h.errorres ? + &s->s.frames[CUR_FRAME] : &s->s.frames[BLANK_FRAME]; if (!retain_segmap_ref || s->s.h.keyframe || s->s.h.intraonly) vp9_frame_replace(&s->s.frames[REF_FRAME_SEGMAP], src); vp9_frame_replace(&s->s.frames[REF_FRAME_MVPAIR], src); diff --git a/libavcodec/vp9shared.h b/libavcodec/vp9shared.h index 805668416f..8a450c26a6 100644 --- a/libavcodec/vp9shared.h +++ b/libavcodec/vp9shared.h @@ -168,7 +168,8 @@ typedef struct VP9SharedContext { #define CUR_FRAME 0 #define REF_FRAME_MVPAIR 1 #define REF_FRAME_SEGMAP 2 - VP9Frame frames[3]; +#define BLANK_FRAME 3 + VP9Frame frames[4]; } VP9SharedContext; #endif /* AVCODEC_VP9SHARED_H */ -- 2.40.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".