From patchwork Thu Jun 30 22:29:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36568 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp621052pzh; Thu, 30 Jun 2022 15:31:56 -0700 (PDT) X-Google-Smtp-Source: AGRyM1t/lGGJUEWled+BkPGyhtyluvHkKn2f6rIwahH+xRdd+Dw2uuOzXGb9sLFqaNL6Uswlhbtt X-Received: by 2002:a17:906:7288:b0:722:da04:da51 with SMTP id b8-20020a170906728800b00722da04da51mr11152649ejl.316.1656628316343; Thu, 30 Jun 2022 15:31: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 f14-20020a0564021e8e00b00435de52eeafsi8385002edf.608.2022.06.30.15.31.55; Thu, 30 Jun 2022 15:31: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=Mn5+Y7J1; 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 7D6C668B800; Fri, 1 Jul 2022 01:30:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2078.outbound.protection.outlook.com [40.92.91.78]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1251668B7F1 for ; Fri, 1 Jul 2022 01:30:48 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kelPoB9oscntz0E9ZoRBpXlzkadk6VrLWUqjRklCEIdypJxQ6QUpjrB+1LBI0JxIoPXwuFLdAjJLLSZlxx176hjxhqeyCfzP/lN3SRfqC7FQLDMXsnMJyNgTkTbMTZNex0tuLwJKYaLTDk3xmA9utTZblUtjKyqPsoxYRmRy3u88RjzAHxr+LWOnmG1RMOUSw/NSrwsPfEvGyOQCJvJwSSge5RjgPcQInFqD//XmhKzY2K7jwWbh+n1CjTgHBibkXOwUhwkLI14YlIocsH0H8dLAJCAkwm0ZlPeZMkQ7p6It4mzh0CcKPk5qd3vj89DDpn6B88sauhDXVe787TuTEg== 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=+Rjpr1mDUvcYHaN86J7zq6osirVHHOilLJtXwBtgevA=; b=YjhQCAjY2EjAqa76FEYtNmAcxJrsifpoPN9xtHoiN0Ru96AXYXf9Le8cAnEWWtriPaxL1l82LkVl+NRVMasdmb5KKcp3zp7bcrPNbZl45yZeBpsHFrdsCb/w9aKiYvDoEXRTt33TFL86i3d0XgRh7f9OTDqtdJVgI7SlPJAA/APm4kAdeLNsrNd5smIyeQoAjZejBBmX9iSxixAMt6zO91WbpRwZnUA3aBSZ808cJNH3ymUHq5fbUKld4jGVpHu2LfZlus12VwKXwHzAu00hl8DEj+WoHDOgkZDxXADWBRZF/oa75PFzxTiLcypxLlWb3zq0z7vNQtrWruoiRqLZ9g== 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=+Rjpr1mDUvcYHaN86J7zq6osirVHHOilLJtXwBtgevA=; b=Mn5+Y7J1myhMwbE2amH1iMVBpq3GUbyPEBn0M2zjxDnMOZxmB9pxOt5wWGH64fuqrAmAh41BEFVkS7kHHyMrZgK2UjGSPK+WSvJOGMczhoCphIZKsEl8l3+Jyp+r4OXc6tP8r8v6VdaDK5dzrcNE5vkWn/G4oRyy5+OZiz7w7MvJ6m9B+gwAIORJ5AHXdy0+JFoG/Vh6FR9m7PC3W/K3zNQefYCteo5UVfD07ZtfR0W/9u9pDpSmkrvytYbMUCRiU15SIvpYIXHArCKwrOGcofqPrQ3Fu+m5BkvvG26t5GKM4xndwAcPQt1o9RNK3TqMgGU0TbWU2QhLdw9oXOQy6A== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB3PR0102MB3546.eurprd01.prod.exchangelabs.com (2603:10a6:8:d::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.15; Thu, 30 Jun 2022 22:30:47 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5373.018; Thu, 30 Jun 2022 22:30:47 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Jul 2022 00:29:42 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [bZvidms720nrxXgzyfHsDqkLAmfpvIP4] X-ClientProxiedBy: FR0P281CA0099.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a9::17) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220630222949.1758625-10-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 60e32e4c-5147-408b-d7ee-08da5ae82dc6 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiSAA+E0K/sYrHNnfsWcYQJjF+vdVM8rQryunVS5OFB7MWMT1Xi3FjEHSK1lTqr9/Bg6H0+K62+PIX4xg4AwI7vRYxEY5xvjBQ31AaOz7ikkJBg0ZcqqKD2Sv2jhxfEpzsMUETRgaLTV0QelEV73DnVtPIi8SHqZalLOEA0KjGzS9Bpa1uqGp8qNjoHX738glqVmXb9C2w9Kn1ovsYqy9p8CPn3MHL6E1r4Az8OT0vKlV19725+0P88ZZU7LJXo2PaIubnV5DZxl7rhVUepyvkUwJ3Qyw/7vULoDhXHOjRO5DJT3ERWdi2Ku+vqGNRMIYyz1dtrl+wK4yfyk1RnWOvltvfOOGtyzMHzYgXJn2q1x/fKfS/qlcsJslGVedUiLFaU4e6erZ71DrPYinpL8/PCcHMWi/Kr1Ko+kEuvq2QNf3FJwq/q10DrvV4lgIxTRazXMtSEvSXC6J9CCQm2ZltXZL40iJ1SrXK1srSaRF/X67NCpSMHuFMakWsGzDx4Jeuhb5EFBGjOxW16seeDtwLaTJ+3zaCfe5iMPszMpguEtYwWJQpSTwJ8BEGuIxQDFEOuPOnqsRLMl9v7eizjTzLy0UDN5U2TEnKMrHXiG7CM8aISrA0TdM1TImiPDvvJtEnOJnzFw01WvuY8518sxkqpPiYwXL15aA9DmAxJmHavRkf1VLXLAsLyYwk1LwTbMH2zwdsa6QmAvdoFWqzxi+OQOpvr/5ii0bW1yhZUEVeHalwmBzoufEwwG8Aolzu1ztq0= X-MS-TrafficTypeDiagnostic: DB3PR0102MB3546:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bCpHoRFIq/HYEPiOxUqSBF0siMRI9Nik4dNOL6WUKtDhan58SGKnwm+8qjhZgUCizg0Fd0AX8pqZqzDTSXM/Bv/51bjoV5hlNXK9QcjnPxP83g2ltoVS+KB71O8yHvCHJ6yD5RAVwgPkqQPSjGc3SyWO5n04azbyG76Ajm0Q8H9pKScJplcuE5T4TIb0jM61C/HqHFaXXEB5IaHPLMghNg4DKmKR1eaYSyjdHQz2hJ+/7GZDih+ITLYjJ57SmhRgNPsE/1Q90MSIpmYyMxkogNEed7aF7s0+jK4D2kU5Y+bDMK2eIPoEw/tK9QyLrg6ZUI6WwM9ujpHIOfMNkTz75+x6Y+d3BgPQlhoyHF/iGKB2DJNu0hZ3ODUqqk6mhQ9ya19xoI2pb6eYYo1eYaBW+/pHowUfL69N1P6Z0Ajnl0NQQoV4IS6v4Zs5luo4a5y5ftzL899J3wTg1x0hFpw/KjKJT7UyJRD0FiPC2TpkjVcbME/FgWQNUZptCjFgT6MMSceXj64TSUpYR8rr9OvBHa9Skc9gjlt6oDLk73aWvB84Cm+gw9VzNKpa0qCZkVQsMj9szALURZhihD3dxy7s/XDyFuStwFN5zKgmX/OcbLrQv21hyJnEDtckS/Xuuf8AQMXsY0QOFVbW6zptWXNqIWxLUsm3hVAmGPCWZKZQM0B1Zbe8DcXsC+A5jc1xTOERz84k9SGs/EYsFfz5l2j05Q== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: PK+LLXBX9IQ7fgQY8sAUmsfyVwAo2XicKaMA7P4BRrUJD5u1BJJ/T7kH/GsR3mPTOE5E/GL/pILJ53pTdXnTcPqh3+d1sKON77k6VO7NqktBYRJl8bKJOuejHX15iUsZH76M5uqcrVAvXSuShVZdV4Q0tv+LYyie7AeTxIZ9qKBMMgpS6QADSox0GDjDdwBRpH1BtclR9+6Q14BUwTQHvjw+ASBPJnTRsAIE7zIuW0EHbmICI58gj+EYeNIEIELCbCj5kc4NdmZEa5vj2YGqIj6rUmJDaRy8iPtxYzvjdceaKZbSDxbB40JcT8n38kRfLjG+ob0cxCcPVd6zvQieoCtYxvpuHVEghVe1KuJ2wChIIwP4tagTRiYXu0LfwZiX86ApNadxrW2etmRfd6SqttiEf1+T0xbUBmOtAaq3ikSe/H7ES9e7PDnezCeG3s+aI1nitJAyG+U4dTkkiUF7POXrxG3DMfparmhqbBJZfOWqHZj2SSYgt3HBUBnucOwUcOrSfJwS3ku522HVhEBwUET+IhyragtJ8VCOnwPlLN7z5OsnXZTXEiH3xvOuXLVcOicSXDotEjLNtwDEXb3SyWd6nuYts9lrzMPpsLnxERQDmwGn2UyM9y09zIcz4cLKL6P2evxVMLMpfvILkCMwCFq623DOldn1sULnQSiRYGbpAGVt4RMFTqn4c25C552UQnF4yoO0EHL86kfvvzI6V5ubCV2m8HfPl95SAoQhYPUGpFVKswSv/iWC8T5sBSJmuVndGCO9nCdAaQSFHQHzY0V25KstvnuAH1u8cVRfGmMLGbFkmbb0sqQH0k6KH9QvYKHd3Nm0MYJzPM25r4r/+JyB/qSgpmUUNoGDc/DZiROJw56rJpZq7CAvOFAZQmsr2K+5A3dnAYfkzalIieQ1bh3ZfnukKc7NTgCt2Qqp9LJI24+TDFSGTohvF8dRnaDYcM3CIDxkUuz7QweZ1AIodD1h0hqY+VUzeTcLIal1qOiHhAUoSW6/R9YQKZZjIKCzFAWyMlFyXPJCkBcLpY2wxfGg82HzFwLF0gCR0Uawk3gxXwroC9kTlmVo4Id7nHHELMeeImyuEpplkepJQ0RH/rsU66yGeYH18EpCFEaJxmZrNa858F263yYAYInrJMbvnhiQTL+mzOJvaSZD8G0CCr5m9dNGtlyIrMpGH2tSepebge64CCkvdhSyywtlkXJR+8XBMKhUddjKCun8fwXdtJegiqu8FC1zg+FtW8mJ/p0tgbgG0LL6CwJ7aA/XV/WdyAg5P8tYBCiQb8RtV9ow5dUJWMIxtdnKXMz+dQkTipw= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60e32e4c-5147-408b-d7ee-08da5ae82dc6 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2022 22:30:47.6077 (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: DB3PR0102MB3546 Subject: [FFmpeg-devel] [PATCH 11/18] avcodec/hevcpred: Pass HEVCLocalContext when slice-threading 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: hRRpRDqyKOHd The HEVC decoder has both HEVCContext and HEVCLocalContext structures. The latter is supposed to be the structure containing the per-slicethread state. Yet that is not how it is handled in practice: Each HEVCLocalContext has a unique HEVCContext allocated for it and each of these coincides except in exactly one field: The corresponding HEVCLocalContext. This makes it possible to pass the HEVCContext everywhere where logically a HEVCLocalContext should be used. This commit stops doing this for lavc/hevcpred as well as the corresponding mips code; the latter is untested. Signed-off-by: Andreas Rheinhardt --- libavcodec/hevcdec.c | 28 ++++++++++++++-------------- libavcodec/hevcpred.h | 4 ++-- libavcodec/hevcpred_template.c | 8 ++++---- libavcodec/mips/hevcpred_mips.h | 4 ++-- libavcodec/mips/hevcpred_msa.c | 8 ++++---- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/libavcodec/hevcdec.c b/libavcodec/hevcdec.c index b3965932e9..2fd0f3acd3 100644 --- a/libavcodec/hevcdec.c +++ b/libavcodec/hevcdec.c @@ -1108,7 +1108,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, int trafo_size = 1 << log2_trafo_size; ff_hevc_set_neighbour_available(lc, x0, y0, trafo_size, trafo_size); - s->hpc.intra_pred[log2_trafo_size - 2](s, x0, y0, 0); + s->hpc.intra_pred[log2_trafo_size - 2](lc, x0, y0, 0); } if (cbf_luma || cbf_cb[0] || cbf_cr[0] || @@ -1194,7 +1194,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, for (i = 0; i < (s->ps.sps->chroma_format_idc == 2 ? 2 : 1); i++) { if (lc->cu.pred_mode == MODE_INTRA) { ff_hevc_set_neighbour_available(lc, x0, y0 + (i << log2_trafo_size_c), trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size_c - 2](s, x0, y0 + (i << log2_trafo_size_c), 1); + s->hpc.intra_pred[log2_trafo_size_c - 2](lc, x0, y0 + (i << log2_trafo_size_c), 1); } if (cbf_cb[i]) ff_hevc_hls_residual_coding(lc, x0, y0 + (i << log2_trafo_size_c), @@ -1224,7 +1224,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, if (lc->cu.pred_mode == MODE_INTRA) { ff_hevc_set_neighbour_available(lc, x0, y0 + (i << log2_trafo_size_c), trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size_c - 2](s, x0, y0 + (i << log2_trafo_size_c), 2); + s->hpc.intra_pred[log2_trafo_size_c - 2](lc, x0, y0 + (i << log2_trafo_size_c), 2); } if (cbf_cr[i]) ff_hevc_hls_residual_coding(lc, x0, y0 + (i << log2_trafo_size_c), @@ -1253,7 +1253,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, if (lc->cu.pred_mode == MODE_INTRA) { ff_hevc_set_neighbour_available(lc, xBase, yBase + (i << log2_trafo_size), trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size - 2](s, xBase, yBase + (i << log2_trafo_size), 1); + s->hpc.intra_pred[log2_trafo_size - 2](lc, xBase, yBase + (i << log2_trafo_size), 1); } if (cbf_cb[i]) ff_hevc_hls_residual_coding(lc, xBase, yBase + (i << log2_trafo_size), @@ -1263,7 +1263,7 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, if (lc->cu.pred_mode == MODE_INTRA) { ff_hevc_set_neighbour_available(lc, xBase, yBase + (i << log2_trafo_size), trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size - 2](s, xBase, yBase + (i << log2_trafo_size), 2); + s->hpc.intra_pred[log2_trafo_size - 2](lc, xBase, yBase + (i << log2_trafo_size), 2); } if (cbf_cr[i]) ff_hevc_hls_residual_coding(lc, xBase, yBase + (i << log2_trafo_size), @@ -1275,26 +1275,26 @@ static int hls_transform_unit(HEVCContext *s, int x0, int y0, int trafo_size_h = 1 << (log2_trafo_size_c + s->ps.sps->hshift[1]); int trafo_size_v = 1 << (log2_trafo_size_c + s->ps.sps->vshift[1]); ff_hevc_set_neighbour_available(lc, x0, y0, trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size_c - 2](s, x0, y0, 1); - s->hpc.intra_pred[log2_trafo_size_c - 2](s, x0, y0, 2); + s->hpc.intra_pred[log2_trafo_size_c - 2](lc, x0, y0, 1); + s->hpc.intra_pred[log2_trafo_size_c - 2](lc, x0, y0, 2); if (s->ps.sps->chroma_format_idc == 2) { ff_hevc_set_neighbour_available(lc, x0, y0 + (1 << log2_trafo_size_c), trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size_c - 2](s, x0, y0 + (1 << log2_trafo_size_c), 1); - s->hpc.intra_pred[log2_trafo_size_c - 2](s, x0, y0 + (1 << log2_trafo_size_c), 2); + s->hpc.intra_pred[log2_trafo_size_c - 2](lc, x0, y0 + (1 << log2_trafo_size_c), 1); + s->hpc.intra_pred[log2_trafo_size_c - 2](lc, x0, y0 + (1 << log2_trafo_size_c), 2); } } else if (blk_idx == 3) { int trafo_size_h = 1 << (log2_trafo_size + 1); int trafo_size_v = 1 << (log2_trafo_size + s->ps.sps->vshift[1]); ff_hevc_set_neighbour_available(lc, xBase, yBase, trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size - 2](s, xBase, yBase, 1); - s->hpc.intra_pred[log2_trafo_size - 2](s, xBase, yBase, 2); + s->hpc.intra_pred[log2_trafo_size - 2](lc, xBase, yBase, 1); + s->hpc.intra_pred[log2_trafo_size - 2](lc, xBase, yBase, 2); if (s->ps.sps->chroma_format_idc == 2) { - ff_hevc_set_neighbour_available(lc, xBase, yBase + (1 << (log2_trafo_size)), + ff_hevc_set_neighbour_available(lc, xBase, yBase + (1 << log2_trafo_size), trafo_size_h, trafo_size_v); - s->hpc.intra_pred[log2_trafo_size - 2](s, xBase, yBase + (1 << (log2_trafo_size)), 1); - s->hpc.intra_pred[log2_trafo_size - 2](s, xBase, yBase + (1 << (log2_trafo_size)), 2); + s->hpc.intra_pred[log2_trafo_size - 2](lc, xBase, yBase + (1 << log2_trafo_size), 1); + s->hpc.intra_pred[log2_trafo_size - 2](lc, xBase, yBase + (1 << log2_trafo_size), 2); } } } diff --git a/libavcodec/hevcpred.h b/libavcodec/hevcpred.h index eb17663683..b1b1dc4f3a 100644 --- a/libavcodec/hevcpred.h +++ b/libavcodec/hevcpred.h @@ -26,10 +26,10 @@ #include #include -struct HEVCContext; +struct HEVCLocalContext; typedef struct HEVCPredContext { - void (*intra_pred[4])(struct HEVCContext *s, int x0, int y0, int c_idx); + void (*intra_pred[4])(struct HEVCLocalContext *lc, int x0, int y0, int c_idx); void (*pred_planar[4])(uint8_t *src, const uint8_t *top, const uint8_t *left, ptrdiff_t stride); diff --git a/libavcodec/hevcpred_template.c b/libavcodec/hevcpred_template.c index ca75ec1128..16d1c7f35f 100644 --- a/libavcodec/hevcpred_template.c +++ b/libavcodec/hevcpred_template.c @@ -27,7 +27,7 @@ #define POS(x, y) src[(x) + stride * (y)] -static av_always_inline void FUNC(intra_pred)(HEVCContext *s, int x0, int y0, +static av_always_inline void FUNC(intra_pred)(HEVCLocalContext *lc, int x0, int y0, int log2_size, int c_idx) { #define PU(x) \ @@ -70,7 +70,7 @@ do { \ else \ a = PIXEL_SPLAT_X4(ptr[i + 3]) - HEVCLocalContext *lc = s->HEVClc; + const HEVCContext *const s = lc->parent; int i; int hshift = s->ps.sps->hshift[c_idx]; int vshift = s->ps.sps->vshift[c_idx]; @@ -346,9 +346,9 @@ do { \ } #define INTRA_PRED(size) \ -static void FUNC(intra_pred_ ## size)(HEVCContext *s, int x0, int y0, int c_idx) \ +static void FUNC(intra_pred_ ## size)(HEVCLocalContext *lc, int x0, int y0, int c_idx) \ { \ - FUNC(intra_pred)(s, x0, y0, size, c_idx); \ + FUNC(intra_pred)(lc, x0, y0, size, c_idx); \ } INTRA_PRED(2) diff --git a/libavcodec/mips/hevcpred_mips.h b/libavcodec/mips/hevcpred_mips.h index f22feff85e..6848700010 100644 --- a/libavcodec/mips/hevcpred_mips.h +++ b/libavcodec/mips/hevcpred_mips.h @@ -67,7 +67,7 @@ void ff_pred_intra_pred_angular_3_msa(uint8_t *dst, const uint8_t *src_left, ptrdiff_t stride, int c_idx, int mode); -void ff_intra_pred_8_16x16_msa(struct HEVCContext *s, int x0, int y0, int c_idx); -void ff_intra_pred_8_32x32_msa(struct HEVCContext *s, int x0, int y0, int c_idx); +void ff_intra_pred_8_16x16_msa(struct HEVCLocalContext *s, int x0, int y0, int c_idx); +void ff_intra_pred_8_32x32_msa(struct HEVCLocalContext *s, int x0, int y0, int c_idx); #endif // #ifndef AVCODEC_MIPS_HEVCPRED_MIPS_H diff --git a/libavcodec/mips/hevcpred_msa.c b/libavcodec/mips/hevcpred_msa.c index f53276d34e..b056ee986b 100644 --- a/libavcodec/mips/hevcpred_msa.c +++ b/libavcodec/mips/hevcpred_msa.c @@ -1903,10 +1903,10 @@ void ff_pred_intra_pred_angular_3_msa(uint8_t *dst, } } -void ff_intra_pred_8_16x16_msa(HEVCContext *s, int x0, int y0, int c_idx) +void ff_intra_pred_8_16x16_msa(HEVCLocalContext *lc, int x0, int y0, int c_idx) { v16u8 vec0; - HEVCLocalContext *lc = s->HEVClc; + const HEVCContext *const s = lc->parent; int i; int hshift = s->ps.sps->hshift[c_idx]; int vshift = s->ps.sps->vshift[c_idx]; @@ -2416,14 +2416,14 @@ void ff_intra_pred_8_16x16_msa(HEVCContext *s, int x0, int y0, int c_idx) } } -void ff_intra_pred_8_32x32_msa(HEVCContext *s, int x0, int y0, int c_idx) +void ff_intra_pred_8_32x32_msa(HEVCLocalContext *lc, int x0, int y0, int c_idx) { v16u8 vec0, vec1; v8i16 tmp0, tmp1, tmp2, tmp3, tmp4, tmp5, tmp6, tmp7; v8i16 res0, res1, res2, res3; v8i16 mul_val0 = { 63, 62, 61, 60, 59, 58, 57, 56 }; v8i16 mul_val1 = { 1, 2, 3, 4, 5, 6, 7, 8 }; - HEVCLocalContext *lc = s->HEVClc; + const HEVCContext *const s = lc->parent; int i; int hshift = s->ps.sps->hshift[c_idx]; int vshift = s->ps.sps->vshift[c_idx];