From patchwork Sat Apr 24 11:14:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27251 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:49c5:0:0:0:0:0 with SMTP id w188csp2035370yba; Sat, 24 Apr 2021 04:16:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzRWhdysqIHZoTHz+Phnsc19TaP3K10VDKz+0oMlgrCj2c2FdNNcOcryEJHWny64s2px3Lq X-Received: by 2002:a17:906:6ce:: with SMTP id v14mr8535605ejb.296.1619263016946; Sat, 24 Apr 2021 04:16:56 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ca21si7781100ejb.227.2021.04.24.04.16.56; Sat, 24 Apr 2021 04:16:56 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=MVgi5LVv; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 589F368A107; Sat, 24 Apr 2021 14:15:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074076.outbound.protection.outlook.com [40.92.74.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 72C3B68A044 for ; Sat, 24 Apr 2021 14:15:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CDWGS3Aj7GrRJS8ZJ1gqe1ffo2VSeH6qPFgex5uPx1PBVrkETSVzSqy3tWZPyJUrqzdo4cruUgN0sgNRSvJ9dLmrVWKaO1PfLE8Fql1K2J1OayvbGkQRsdDjkgFOpf+b/FaVLZ1ApVqgDiVHInoyT2A31CqyxpuhR0yFz3DlIL7fO8YaqUZOWGv8xlbVeqnRcdwOWkv/XbCw2hKcLcemHTSM2AhGHM970gToCDwDq0/48qHZZsU6XkthTiUKb+V0C5zDetzaAnfRmdq+ZUD3C/L8oZh+ALGRn/sapZ18UHoK4Yq1S1SySlxThKMBgY8laCkWaL0Q0XIrUOrIovQQ/g== 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-SenderADCheck; bh=k6hskTjc9/aCBLV5tEf/ydY8t9WsOidAKe3z6j1eRk0=; b=ivDWTbv8eJdGMR3ZLN2n67ZLClNh2xg1oZGY/oVViNfkxmZaQRI0hlghXHB9q+ZPmVpOKZCNY1eWxQrnY998B0H8GOIrp4aQjKMhg83/dLueLAavvwcCdkr1n702bnnv1TYS+t2bqR4zROlB3VQRuAXMd6J9kDaHpkMF4f2Nt+bVuiXazg1gWRczRBySKNjMZ6gEXg62hnPnPaY8PIYc7ieGTc4VrAfd6D1u/zTpt7f2jB5VAjT1DlMql3lfykHZaqYfW3MoTyUrY5X4e8tT7DWr08uMUBWDs+vUYpI/4Go27udZLOLZ6Fo/djYH9q7TZBCql+Q3I+MdZ6ntNgEl5w== 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=k6hskTjc9/aCBLV5tEf/ydY8t9WsOidAKe3z6j1eRk0=; b=MVgi5LVv5aMm4aFW9pbgTNH5yEBwyuudhj+aOJebaaOugpHQzW+WdOSWexC2KIVQKK+o3b0+LNUWvQmVKD+cQA5nOv/f3HAmkLGfNC9J4WvBCUn4xruW4QE+QNzEZvzwA+xWNh/v6814PGkB3gG56WrvB/KCUdYLcY/loXOnOLC9ddM6765ITjku1dMTJt+4ilVXRZ1fQKI7pUiEwX6+u3ahO85FS+mSbrubcxwuvIbT5JBqbgc/oXTqIOHmx9onTGqMisxSF7Ty1++DnRENG8KVyGvfstR7rpOPiEBsuf2afFczXj9QMLK2i4o+Vf5DhmrMfikDLI0gj6wxdFk/9w== Received: from HE1EUR04FT042.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0d::4c) by HE1EUR04HT022.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0d::180) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Sat, 24 Apr 2021 11:15:33 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:7e0d::46) by HE1EUR04FT042.mail.protection.outlook.com (2a01:111:e400:7e0d::159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Sat, 24 Apr 2021 11:15:33 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:78CCA96220F8B76F87362529114DB11E059E993B71612ED86C9D55B77CF090D3; UpperCasedChecksum:05C3F270BB3E379506FD27E136667F08B1FD99439439F2EBA2563A3D502103A9; SizeAsReceived:7586; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::45bb:c44f:2b75:23b7]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::45bb:c44f:2b75:23b7%5]) with mapi id 15.20.4065.025; Sat, 24 Apr 2021 11:15:33 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 24 Apr 2021 13:14:39 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [5DGc6OjQyu8p4g4SBakY8o1TnxxfYn5e] X-ClientProxiedBy: ZR0P278CA0160.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::18) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210424111446.30338-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.193.248.86) by ZR0P278CA0160.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Sat, 24 Apr 2021 11:15:33 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 2171fdf0-5f9d-44cd-f025-08d907124743 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiSHACczraePvIduOTLAdlimZzRrR++AVjywlcTCPiOcYczs/r4tTJg3H69wLkPeRqVTLX2x+jC4ySYq2JPPh5r3Kur38KNvYjWgKJdZWHAZ6Nd/W2gIVrVWI5NfecznHyud6ovV9mIgGo8stQ9kDCn4Paq8jHG6BzQZ+DYUWVcrRJAc2gHaDI8UQStMdVFZO6aoZ7j5uXhdYu/o1PuGmuIxPFnSwF+rl9AxzpR/hy4jVGGgCP1XI4PRZRAbG1/X8pcgr9wEq/ILaSGmklJ52tWah4Sc/NOq+1xjkceIFctVI5FladhtEGG9y0Fp3J7OvUgRINrO8WXt3txzO+uDN5M9Bj9awxVzBbO4GzxUtHdJL54QkYUCyNDUmlnyy4/TomLn516zJaBtWamSs9ybCJHkNf84VeTXWVsfOXQ7A9Qq21H7R4VT/2DZBJnNi8ROQkadlJmL4TargtxBrylBMOq877Tym4h1wc+pX0c8yKKAhsHhCGokygVgAga0/IJOi6NmpP1cZyNBvk6Ehv1czHO9//o+UfUA2b06fmsI/20hg4hnasXMQlQQXuPG9dcQJTL/yPo2d4hA4CfOq08NewGEgpf/TbiARTw+bJdDhifUdX/Gqw8LEyVEsqshwoHgRm91JvThVq0iCT5aItWh6xaSvMCCNlnF9jNpooFkqrJuOzPVTo+UtoVWz4W9z2wu5S3apTRzJZaQ/BtJohOdw3OBu/2RazrAEza2F9OC43CTu1GXnANSir+PDk8B4Wr52Yk= X-MS-TrafficTypeDiagnostic: HE1EUR04HT022: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lEn+2827aHSBCJxaN6hXvjPWN8eXoOuvk7y0anOXq75mnVttdj1YTcC2ynFw15PI/srztzfJMDg3YKNnCW6C2uTBojpi0+NL/pbd0u1bMVbHMiRRyyQC+p37Nx1ICa/f84ujXVeWcWi7OtC3apDxSI8lqHPrOSNY6kXAieMQGhlq9GL35WdjOrJAnozsvnn6MxYtJEca550Xw/9hZ9aLusf6Rpr43YN00yLmyWUJsGlip2jzEIjooTCyU3a/nHccNfmpvAosR3ptHwMzqDuQ5FGDV2mz3WjVZPEnbgJ57H5bRLazE+8UP6ls1Vpo2CrMuakidH6GFTO7T66ACTJcbNwr14GzWV1rkg7L3n60ueJqO+BdGD1O7WuwaUlvInivsLLfgTf9i1fVhgeSovqzEQ== X-MS-Exchange-AntiSpam-MessageData: pKOkUrEF6jN0U2ad/ut9lmaJV+i8kMOJ1pOSFC4R29/q+n3p/ILO5TFwSz+taVW7u4p5ahDCZeD46z5mdzAgBCiPVHfqiiA1g2FoIAFGUFzdaJfkRPp+RWg220JXkE2i9WLiGolvrK5q6eAyWCjnOA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2171fdf0-5f9d-44cd-f025-08d907124743 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2021 11:15:33.8125 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: HE1EUR04FT042.eop-eur04.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1EUR04HT022 Subject: [FFmpeg-devel] [PATCH 07/14] avcodec/ffv1dec: Don't copy fields unnecessarily 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: /LjpWgPyCM6z Content-Length: 3548 Copy slice-only fields only for the slicecontexts and not for the main contexts in update_thread_context(). The converse is true for e.g. key_frame_ok which is only used with the main context; when not doing frame-threaded decoding it is actually only ever set for the main context, so not setting it for the slice contexts when doing frame threading is more consistent. Signed-off-by: Andreas Rheinhardt --- I wonder whether one should use different structures for the main context and the slice contexts. libavcodec/ffv1dec.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c index ef908a24b7..45bfe21be5 100644 --- a/libavcodec/ffv1dec.c +++ b/libavcodec/ffv1dec.c @@ -993,8 +993,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac return buf_size; } -static void copy_fields(FFV1Context *fsdst, const FFV1Context *fssrc, - const FFV1Context *fsrc) +static void copy_fields(FFV1Context *fsdst, const FFV1Context *fsrc) { fsdst->version = fsrc->version; fsdst->micro_version = fsrc->micro_version; @@ -1007,18 +1006,8 @@ static void copy_fields(FFV1Context *fsdst, const FFV1Context *fssrc, fsdst->colorspace = fsrc->colorspace; fsdst->ec = fsrc->ec; - fsdst->intra = fsrc->intra; - fsdst->slice_damaged = fssrc->slice_damaged; - fsdst->key_frame_ok = fsrc->key_frame_ok; fsdst->packed_at_lsb = fsrc->packed_at_lsb; - fsdst->slice_count = fsrc->slice_count; - if (fsrc->version<3){ - fsdst->slice_x = fssrc->slice_x; - fsdst->slice_y = fssrc->slice_y; - fsdst->slice_width = fssrc->slice_width; - fsdst->slice_height = fssrc->slice_height; - } } #if HAVE_THREADS @@ -1031,8 +1020,11 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src) if (dst == src) return 0; - copy_fields(fdst, fsrc, fsrc); + copy_fields(fdst, fsrc); fdst->use32bit = fsrc->use32bit; + fdst->intra = fsrc->intra; + fdst->key_frame_ok = fsrc->key_frame_ok; + fdst->slice_count = fsrc->slice_count; memcpy(fdst->state_transition, fsrc->state_transition, sizeof(fdst->state_transition)); memcpy(fdst->quant_table, fsrc->quant_table, sizeof(fsrc->quant_table)); @@ -1040,7 +1032,14 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src) for (i = 0; i < fdst->num_h_slices * fdst->num_v_slices; i++) { FFV1Context *fssrc = fsrc->slice_context[i]; FFV1Context *fsdst = fdst->slice_context[i]; - copy_fields(fsdst, fssrc, fsrc); + copy_fields(fsdst, fsrc); + fsdst->slice_damaged = fssrc->slice_damaged; + if (fsrc->version < 3) { + fsdst->slice_x = fssrc->slice_x; + fsdst->slice_y = fssrc->slice_y; + fsdst->slice_width = fssrc->slice_width; + fsdst->slice_height = fssrc->slice_height; + } } av_assert0(!fdst->plane[0].state); av_assert0(!fdst->sample_buffer);