From patchwork Sun Apr 17 13:22:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Izen X-Patchwork-Id: 34689 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:671c:b0:7c:62c8:b2d1 with SMTP id q28csp1136256pzh; Sun, 17 Apr 2022 06:22:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJynmsu32Sjd6IyLCglp9+jLcagct35I8tnH+NvfGsZvvoTD25v8UAw9zkxrBRnjx4l1MZqH X-Received: by 2002:aa7:c489:0:b0:41d:78a0:5b32 with SMTP id m9-20020aa7c489000000b0041d78a05b32mr7849520edq.305.1650201779061; Sun, 17 Apr 2022 06:22:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650201779; cv=none; d=google.com; s=arc-20160816; b=vNEnTCcvdC/kBfS+fJNFLvaJETYsflpgbxtRhUFR8P1tyOju+NA1nWgxRwIhljDWoK sBXmjMIcuV8tXlAQyi+CHGL4LCF5eHvYMa0DjwDaqlkSFcQPcKON4t2xWkPWD3A502Tx J4OLbMCwsQBh4yTmUH9ekvm/NpTQ/9O1UUFKKegtG3jRgWLivAOn8Ft2aVoG6gkDMV83 Q0MmLGz+5G3BQMZ1Uw6FMNadUc+0bSQ5EcCGhqnRz0skVdwVM3s/2iRaZJkwzSRBNMew LtcqEkJrpluYYXJGmUEEDvQ5a12upFWYbXfbC2YZLlx7O2XumTBsjoDN3JEe6bCeHQdX utsA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=YI7Jbm3K9cBO7DNTmLiDAcEAbZmIkh8JCrLdNdL98iA=; b=CePjNTnkY4VR4zxJSVAHPxoBHwf7grnekuq4uvPI22h71k3M/HI8DXasX+PKp3Dnb9 BqB/icaOa5em/HSDPBmuHrfv2guv+RnUvBVHxHEgcJAUUUtrL8h4OK2gL87lSbQ/9ZxF JKgAueNEuqPb37e4iM59iBC54VTwwKXJxNS3Ip3/AFxSyzgOQKDFukR8fn0iDl4ATlxJ gTHlkl0UTQZNfybOEXWvoG6IlzucO+/1S7jqLcUx2eBJRnwKzFixis21cNpPRKRF5imP 0rpPu4gYdqsxnvHkQvOcxb83sJw7Q09QaNnvAI23F/4b9J4WB6vmgX5u9B0c2/1hgKYB AKGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=AzErUoyo; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q11-20020a17090622cb00b006e8d608ba76si4229800eja.699.2022.04.17.06.22.58; Sun, 17 Apr 2022 06:22:59 -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=@gmail.com header.s=20210112 header.b=AzErUoyo; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 707A268AFB1; Sun, 17 Apr 2022 16:22:54 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f54.google.com (mail-qv1-f54.google.com [209.85.219.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9AD4768AE6D for ; Sun, 17 Apr 2022 16:22:47 +0300 (EEST) Received: by mail-qv1-f54.google.com with SMTP id i14so9364953qvk.13 for ; Sun, 17 Apr 2022 06:22:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=1sIGyjsvGFysBABe4Q9Ht5wCls3pZprRCKq1EvxB6Xg=; b=AzErUoyoEFnCOZsTP22d4bXOcMfSTncMO+SL9KoctOwEmYkcGSn6538xqvlTcDKsdI iFQ/pAIEViHIam3zkaSTrUm82oHcLcBwuz/mFCKjKFpM7jtmDDfvgEI+0O28H8otvTG6 dx74itbPvGV4nVXpbspAIF+TFUum1djFim2KHF0eC5HUDV8oaAu3AgzdgcoHX1X+C9L5 sE9spTrc3lJOmjKopKt1BXvWIVi9aL3nbn3ZmkRb6wSa//RKpGYRbSrQHOXFA7LM3u6a ndWp62PtFvunZ8JC7vzAZacFHb5Hnu4u4xRfi73CB0cEXbtD2yGGeoaORCU6SArFidjA kTdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=1sIGyjsvGFysBABe4Q9Ht5wCls3pZprRCKq1EvxB6Xg=; b=0BGZqm6slACPqrhH+U67Le8ifyrvHncO0VgbpgPc0U/56jfwN9p59s779xLPd5b7Uf IF4f9PxaiRPFn/xJM9E/iEQO/9GmdEWyYZZGKDFcuitiROnaL5zit/OAtYEIbxDcqCG/ Hcqp/vY+laEnolY0+5OmPv6pHyNX3UotRaIiSZgEFw9P13FgR779D5/pDb93esrOSnvk q+ohIi1DyYPuKTO440n/ci8Yao+DB/gp19reL8NcBPNzubuVGa4LLi0uDgDIc42xyqud Bm9h4qhQMKkyPOVMapX9hQDxjEGPvrriN05DecMjQUf3ULVkfKtehDA6pCUXG8uAnLF4 D/rA== X-Gm-Message-State: AOAM533HZL7T7pO3OGTACp2B5VtV3JSgY7IodxY+xULdOCLTxrPPFpg0 ylPIeJZmNyoGIVAEzCMOV1TPb8iMQi0= X-Received: by 2002:a05:6214:21e4:b0:444:474e:22de with SMTP id p4-20020a05621421e400b00444474e22demr4988074qvj.57.1650201765863; Sun, 17 Apr 2022 06:22:45 -0700 (PDT) Received: from gauss.local (c-68-41-54-207.hsd1.mi.comcast.net. [68.41.54.207]) by smtp.gmail.com with ESMTPSA id s195-20020a37a9cc000000b0069ca29ab6f4sm3903381qke.26.2022.04.17.06.22.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Apr 2022 06:22:45 -0700 (PDT) From: Leo Izen To: ffmpeg-devel@ffmpeg.org Date: Sun, 17 Apr 2022 09:22:32 -0400 Message-Id: <20220417132236.200239-1-leo.izen@gmail.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v15 0/4] Jpeg XL Patch Set 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: Leo Izen Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: t1Zxv5g3i9YY Changes: v15: - Make changes requested by Anton from v14 -- Add failsafe for infinite encode loop in libjxlenc.c - Make changes requested by Andreas from v14 -- Avoid linking error if the demuxer is disabled -- Avoid accessing GetBitContext members directly -- Thoroughly comment JXL_DEC_SUCCESS event in loop to avoid confusion - Some minor cosmetic changes - Rebase onto master v14: - Make changes requested by Anton from v13 -- make encoder return refcounted packet -- use av_realloc for realloc loop -- use -1 as default instead of -0.0 - Remove unnecessary JXL_DEC_FRAME subscribe event from decoder - Update FFCodec declarations to use the new macros, rebase onto master Leo Izen (4): avcodec/jpegxl: add Jpeg XL image codec avcodec/libjxl: add Jpeg XL decoding via libjxl avcodec/libjxl: add Jpeg XL encoding via libjxl avformat/image2: add Jpeg XL as image2 format MAINTAINERS | 3 + configure | 6 + doc/general_contents.texi | 7 + libavcodec/Makefile | 2 + libavcodec/allcodecs.c | 2 + libavcodec/codec_desc.c | 9 + libavcodec/codec_id.h | 1 + libavcodec/libjxl.c | 70 +++++++ libavcodec/libjxl.h | 48 +++++ libavcodec/libjxldec.c | 280 ++++++++++++++++++++++++++ libavcodec/libjxlenc.c | 384 ++++++++++++++++++++++++++++++++++++ libavformat/Makefile | 1 + libavformat/allformats.c | 1 + libavformat/img2.c | 1 + libavformat/img2dec.c | 20 ++ libavformat/img2enc.c | 6 +- libavformat/jpegxl_probe.c | 393 +++++++++++++++++++++++++++++++++++++ libavformat/jpegxl_probe.h | 32 +++ libavformat/mov.c | 1 + 19 files changed, 1264 insertions(+), 3 deletions(-) create mode 100644 libavcodec/libjxl.c create mode 100644 libavcodec/libjxl.h create mode 100644 libavcodec/libjxldec.c create mode 100644 libavcodec/libjxlenc.c create mode 100644 libavformat/jpegxl_probe.c create mode 100644 libavformat/jpegxl_probe.h