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 9967548F6D for ; Tue, 30 Jan 2024 14:55:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DF0668D309; Tue, 30 Jan 2024 16:55:51 +0200 (EET) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2051.outbound.protection.outlook.com [40.92.59.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ADC7C680323 for ; Tue, 30 Jan 2024 16:55:44 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G4tF4/d/oTNAGidCjfLv3b6yoi9EkTxK8AP6kVITQPLLGgOgeMT9CSfWvGxvXRdFI72pJ+SDFaAeYyBJ/Eb4en7zNMGVQsRTQlMjlmApZt1YmxpjdCvQF0livW8A1iTJq5lCpCLtL4qslOKIO03yOaF+C09wAdPVRlvQr/l8YoHb5V/pAyJUQYm7Q3doeEC7wT+I2YrVbEaoPZW9fnzwUxcZ9yrBcvCPV/HZbkejk5yVT+AbNONZYltgqqb6OushiKpRLZZIDUnCAizW6yMEx1GS1J6deEavybeIGwB26P7zHVMES1f3JPCZ/k7I7Gs08CABojfypKuAWQeeaoAMmA== 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=c7Tu8H/z415cFNknrwu4bWtyhOxBMMIl3jlSR7sz4lY=; b=XKOlGFSjSSQZApekXb8AMezXMqA4Sh/fHPauQJVeDmxRJLOkPiQ9794iqYeAU/SVd+BCvU2/UOk4+mJvmwhige31Q9o4k79+FqiKKcJorf8JeIW5FTFocYBuwBZFwaUVWXDCrJwPPc5Z61cwfvKM7GwQiLE8FGGlg3R4ek2MBR9tR1T7VPB5NhbPWjBDgR/sSiJOD8uW8CW/8osQUeHDkD6v8jbcevuUtwRIIPMNhAW7xAVH4F/+scM+Md+bSFd96p7SkO6KIpUU7NjrqkxDF9mDDFrOGAl5VR4afYzNIek2UqtxZyeYlGB/vylvR57FaPjz4cRUfsBxZkkEa41c0w== 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=c7Tu8H/z415cFNknrwu4bWtyhOxBMMIl3jlSR7sz4lY=; b=nflyXQuzE/s/2bO4UDNbF2cQlXkuYuUlxz6Ihw/vrzZqi1ue/vUpzOQWA7MP+9frkpmuUd0nNDHg2aB1dIwz0TUJC9t8AL1PFXvP+08BkVU0SImVEvdriXp1jkMCLLagX88eHRSfCL4e0n18X0zuPtoQl8WGsoFGULwDQ1ohe/0hWeBU9JRhWxeALQI4EzlpczT2yXkyCjIzR3V84IVrj1HCio9hVpTXx5CGFMWAs3Bnj6pyCU4i1rWH9tphRnAN4bKRdo9iDODAHU6QQuH+wOdrWYHDsvBvF+bp4Iv9fxlDYmAkSZ8TXftbi1mXyVkdeIq2HWcWxjlHNBW8VMgDDg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0299.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7228.34; Tue, 30 Jan 2024 14:55:43 +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; Tue, 30 Jan 2024 14:55:43 +0000 Message-ID: Date: Tue, 30 Jan 2024 15:57:22 +0100 User-Agent: Mozilla Thunderbird To: ffmpeg-devel@ffmpeg.org References: <20240130144608.54492-1-leo.izen@gmail.com> Content-Language: en-US From: Andreas Rheinhardt In-Reply-To: <20240130144608.54492-1-leo.izen@gmail.com> X-TMN: [khfXhqKqHB92qInTAq2VI5M1kIw/9vr4vESId4OeA58=] X-ClientProxiedBy: ZR0P278CA0070.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:21::21) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|AS8P250MB0299:EE_ X-MS-Office365-Filtering-Correlation-Id: c235f634-c604-4051-3f29-08dc21a38800 X-MS-Exchange-SLBlob-MailProps: 9IecXKUgicDrf0PUiQi1bK9pjNwriHLROWYsEvwSunCe2CFsWlFrLvDniM/3Ty0Ohl8yo8puwsRT+mNcBhc12UHOwYjSxoDRiiolavUhHVd1Ij3GccI9ZPD+DroF8ut31GqJS4wYaWyD3Y5Vmm85AQtj7FWalPYnTeX0t0oXyZUeadGXhw8j2dji9ox1U2M3Oe2hGjU0l25brLbTihC20w4jdezhKCT+6OX/8StOS4bY0EYiGmGLLswpbmp8WYfmql6TMgiD45wKqro2j+sAOvOhmHwwRDpiL2NSCYHvMmx4gPKToJcZGY8slUHUsuBFLu39Vcadh6KaQth7/fjs7xyLD/XBkEgxl6Q3DRTq+bGw8KtEsie1C4bMJew/DDGlVHn02ED2W6N8aNoKEhbJkebtrXY/UM841eajHyLsSZCmwW4YeDB5BpJu/0+hx11dplYRtsXdvLJLTIi+Hc36eNaBaVbGbnT1eB3dpPMNoSkAMZIl2HO/hTRe84E3Rq+XgBrQcARJg59OjuRtoLlH6RKYaGvjVhzP6BRtMv1bEPEXxau7Pqa/sOBxv0LJjWttpHsiirBVjch7LGouXW3uvtYHmOasKNa2zLeVEWg4Uw1FKj/E6x7BbnjDKxb6r0XBXNjbTVoVcuzxaiLVwu6Zzgxm4JB/vAYDxgod3DU/aABI2TnSax7Qy/GaNQ01BxueVIOuVEWZIrN5SzpR1nzx/evCBxVMCPghzoO+YJrsxgn1C01e0HJ9nQ== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cmVWlg1wQ7g0X7OE758zOWqc8va0Ik3oR0sladuHZMxZrnE+LBpVnapZfCsekT7mCVqE7k7pDb7MUQQItmX5HhwCQTk+//XmNtxrUGl38z0j8KrxNor+uyd6sF/LRFZKMIPJX/xmsIhXdvkVowBGkXk3KaivKRMybHyI8zEXnGbrn5uyXOhW4Hln1KZ6Jcdv/zI5QFjOKv/i+twF5g2hk4O+PGHi40f0WECYcTzO3AKJFH6IUN6a+FQPt6eIARWqjSfl34omrvmdjWM3cztJD0uBcs1Yf3eVHuUmZLt4sfKIGuv5dOXxr1oJoNo1jM9g2nLc/epjr8Dg9587WHHEyt1PXoudBHw7MfAhtJYWDu+gLbx1a+FcN7jbZTqaT7c0L83T4Ij+0fGq1Qvk3dGXTWt7JZ1Ar88n2JOt62K3lk69oDvxSnBxhcTgGM1LIjYQ3mGM0qOpdTnGnUJ4ZtuvdTYOeJPI0xGnu9HMpG0R3kcXacRoy8BzGeRdb/75zv4WETvSwU/6QUV4jI0DPeaWWrgKFHcRKz9FmSbk2BbEFb+qVF0Pn9JiQ/RHnBUDZcHv X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YUhnTzl4YWdKbFlHYVFPQVY2WlNEQ1VDNmF5ZzNyS0Faa0ZWd09JME05TEJP?= =?utf-8?B?eEx2L0V3cytLeTF6a2gxSHB6ejF0Mk5NRjFFdnhqNHNPYjFSZTNBMWx2SjdE?= =?utf-8?B?TnFwY01YdXRKbk5LcEV2YzVyMThjbWpZakhBdkxDOUNQVU9lWjFERC9FaHp4?= =?utf-8?B?VGlaYkxxUTZwRTlZOE1QcDNFazd4WUVIblYyUWRhZ0Q0ZVV6a0lTMDlqMlZi?= =?utf-8?B?bVk4aW1hTkZ1OG9XdFEyOW0yK3RQdVV0MEFQQzVxdGNUTFIxcWlnTW1aSWo5?= =?utf-8?B?WWRhOXZqODdGT1hQNGx0azRPajBiY3NVSEpUNkkzVFoxZzlDaWt4bTV3Ynp0?= =?utf-8?B?L0JQNkhzcHNldmtYYzhmVDFidjIyejJyeUtta3VpR2lkNGhMTGRXNUpzbUFX?= =?utf-8?B?Q3RqUkk4RzluRTQ0QlV1OEcvdW50RWFqMHBtdDh1eWRqVm05QWxUdXFlL1Bj?= =?utf-8?B?N2tCQzJqQnI2VXZuOVpBNEVncHhJc0ZCMnZTQjg5NFM3TkRBMzJxSU9SaWhn?= =?utf-8?B?eEtSNVlrOHhJSFlxb0d6TkIydmhhdklWZHBmRXVYcVowVVFDRm9lN1crN0Zo?= =?utf-8?B?Mm1US2xHMkI3bnFpbVhXN253VlFmUHRKWUwwbFBqQXlPbnA0ZncxbHdmWGdR?= =?utf-8?B?RHFwa2FRb2NwUlVrdmxkTUR3Y0EreWRzVEVwZWhNWVFoejM3MTllOWcrRnlp?= =?utf-8?B?czAwbUcrSWNyNEwzSkF3Vmx2a0Nib3ZSaWRhZE8xT1ZhS0hiSlVkQjQ2Vkht?= =?utf-8?B?bFBzRnpvOWRFdWlEa2g0UjJ2Q2YxYW5lUnJvTTNHSDc5N1NQbmhRSFIvcnFH?= =?utf-8?B?S0pHUVRHMzgzY01ZZ1h3VTR1K1F2bkd6a2ttOWt4MTJlYnE1S3ZqM21GdjUr?= =?utf-8?B?LzVzdG04YUFUUEp6SWFlT1lWdXNITzRkcXA1YUVPUGpTUGkyclp2SnJSdGV6?= =?utf-8?B?amVxZ0JNWWFzUHg4KzdIUE5xelduSnAra1ZqOTlOREx4VDVDNmNpbXlHT3NK?= =?utf-8?B?U2l1OUp3T25sUnNHaXJpeFpzTzRrR0RncjlVVmZURnA3M2ZHbUNyZGdlVlpN?= =?utf-8?B?R2NRTTRqM1dsOXJrLytTQmp0Um05OWpyRHRLRFlRMDhETWZhcEtiSUJ2SFJM?= =?utf-8?B?YlVUMFNJZEY4VDd1RXJGelFSODNtZFd5S3lDS2RFbmlJalAwdkpFQW9JOEpX?= =?utf-8?B?aXZ0UEZiVENXalNpb0d2bVRuN2xNdzJad0V6OWpPN0wxeThOTGo0cDM2MHN0?= =?utf-8?B?eTdmVlBzUEs1TWo2TWUzM3ZXNTA2eXZQN2pZbVNqcDZ2S3JPVVlGUFRxSE5n?= =?utf-8?B?K05QSnhzYWQvOGJFN2NaYnM2THltcVY5ckdWbWtSeXBJME5Ob0VWVGFlTGty?= =?utf-8?B?MHdjbytNNFg0RWh4dTdBMU5KbHVlZFRHdElhNVBhZTZ0OFVRMWJXOU02MTdO?= =?utf-8?B?a1pmNjRuU2pyMGFjQjZRb1FJWm5GNzRBeXIzQUlnYlRnRXZmdngzRFdMRjBt?= =?utf-8?B?eVNOSHhQWVdEY1JBZ3NuRXQzbEpmRXBaV3pJMi9VcS9iU2tUSEhER1lCcmVH?= =?utf-8?B?aXhUOUNCcWdWSnRYWWg3K1VqNGVUVEswV05Tbm5PVFJQVkZUNDBBR2hsVE9o?= =?utf-8?B?NW9sNFFPWHBkckxTMzRSZk9nSytpSnVtTmFRRHZUWWtNazdNR0dLRENkSm8w?= =?utf-8?Q?YxQYJPTsKsJnqt86mk1t?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c235f634-c604-4051-3f29-08dc21a38800 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2024 14:55:43.0095 (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: AS8P250MB0299 Subject: Re: [FFmpeg-devel] [PATCH v2] avcodec/libjxlenc: support negative linesizes 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: Leo Izen: > libjxl doesn't support negative strides, but JPEG XL has an orientation > flag inside the codestream. We can use this to work around the library > limitation, by taking the absolute value of the negative row stride, > sending the image up-side-down, and telling the library that the image > has a vertical-flip orientation. > > Signed-off-by: Leo Izen > --- > libavcodec/libjxlenc.c | 12 ++++++++++-- > 1 file changed, 10 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/libjxlenc.c b/libavcodec/libjxlenc.c > index 67be8a01ca..4ddd5f9f2c 100644 > --- a/libavcodec/libjxlenc.c > +++ b/libavcodec/libjxlenc.c > @@ -259,6 +259,7 @@ static int libjxl_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFra > size_t available = ctx->buffer_size; > size_t bytes_written = 0; > uint8_t *next_out = ctx->buffer; > + const uint8_t *data; > > ret = libjxl_init_jxl_encoder(avctx); > if (ret) { > @@ -303,6 +304,7 @@ static int libjxl_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFra > > /* bitexact lossless requires there to be no XYB transform */ > info.uses_original_profile = ctx->distance == 0.0; > + info.orientation = frame->linesize[0] >= 0 ? JXL_ORIENT_IDENTITY : JXL_ORIENT_FLIP_VERTICAL; > > if (JxlEncoderSetBasicInfo(ctx->encoder, &info) != JXL_ENC_SUCCESS) { > av_log(avctx, AV_LOG_ERROR, "Failed to set JxlBasicInfo\n"); > @@ -383,9 +385,15 @@ static int libjxl_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFra > } > > jxl_fmt.endianness = JXL_NATIVE_ENDIAN; > - jxl_fmt.align = frame->linesize[0]; > + if (frame->linesize[0] >= 0) { > + jxl_fmt.align = frame->linesize[0]; > + data = frame->data[0]; > + } else { > + jxl_fmt.align = -frame->linesize[0]; > + data = frame->data[0] - jxl_fmt.align * (info.ysize - 1); Please don't rely on the type of jxl_fmt.align here (which is out of our control). E.g. in the future it may be that libjxl supports only 32bit align values (i.e. uses uint32_t or so for it), but that we support 64bit (ptrdiff_t) linesizes and allocations, so that jxl_fmt.align * (info.ysize - 1) may overflow this even when -linesize fits into jxl_fmt.align. (Very unlikely given that align is size_t and they will likely not go back from this, but it could happen.) > + } > > - if (JxlEncoderAddImageFrame(ctx->options, &jxl_fmt, frame->data[0], jxl_fmt.align * info.ysize) != JXL_ENC_SUCCESS) { > + if (JxlEncoderAddImageFrame(ctx->options, &jxl_fmt, data, jxl_fmt.align * info.ysize) != JXL_ENC_SUCCESS) { > av_log(avctx, AV_LOG_ERROR, "Failed to add Image Frame\n"); > return AVERROR_EXTERNAL; > } _______________________________________________ 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".