From patchwork Mon Jul 10 23:57:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Izen X-Patchwork-Id: 34954 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6da1:b0:131:a7d0:bc6d with SMTP id gl33csp1074468pzb; Mon, 10 Jul 2023 16:58:08 -0700 (PDT) X-Google-Smtp-Source: APBJJlGcLQS0+2RaXyl3TYzy68vRXhMAvBU7pRQL8kpYcco3JPZAaC/QVQNgugVNgXn1MT0itB7a X-Received: by 2002:a17:907:a420:b0:982:26c5:6525 with SMTP id sg32-20020a170907a42000b0098226c56525mr15503419ejc.60.1689033488433; Mon, 10 Jul 2023 16:58:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689033488; cv=none; d=google.com; s=arc-20160816; b=ERp4H+gQf32yowebWdWdR1eSI6Y+sGROG+uJ9vphE9w6M3nYvu4CWU5npM2V8aiRpS VQum1xluQ6kD+Noj05Q0qvCLEsVr6VIni0mtT6Cr36e+Lg51hrjsf92Oc/ATm017lIYR 6cc0Yx/0CCpHoT/i8rbIp6P6JZtzhlOh4YHqZuuN7VvaSgFjWEKsSZMyQpPMJShqFUZA JoFBE+pS1woKRdQyJqBaK5apqK5KpQAbA+dT8vPDrGxtz9SAYsmNeIcXEEKT7aDYs1bP v2aIdDiZCFOWkgu+5seNR81eouZQ4f+AmUW1RaKsJ4jmHSl1gNH0CC99UJAOLUWgVIjw znsg== 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=jr4GqTVgCnkt/KDPRU3KIISIOchNmnGYDaBOonUEXkw=; fh=W57KVLPaTz0tbsYsrKIbKYuBNANpg4Tl/mHbnGjtYGU=; b=gxYbMZtS/ulzS87v7mdA1iOaCSIm8EpsGPP66DUuE2f2ikbGa7gdqLqZSQ92L8A6Ft eI0Qd6pno/eudqfHioGWZw8Ux0mvLB7LzUSVr7QZmPpH40uOzV23rNBRb5FYiAm+6KGA NTXXUGIyJ+7LHxkLBhLZ+y1zfcM2CwElMc6SDNHx5Lvi6RUeakWJs0UZVohDV0QtrsB5 oSvGq9FbGLtYl5he8w09IDlEdHoT2gNbx/Mym3ppQXDRT8IC3vWWKEwpOiQvItUP+xo/ 9ZzYFcke+TZuuInc/NWNKh/vHZwkKtz61RMMESg5W8jbJQlmiVc95o/tt5AgIG86QKLH Y77Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=fUuMGOYA; 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 n21-20020a170906b31500b009926703c4b9si708949ejz.413.2023.07.10.16.57.59; Mon, 10 Jul 2023 16:58:08 -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=20221208 header.b=fUuMGOYA; 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 ABEE168C36E; Tue, 11 Jul 2023 02:57:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f182.google.com (mail-qk1-f182.google.com [209.85.222.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7FEEC68C56B for ; Tue, 11 Jul 2023 02:57:48 +0300 (EEST) Received: by mail-qk1-f182.google.com with SMTP id af79cd13be357-7576b53e75eso72851685a.1 for ; Mon, 10 Jul 2023 16:57:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1689033467; x=1691625467; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=rb+GOdTYNU+Bvu+0EgrK8jvfAA/hCcvV5RH7TrVJorE=; b=fUuMGOYA284AZQx2BN/xmseCWt5uH4AtqLOyyqg/XUncSqO7xlT9VKOGjuA0ldFQKV 2JVp6XT1/tlcs+v9UI73OIq6TT5JYN8OeTyUmq24ANboxnw6qnel3Zu2aiGyDn3R0fzN GyH9CILsFomOfSK/+JUa5N5NP8wzoOvLz2Ysn2R5TRvTXrZNSLmNShfkrbt4VsGgpf2b KlhPyuZQEu+i53+KIs0Jqpp2fTLgQdWV60BueeWPkcXh4rSUhcxPPrWQdT+FH+Iww68D TNwqq4TJAH99si9eObSc86WLck04lpNHdeSHRp5i3WHjguVTfis5BG0e2E+/68sdIzbR XXOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689033467; x=1691625467; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rb+GOdTYNU+Bvu+0EgrK8jvfAA/hCcvV5RH7TrVJorE=; b=B82aHoIssUUWVuzDbc6Rqoka/aEy8Zo2WZnURbHukoZqMOA7gpxRwhl9DNvz1nluxa t+ZGaZpM2Ng8PQ1NNd7lEugzuQ9X7PuosX8Jna30zPn3QyW/GnnLC0x43Js+NniM2nJY IcLkJWZSNT+C5R5gw09DHm8Zioaaj96GUa7Oac5iljmDA+ZsFFOE/NkOY9GhgnqtXlL8 D+7wAxVJKGDESsltFy+BOoU82T5IgFLMkPRnNZ27ja+PwPOx37OaS7Q7OzXcb0qyoUG3 aKqMTezbGWcQ20hpLmK7+1avf/xBczRPC9dpdksNmHlv6jkm3FEdFlsBxjkzU0bh6XWb ekfA== X-Gm-Message-State: ABy/qLaqMEo4FMH8clv8C2VHRfHELKpndX4zYgUBjJpBssebwxaQQ0aX 21B0rwBNtEO+nZD5rHotAxjUKObZDQw= X-Received: by 2002:a05:620a:46ac:b0:75b:23a1:69ee with SMTP id bq44-20020a05620a46ac00b0075b23a169eemr14674908qkb.5.1689033466665; Mon, 10 Jul 2023 16:57:46 -0700 (PDT) Received: from gauss.local (c-98-224-219-15.hsd1.mi.comcast.net. [98.224.219.15]) by smtp.gmail.com with ESMTPSA id v2-20020a0dd302000000b005707fb5110bsm263450ywd.58.2023.07.10.16.57.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Jul 2023 16:57:46 -0700 (PDT) From: Leo Izen To: ffmpeg-devel@ffmpeg.org Date: Mon, 10 Jul 2023 19:57:40 -0400 Message-ID: <20230710235744.30513-1-leo.izen@gmail.com> X-Mailer: git-send-email 2.41.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v5 0/4] JPEG XL Parser 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: DKgw/GdMPzfZ Changes from v4: - Added an entropy decoder and full parser, which finds the boundaries between files correctly - Removed unnecessary logging in libjxldec Changes from v3: - Don't remove AV_CODEC_CAP_DR1 from libjxldec - jpegxl_parse.o added to STLIBOBJS in avcodec/Makefile - add pipe demuxer to avformat/Makefile's SHLIBOBJS Changes from v2: - Fix libjxldec to work with packets that are smaller than one frame - Change how code is shared between libavcodec and libavformat to be more sensible. - Fix the parser to work with large headers that proceed the codestream in a container format (for example, if several-KB Exif boxes preceed the codestream.) - Modify the parser to set width/height instead of avctx Note: avctx->pix_fmt and s->format are both set, because otherwise the CLI tools won't print the pixel format without libjxl enabled. - Update the fate test based on the new parser's packetization This test relies on FATE samples that haven't been uploaded yet. To test, unzip the following zipfile[1] in the FATE_SAMPLES directory, placing the test images in jxl/. [1]: https://buzo.us/y.zip sha256sum: 43a2eeb0dfdf471b47a9fdfb1653974fa156ceceb776891cc137569a8ebf0e75 signature: https://buzo.us/R.asc Leo Izen (4): avcodec/libjxldec: use internal AVFrame as buffered space avcodec/jpegxl_parser: add JPEG XL parser avformat/jpegxl: remove jpegxl_probe, instead call avcodec/jpegxl_parse fate/jpegxl_anim: add demuxer fate test for jpegxl_anim libavcodec/Makefile | 3 + libavcodec/jpegxl.h | 94 ++ libavcodec/jpegxl_parse.c | 520 ++++++ libavcodec/jpegxl_parse.h | 72 + libavcodec/jpegxl_parser.c | 1455 +++++++++++++++++ libavcodec/libjxldec.c | 36 +- libavcodec/parsers.c | 1 + libavcodec/version.h | 2 +- libavformat/Makefile | 6 +- libavformat/img2dec.c | 4 +- libavformat/jpegxl_anim_dec.c | 115 +- .../{jpegxl_probe.h => jpegxl_parse.c} | 21 +- libavformat/jpegxl_probe.c | 412 ----- libavformat/version.h | 2 +- tests/Makefile | 1 + tests/fate/jxl.mak | 16 + tests/ref/fate/jxl-anim-demux-belgium | 6 + tests/ref/fate/jxl-anim-demux-icos4d | 6 + tests/ref/fate/jxl-anim-demux-lenna256 | 6 + tests/ref/fate/jxl-anim-demux-newton | 6 + 20 files changed, 2238 insertions(+), 546 deletions(-) create mode 100644 libavcodec/jpegxl.h create mode 100644 libavcodec/jpegxl_parse.c create mode 100644 libavcodec/jpegxl_parse.h create mode 100644 libavcodec/jpegxl_parser.c rename libavformat/{jpegxl_probe.h => jpegxl_parse.c} (55%) delete mode 100644 libavformat/jpegxl_probe.c create mode 100644 tests/fate/jxl.mak create mode 100644 tests/ref/fate/jxl-anim-demux-belgium create mode 100644 tests/ref/fate/jxl-anim-demux-icos4d create mode 100644 tests/ref/fate/jxl-anim-demux-lenna256 create mode 100644 tests/ref/fate/jxl-anim-demux-newton