From patchwork Tue May 3 06:37:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 35559 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp257783pzb; Mon, 2 May 2022 23:40:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLrP7r8d3KiWPo4UIu4/RXY4cWX4qU8mSXA9TnO0STn2SyNcMl73Shpqy29yOZqaLBocXL X-Received: by 2002:a17:907:8a21:b0:6f3:d0f0:b56b with SMTP id sc33-20020a1709078a2100b006f3d0f0b56bmr14260677ejc.305.1651560015036; Mon, 02 May 2022 23:40:15 -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 jg19-20020a170907971300b006e8ab12f932si13861898ejc.122.2022.05.02.23.40.14; Mon, 02 May 2022 23:40:15 -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=R+lmJzT+; 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 5DFFB68B3CA; Tue, 3 May 2022 09:39:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075040.outbound.protection.outlook.com [40.92.75.40]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1592268B2A1 for ; Tue, 3 May 2022 09:39:46 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XYhwJ4lGJJ5w4NsffUuQ8MtnbxQEEILGbWdzoAal4VsWq+Feq3dAtH55zaAc7rm3cNhiojkUbqm2K18g7S0kV9mslXd9/ScsU9DI8Fqluv3P9pxxwCVkiTSc+2zOH7f5MhT3dtDhhUkiRbDu/4Lzn2xw7A0H43eLBbfKMM83efAzHYgKnBtDmQDNCg5lEG7l8tYUxIiozIWZwpZMz7nxPhsVZUZdevJzq9g2ZnkwRCbC7I7h4dwUKgEh9k8NScDYN4oA/ioae1+zaJJa1EtNECyQH4cf91NGYr8H7+cUZ4MGXLdb5uErrNoTpKV/hL5bbmXNmbqc388XXSoJ4b9/7Q== 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=g5DptLWfOBElLjJ8phF2RvecGZ0cBF5QUv03lJAJlSE=; b=KeuifxsxDxUGgvpe379obDepbr96vl2UEEFClcZQOkYhGXyN/c5m/IEsSAi21w8PYdm/kNtKGPK4f9Hvtl8emUOUpr08SQmSJXwm65sXEVV6QbA81huKCKE5Oi7XZMKUuQXVo0ahdHdoHuV+pp8Syg1NCp5VuVkSdKhQZ1zn24iXr52FB3VnQyyXEtzvh4tszWTnMjoYhQR9+kKlCM8ShBfTyRVNFWsLD4gNtW0h5iI9kxX3xUjeIHDpt5YdhNIo15crRCTUeLgv3w4+wGv/gtu3G+w9MiH8nv6SxFtHGoL7VRHWCTKd4bNUQ2bMGLVhwx2md+1bIYWvZ9TrP6qOrg== 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=g5DptLWfOBElLjJ8phF2RvecGZ0cBF5QUv03lJAJlSE=; b=R+lmJzT+de+HqRKD4sSMJssV9XD4GlhfoQ5kQX4r9HyXINDaHZ/dkZ3ET+5l1DSikJ6DeGB+KHbuh5hyENyiExELrWnogEnAYvr6YI4/oqmFaCkFnljUDtXWjNuW98bJU9dXh0Ds9Ox/5ln8lPjENOkcvOecBTsv90hV00XNdWrPJivDtNNVdydePTT7jJyVGluPVGTqCIwYr7oDMVrtTynNPTHVzqYRGa/IN6X5diWzzyWNp7eWFb5QXue4UlXpvrUCf56QFgcKXt2wN88kE4ZmZGQKu64raH8zXTcdRaFUTKm5EIQYAE/BuEpSiGygys4ZVrLw/ZLyY8rr/mKyCA== Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) by VI1PR0102MB3230.eurprd01.prod.exchangelabs.com (2603:10a6:803:8::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.24; Tue, 3 May 2022 06:39:41 +0000 Received: from AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::1854:2c30:7ba1:c431]) by AS8PR01MB7944.eurprd01.prod.exchangelabs.com ([fe80::1854:2c30:7ba1:c431%6]) with mapi id 15.20.5206.024; Tue, 3 May 2022 06:39:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 3 May 2022 08:37:50 +0200 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [t1VxA7kCKPwnGO78moMyEMNAdESXaV51] X-ClientProxiedBy: ZR0P278CA0014.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:16::24) To AS8PR01MB7944.eurprd01.prod.exchangelabs.com (2603:10a6:20b:373::5) X-Microsoft-Original-Message-ID: <20220503063751.2261222-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4e990c1a-016b-469f-4248-08da2ccfb37c X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTQEkMEhbgfP1CXQyS+IofoA8939WrUHOZbU2KC5WHQ2UPK1uKZcveYvr/bKP0irYzagwUFEyEBCqzIIAsteYB1RkWc/Prtvs4vWycIyovoDGtqEv2DOWJHMhofyKmjPrTFjTMRRHVCHSq01+ShlCk0mJ0paHenBPPkD3o6U0GqHLqn3z/tvhtOrA2cH34tF8Q52pZA6ennq2uK5RFKHOy6LxVgtcwN4VidtS1Fc+7pX8MqZIselp3BEInVNrNnrIO2Af+feHW8bLALUBO0rvwjG6giQDEPtrZPO0wUVx657OXc3Yt798Mw7eyRH98aRuSCHRvMGB16QqDV2hza41DPStc10TEC5r03CwIxLTtIY6RHIjBsYH1XtWcoAHNIiPc340TdZlAQEm2jwai3+31sGAO80xySUEQ/vSfOg50Qbco0S5KkLStan8UjJfeJVC9bmMc+CSwTsGIlvxPAUrk08AYWfZjk24oyQoXCGA/aRlZ/BlFTbPir7RYXGVJVK9nTewtGQz9r9CRnNoe7Mty0eEKWYS59iRqFHGxU/qxikpwlajad18qu4bjt5RX5O2GNYy9I2uS33Te2vEEFp5YwuNBwJlIenz5ut4toD+JukT20d1dJcrlVyiXOzPdCCcnFHJeA8IfjNWm/mLrYwYzmRYncDvuGrrAF1TATY0xeSOJYoh7pS022TXQOjmRsUOxMGGBS2UhjakgK0/bSkmDqv2O2dLXyBjeR97rpY3pkmOoOvUvEG2RRowcO60GGVLQ= X-MS-TrafficTypeDiagnostic: VI1PR0102MB3230:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xd1EnwfI99vNdXn47j7lrW9NsehLc0Yice/5LhG4kpUfdhp37RQ8lYTBiciOiqJes/4C+lvS0Zmh3uyTOyCV9/uRU5dNIogSjQ+k1lfvA/3ErLgRHMfRBb3tS2KSMTAUZd1BCw/NgjarkoHsVf5KYnhByzdnJOpajHgazWMj7DfBAoYtcifUbu1aWsMEwCQXPgvi4BiH6jcmeOs66mz/JuxLGSMs/G6xd+oiAJk3OX8io0gf/M49DFyAwqkHE5nYjHjEJBTAsofqgNxUtAJAMlj/jre69lpAwagTcn27iLsw4B98rEAJwg+Rm+kUAFaRSEFmiDVvA6TDuPkPcso0GWPd7lZqphJ69n5mXBiI82lB2Bqw1s4gIvu3jWwOvlW5YMJqKFqzMtEthmDKwzr22fEl0VrueM34o0pKj895PK8LHd+KB7q1kWj7eFxY0odPWsj2H/5fkGRsJbjk5Kxm2Mbym1OjLgnohrtdETJSHtme+x45UOO9wyEjZdfeycnpOEojGzRhbGDK9oC+QYUyb2t0eBNKKaSRgAc7xcg7FMpberAuP5b316tELdNuCg7AQYe0mv54SXOwA/dO1ToG1Q== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N9nDlyv7rcTGkHH5CVELpvlBm8alQJ9xxESU/yeADglUG8FXVVOZIao8XAFXrzWDgqofEFZ4KifHRoJvZ1Xsl0qXF1l3OyMGQdI66fkIZ/SRp8Ee4CajesbqbLXu45cA/ZsHAhZ9mSnzMFlX5BUbczaBwDRonBrNKG5a3/1iHF5V9XLIsUfG/kk5CHj1Qwyi8Yq5t4rz0Js+/7+NoNArIR5WMLmSEIllVhVE+FCg412rSAZjrQ6Dufs6JGYrl9F5PWYRFW4G9xcppbLylVFeVEUyG1kOr1lvBe/sUqymQkyhKpA4YJUaHDuWxxdm3VUtuGcpeKxTzKCjAzBcJEVXtx8OyGHGo90WY17jyY3qBcnPsGnb+sSpT88GAWxIHsZL387o7rr3geuOCvQGriiAmQXLCtXfX4H+gSooMYRL30f2IoqKFOoOsStdtaZBfojBWahVvEYThYn+sRw6ffDQncZnxyBmPwZIwK5LiyoFxNf51sUNwg96JDqy42kGPX4Biuu0qH6rtE1+hkQHMW4kfp/fW7lOqKv2qsLfsQcIzlCqLG1yzxNPZzIzply269nyd3zMJsGk1irYkKKXytcbsGuV/7SQlKow0b7LzmPK2AfhF/IrjPtycilWbTZAAmQXBRfu7bS+T6b8ylLKWfaYlD/8CR29GAKYcsMhXcRJqQKtUJ5Yfg2uGBNmRm/T1lM0v3b1fn4MVbfXZncWk69fm+LycO8teIN1CVl8JawjBGjMlzVpuQ66ruMdpsAtf6quPLf3eBLAXYdUyBEWXc3rBVNa+TmVWxpWCwBKPyOMSwl9fLAXJ3fX/DQqJuIn5MGFl8lJjAiiUqdwokcWN9ZjiIGghKH8eA4m/+ilAQ7L7BV2UYUDAFvVj+k5zfc9w433Bnsec9Pc+tLIp36mA+P13pZXWEI7rNJh3eIxVd97qekkvD1nUdQqnO55PmwGzKmzg+M33U/MpgNJfebMGfoaj0IUbeUwNLTjJCK13A3nshuflqUmxR6wDToLy8kdcIzjK/w3GyihWA5ms/KEnCCvsFhsBkP4SFu4Dm+i/72nhsB6WdPs9LZcL4T8K09W+56tV2C5Ogvusszksi8qL6PIUiemUbJ3kT0Me4hazgqjQRXmdy70eb8gkXluLg+nXwxvPSLgo5+IkcaD3ClgeBRqrQMEjkq6aIqi6+qr1FilnIpqL9OZmXRBNAtHDI9LfhPcOxqWemfk6EYTO9u4mTGj+Cobyk/SM60bQt95FLzFBtC3q9cn4LpF0+vrFnzvLC+2kU/6L9mYzzmtIqX4RROEOSriL307qtgJY7iFagvUdzmSYsiTStvoXC1jEy+bzmOXHGf4t3mnmgYCPzAh8do8YUw0ldfBQttYvhOuQ/5tdJ5x7aa9J2Fj30WGAtZrqYSf1pXUHnKKBisirL9eUN099fTtxDuuhV3SK9srnMYbYtPhy2Ny/nSRKPiGcHB8PA1fxb7SltKXIRgeMJhMfiJI9Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4e990c1a-016b-469f-4248-08da2ccfb37c X-MS-Exchange-CrossTenant-AuthSource: AS8PR01MB7944.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 May 2022 06:39:41.2150 (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: VI1PR0102MB3230 Subject: [FFmpeg-devel] [PATCH 09/10] avcodec/v210_dec: Move ff_v210dec_init into a header 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: ujb52o8+503I This removes a dependency of checkasm on lavc/v210_dec.o and also allows to inline ff_v210dec_init() irrespectively of interposing. Signed-off-by: Andreas Rheinhardt --- libavcodec/v210dec.c | 29 +------------------ libavcodec/v210dec.h | 1 - libavcodec/v210dec_init.h | 61 +++++++++++++++++++++++++++++++++++++++ tests/checkasm/v210dec.c | 2 +- 4 files changed, 63 insertions(+), 30 deletions(-) create mode 100644 libavcodec/v210dec_init.h diff --git a/libavcodec/v210dec.c b/libavcodec/v210dec.c index b5e1d728a7..6c10ef6a7c 100644 --- a/libavcodec/v210dec.c +++ b/libavcodec/v210dec.c @@ -24,45 +24,18 @@ #include "avcodec.h" #include "codec_internal.h" #include "v210dec.h" +#include "v210dec_init.h" #include "libavutil/bswap.h" #include "libavutil/internal.h" #include "libavutil/intreadwrite.h" #include "thread.h" -#define READ_PIXELS(a, b, c) \ - do { \ - val = av_le2ne32(*src++); \ - *a++ = val & 0x3FF; \ - *b++ = (val >> 10) & 0x3FF; \ - *c++ = (val >> 20) & 0x3FF; \ - } while (0) - typedef struct ThreadData { AVFrame *frame; uint8_t *buf; int stride; } ThreadData; -static void v210_planar_unpack_c(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width) -{ - uint32_t val; - int i; - - for( i = 0; i < width-5; i += 6 ){ - READ_PIXELS(u, y, v); - READ_PIXELS(y, u, y); - READ_PIXELS(v, y, u); - READ_PIXELS(y, v, y); - } -} - -av_cold void ff_v210dec_init(V210DecContext *s) -{ - s->unpack_frame = v210_planar_unpack_c; - if (ARCH_X86) - ff_v210_x86_init(s); -} - static av_cold int decode_init(AVCodecContext *avctx) { V210DecContext *s = avctx->priv_data; diff --git a/libavcodec/v210dec.h b/libavcodec/v210dec.h index 662e266315..87ba38e151 100644 --- a/libavcodec/v210dec.h +++ b/libavcodec/v210dec.h @@ -32,7 +32,6 @@ typedef struct { void (*unpack_frame)(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width); } V210DecContext; -void ff_v210dec_init(V210DecContext *s); void ff_v210_x86_init(V210DecContext *s); #endif /* AVCODEC_V210DEC_H */ diff --git a/libavcodec/v210dec_init.h b/libavcodec/v210dec_init.h new file mode 100644 index 0000000000..305ab3911e --- /dev/null +++ b/libavcodec/v210dec_init.h @@ -0,0 +1,61 @@ +/* + * V210 decoder DSP init + * + * Copyright (C) 2009 Michael Niedermayer + * Copyright (c) 2009 Baptiste Coudurier + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_V210DEC_INIT_H +#define AVCODEC_V210DEC_INIT_H + +#include + +#include "config.h" +#include "libavutil/attributes.h" +#include "libavutil/bswap.h" +#include "v210dec.h" + +#define READ_PIXELS(a, b, c) \ + do { \ + val = av_le2ne32(*src++); \ + *a++ = val & 0x3FF; \ + *b++ = (val >> 10) & 0x3FF; \ + *c++ = (val >> 20) & 0x3FF; \ + } while (0) + +static void v210_planar_unpack_c(const uint32_t *src, uint16_t *y, uint16_t *u, uint16_t *v, int width) +{ + uint32_t val; + + for (int i = 0; i < width - 5; i += 6) { + READ_PIXELS(u, y, v); + READ_PIXELS(y, u, y); + READ_PIXELS(v, y, u); + READ_PIXELS(y, v, y); + } +} + +static av_unused av_cold void ff_v210dec_init(V210DecContext *s) +{ + s->unpack_frame = v210_planar_unpack_c; + if (ARCH_X86) + ff_v210_x86_init(s); +} + +#endif /* AVCODEC_V210DEC_INIT_H */ diff --git a/tests/checkasm/v210dec.c b/tests/checkasm/v210dec.c index 7dd50a8271..6aef519cc5 100644 --- a/tests/checkasm/v210dec.c +++ b/tests/checkasm/v210dec.c @@ -20,7 +20,7 @@ #include #include "checkasm.h" -#include "libavcodec/v210dec.h" +#include "libavcodec/v210dec_init.h" static uint32_t get_v210(void) {