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 A7046490AE for ; Fri, 2 Feb 2024 09:50:24 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A1E5568D0F2; Fri, 2 Feb 2024 11:50:23 +0200 (EET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-he1eur01olkn2093.outbound.protection.outlook.com [40.92.65.93]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9D47F68C905 for ; Fri, 2 Feb 2024 11:50:17 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eug2sMRqE1rG+/wMFLJP1+Sxu/tvD7ZAJmMUfHMSDc+98v2VX1dR2EQDMx3EQKVwuPjtK+PFoy5jholaObL9KUofgiyxjJe7S5hkCSlAjIR5jztGTFdE7qzxKA12kuMysdQQ0V7W1BfhlNjt6gzgCjf6F806M1VXM7Gol49HIvAqRk7GzXDcHxaklmmdZ1E+g/zwsVzSUVkeKRN9SXqeqCHGzMQJ55bR1uZXwH1Z8aloKsWKZmyBhGLWbMxPW6GnUpnMhC7QP92bkeWKVN6yv57mSdQfvmxmVUW8cR3MhWAgNXxAhtoztQgUlTx32pAAaF2R5SOLbNKChq82FK1m5A== 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=9NIgiV5jzXtj//XYxyubxTBN/EUxUYSnEEv9QWo5F0U=; b=NE+l2CFN/6uXrmj4R1ruIxBJRQuKOUHl+GpjZdWVWAvD9UmrhofeWVInqXTC/eOyIHtrmgKZCF1v6EJnd8AJhFOkQzlpZaF441VjhAnS4jdglcfBEv2QeGgaEixggPdeYLoFe9uBZn87eOEGTnV81HkU+4ut+SgR1R6Mwf5GYOyCHarCHex90iZR/3Asjn6q/IlY3bJ9AiptQpJRP91rnukO3yWBubcYNKGBJxC+mgGUSIgLtsWh8MYP9/gwkS/fG4VcWUT3l6m+Z4lnGnOf/A469Zp4J/qm5agFXOgdgc9x92rd2WZNkYBbQdk4oithQRZgWxoHknGyS/y3Nd+8uQ== 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=9NIgiV5jzXtj//XYxyubxTBN/EUxUYSnEEv9QWo5F0U=; b=ayK3lTKtajiSyQKOUQWT4rOa9c6AazJI4lf8Ca+zsc3gg6l47qeat39uBEJ1qDUi4kgsjtr9ucYDysKxum7mn7EnmZ6e6zSSWfHV08ae+ym4LKHBUq9+OE8JNViukGi+oYlnGa+iksNH9Hy3Q/3QloOqOX9e0+dNyUj0YpdOuoL7vMQ10E217hhOzTKKeaThL2fa+HefDFH++GRIfayqMsVOWoSzA+gHlMQ5rUi47L37vBTLIOPRlt6/acCgDV9K24AxWTLm8A6C1tB8+kgctYuPf8yOMc8fY6klk/mF70M5KNCc+/K7Qwyt5ZAK2B6gDeDxLaK75OZq0+RwOkxp3Q== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PRAP250MB0418.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:27b::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.24; Fri, 2 Feb 2024 09:50:16 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7202.031; Fri, 2 Feb 2024 09:50:16 +0000 Message-ID: Date: Fri, 2 Feb 2024 10:52:09 +0100 User-Agent: Mozilla Thunderbird Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20240202003444.30893-1-connorbworley@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20240202003444.30893-1-connorbworley@gmail.com> X-TMN: [2KR6IiKWVZbRUoxtfHLG8C8l5MmzaMPhxZsyQNteh8E=] X-ClientProxiedBy: FR3P281CA0086.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1f::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <053713cd-1f4e-4b38-b249-ce5429d54839@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PRAP250MB0418:EE_ X-MS-Office365-Filtering-Correlation-Id: 28284dbc-5df8-41cd-9e70-08dc23d45bb4 X-MS-Exchange-SLBlob-MailProps: Cq7lScuPrnrRW4WzkdzDEZTk5CxQpNRB6mROJKQRDYL9Uk1lEfsuj3VNkykxCBlhtieIxDyEJhayYYIi+q6x6YEXWV8f8bdpd5Z5q6JMoXM1HRv39/x6Sv7BBEITLn9BjLyZDHdMCXAwe1EcFidKIzUr5KoUilKsY4w8MflceVdNOsTbaHNvJuH6ZNBgZF7vAUnY8FxEOYDRMIHQXKMzcc3hxhrN5QeJWio2sIoLIDWOguRnFgxTgjqL/qYbpxoAgj8pPrHu1sBknf5J5ooQLR6fTDEmqiYioTiM179UcpYttKK+RQidbumg+jYguN3XCbK7WELuVn18V1C0FZbazMTKp/JpuIMR7xQel/rb7M1kCHGKjELUMG+8kJTvCQxO8IGNiJxm5uphfULwhkm9a3yMVckMwYfQ+Xom5FwHQ9JEVnSvuCZ1d8LeK3ts5Rjz7CmluuppQfWnaCsZ/5uwdWEPE6KKLLp8KdN0hL5OohMA5PRlgfVCGtx+Mfi3UeE1ONKqdcFtsnavle8JSu8HmLob9lf26+nkiQ/vrp3riPvBFMzVMrjXS7oAGTNp1UmtV0aFQaLcDM69KsCeT8PgkyUbiC5ce3giDP/eLu+AyjMaI7O/uo7KjpUMGT4yqZhXCeFVui/9TwMA168VHlJQGCoKzxOy+ZRqC/oDz0MoEjjeh8yo2YqpTYOiSWIL3q6S0VqP3fsNLVEhPyNm74xt0c3XmzTe7eS9x5n5LZxwObyOibRCIibag8FOf+7BLiLOH4B2b6qkcmM= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Va1684LJ5hpJuTnfIuqSx6tQteW0cv6F+jbX9OdIiYgfizgHcgQ7T7quf9mzZLLzNTcCUQwJI4sy8SE20ErlLSboOizMwK6aKXlaDttdsABVJTdSeOdfTW8mzr5NxscYkXbje7isA76RDy8JoR5YyTeewPp/fyiSiKRzh8o+AoZxdiGVNqgMueFVeTSVPGhCaWgn+/YYrf0xXJ45QXKFR1JxXTEnTs1W7Cv29gwaJPkNV2la+/v55s216buF7c9Hj6IIIW7JJTCuG1/26/KgQYLRw8z7JCgmYeEdsl+pK3t5z1LjHxYujA58LVmXiaP4drXziwk8Zhd6eSeWfzivo/ab31/SiErjzHYjYJr8UES0k/ZGS98p2RdxKI/KFzDh54lEtrKzwARaIqTMzneGyt2qWtxe4xoLGO6y7emxbtJyIxQr5mVXltRW6/U2GolPa3p8JXX7ogXnVjGMRzA8DoY/l8fT5F2arHxqXKAWIVGEQFPnFTID96VScYhKuW8tYylzuG54QHm6GtrzGLJRCi+lQa1S5DODitn/P7uwICOv848+Asi8bfirfF/eB+wT X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?WVF1S3V6WXBRd2kyTEsvWDZoZ3Uxb2ExYUVwR0hBZkZldUdUOFRwOWJhUkkv?= =?utf-8?B?MmZCMkdLV0dzcHplWW85RlUvdzV5SnI2NE1sUE9Da01kUUd3NjFBUDlGZnh4?= =?utf-8?B?VklzRGdBanZvNy9xamZ0Vk5kckNudUxra0JKYm1CL21TaUlMZjZVY2Rta0lN?= =?utf-8?B?WGlORXFKcW91OG1vNERqOEdJR1dSbGZsaStnNkJISEczTG1sTUZheXgzNlVL?= =?utf-8?B?Y1lqbytBT2JWWjREdW1INmlrb2RkcUZFVmgvUXN0M3VtbjUwMnZ5L2xvNzJZ?= =?utf-8?B?bkZ0QXorMUM5Z09NQ2cwc0pOVXdEVXRRS0o5Q2lIL2UwblI1Wll0N1ZCanBr?= =?utf-8?B?NWROUzlkdHFqakI3UVc0Z3hDY0Z0dmdWTFBIMmZVNmEvQkZOZ0doaHhVS2NS?= =?utf-8?B?YnhoMno1RGl0cEx1MzgyRjVVbHdtbG9jV0ROZzMrRU82dEk2b2FlVzdKalRt?= =?utf-8?B?ejN5QjRWV1o2QWtQWFEvYVZYZzFrOXdMZ1krOFZDZGlUSGVvZjdHcURFTFN4?= =?utf-8?B?WGt2aWl4WEliYjY2Q0ozdnN6TGhKQno0ZlZXdFlVeDZCTGVZL3ViWU9rVFgv?= =?utf-8?B?TTUzMnZudzAxYk9TbGNCdlYvdWU3b1hva1pzTFpZL3RIM1lFdnZkRE5nd2lS?= =?utf-8?B?QW01VGFiR21kRy9ZQTBrM2RNcjFQYmxuaFBaUmkyNm9tckRQcGFxSHcxb2tM?= =?utf-8?B?QTRvSUJPeGdxVitMMUJVeEVMUUpJa3I3NnV1bktoSitwWjNGd291WUtJdExF?= =?utf-8?B?RisrL01PZ2tybzFUZVFaeXdUSmxUaklTeHJkQWNhbmJGM1c2N0hxRzEvMGNW?= =?utf-8?B?NmpVL3lDMWZncVpaalZyU3JVMzdIQ2VibzVGYkhQWEhGUDJGNWoxQ2s4WTMr?= =?utf-8?B?aHZLYzVBVHdKNHpwVGVHUWlsQlBXMi9XcnJ1Y3NGcmtlTkhaRWtBL0hGZ2No?= =?utf-8?B?Wk5nMnVsRDFiTzhEa3ExN3dOUzNBQzMxTjh4TlR0cVErUjdnQ0lUdk02WFVk?= =?utf-8?B?eGtieEFFdUtVb1RSZTRmWEpHUGlkM3pmby9lRG9uR3A5bmd3dlV2UThFcmFs?= =?utf-8?B?U2pSMXMyeVMxS2JqOGVKUW9MeTVBZFRRSWN4K0FQZFk0bUhnOUxpWU5Xamdl?= =?utf-8?B?ZVZYZVkvWUd5c0RKSGxEbi83N1VOb1lSY1BjYlZaYUUyalJHeE9aOUx2a3cw?= =?utf-8?B?a1pkQUdsMnFpWkZ3UFRnazU5KytxczA3eExjc2VQZHg3MDRRb2h2azMrSzRV?= =?utf-8?B?ekx4ek1KMGMycTdCQ3doVFZicEpvM1JhL1BkZ0piMjhScHJ2ZnpYTy9ONUdG?= =?utf-8?B?T0NzTHdCY25obTlMRUhYZjJCWHdxNDBMUC9abnNOOU5nY1FPaEQxcDhXNDd2?= =?utf-8?B?ZWF0YmsybWplbGE1VzU0ZGVmZ2RVNk9iTkUrdDgwb3VLL2Y3L2M1Ty9aUDdM?= =?utf-8?B?MWR0RVZUNFN6Y1VVWVpqcU5IaXF2aTZkYk5ZT2Z1Y2hNTGNWMHJMWjNHbUhZ?= =?utf-8?B?cmZUbVdqYmdWQWl1U0FTeUpqbExmdVozWCtTc1RNK3NlWGNnc0lnMWhZYmtO?= =?utf-8?B?ajBaQ3M3TkdwSHN3TlpWbUNLNk1odjVjZkNaNU1lQnF5bmJaSFN6ejl1WmYz?= =?utf-8?B?dDdybi84VCtIMXpYbzV1amdWbk9YNC8wMmswd2w2YzJRakFtd0FCYUNPNkl5?= =?utf-8?Q?NXPnSwp/7pOQqwGG8iCI?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 28284dbc-5df8-41cd-9e70-08dc23d45bb4 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2024 09:50:16.0457 (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: PRAP250MB0418 Subject: Re: [FFmpeg-devel] [PATCH] lavc/texturedsp: add DXT4 texturedspenc function 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: Connor Worley: > For future use in lavc/dxvenc. > > Signed-off-by: Connor Worley > --- > libavcodec/texturedsp.h | 1 + > libavcodec/texturedspenc.c | 41 ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 42 insertions(+) > > diff --git a/libavcodec/texturedsp.h b/libavcodec/texturedsp.h > index 86c8eea02d..8881436187 100644 > --- a/libavcodec/texturedsp.h > +++ b/libavcodec/texturedsp.h > @@ -62,6 +62,7 @@ typedef struct TextureDSPContext { > > typedef struct TextureDSPEncContext { > int (*dxt1_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block); > + int (*dxt4_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block); > int (*dxt5_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block); > int (*dxt5ys_block) (uint8_t *dst, ptrdiff_t stride, const uint8_t *block); > } TextureDSPEncContext; > diff --git a/libavcodec/texturedspenc.c b/libavcodec/texturedspenc.c > index 5657a6ef61..c98a277f56 100644 > --- a/libavcodec/texturedspenc.c > +++ b/libavcodec/texturedspenc.c > @@ -589,6 +589,20 @@ static void rgba2ycocg(uint8_t *dst, const uint8_t *pixel) > dst[3] = av_clip_uint8(g + t); /* Y */ > } > > +/** Convert a straight alpha pixel to a premultiplied alpha pixel. */ > +static av_always_inline void straight2premult(uint8_t *dst, const uint8_t *src) > +{ > + const int r = src[0]; > + const int g = src[1]; > + const int b = src[2]; > + const int a = src[3]; /* unchanged */ > + > + dst[0] = (uint8_t) r * a / 255; > + dst[1] = (uint8_t) g * a / 255; > + dst[2] = (uint8_t) b * a / 255; > + dst[3] = a; > +} > + > /** > * Compress one block of RGBA pixels in a DXT1 texture and store the > * resulting bytes in 'dst'. Alpha is not preserved. > @@ -605,6 +619,32 @@ static int dxt1_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block) > return 8; > } > > +/** > + * Compress one block of RGBA pixels in a DXT4 texture and store the > + * resulting bytes in 'dst'. Alpha is preserved. > + * > + * @param dst output buffer. > + * @param stride scanline in bytes. > + * @param block block to compress. > + * @return how much texture data has been written. > + */ > +static int dxt4_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block) > +{ > + int x, y; > + uint8_t premult[64]; > + > + for (y = 0; y < 4; y++) { > + for (x = 0; x < 4; x++) { > + straight2premult(premult + x * 4 + y * 16, block + x * 4 + y * stride); > + } > + } > + > + compress_alpha(dst, 16, premult); > + compress_color(dst + 8, 16, premult); > + > + return 16; > +} > + > /** > * Compress one block of RGBA pixels in a DXT5 texture and store the > * resulting bytes in 'dst'. Alpha is preserved. > @@ -650,6 +690,7 @@ static int dxt5ys_block(uint8_t *dst, ptrdiff_t stride, const uint8_t *block) > av_cold void ff_texturedspenc_init(TextureDSPEncContext *c) > { > c->dxt1_block = dxt1_block; > + c->dxt4_block = dxt4_block; > c->dxt5_block = dxt5_block; > c->dxt5ys_block = dxt5ys_block; > } This should be added in a patchset that actually makes use of it to avoid the fate of rgtc1_u_alpha. - 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".