From patchwork Fri Jun 21 10:43:15 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thilo Borgmann X-Patchwork-Id: 35145 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:ae71:0:b0:482:c625:d099 with SMTP id w17csp431703vqz; Fri, 21 Jun 2024 03:43:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWfQoUT+3QeXfWvmdzhCTZ6Z7Ipr6Tin+jEE07crMjpVXnCufLOWBZGWQ2d/d75RRMu7tTwzTdp2wmQKxv3Xx8vncQduB0Zhx/5Sw== X-Google-Smtp-Source: AGHT+IG+o8Qy6doEvCGcntVhqKMNGqq2JeK8+K+nkeZqZJInyMjsDOQpk6GTbClH+EICpnBiUpDc X-Received: by 2002:a17:907:86a6:b0:a6f:1f6d:eb70 with SMTP id a640c23a62f3a-a6fab7d6abcmr546727566b.5.1718966617033; Fri, 21 Jun 2024 03:43:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1718966617; cv=none; d=google.com; s=arc-20160816; b=I7sYPo+menLwSJf5MXvDxLwHcUCyo7Rj3SExm1KBxRwGkvxD7Eljikj3vcoJQpr9Hr w+6vTenacUpDpQyD2dTEpz7U6KJXPuBYAXPcQOUVgGQkCs9PxvHzqd3eUAk15QA/6gfq R7Jwh259xRVIEGWoIm6DG2CIPciahRIRM6ieZKuLCfHwqPRSq7jRMdsEqHxGY/NIjLZv xo5wcmnZN69WvO02FVwIW2LMTqJZBSUazPm+uof03llNa1Q8gZ9gKRK7KFn34cC3FIdr VJ3I6P1V1Se030Wy6qjZaMsiyjhCZYNywJByUgR3oZiNxlQnf8+8iTdpizNs+nKp+Q0I t3SA== 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:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to :delivered-to; bh=kJDSbdUvNGaBJF1Gf7JFqipDJank9RKEzBiVbmdk9bo=; fh=uZWItAgYCSLFS5Zum7Ip+PilGyWYOeCwun+We0BTHAs=; b=bdQQyiW02QJXEcMib3GmkpdW6/388RN5hq2z10dFKhVCyTGmdb/8XxvU9EE9y8/l5/ zwAPZ8LEt6rY9x1jIW9HjzbYChzeCDWkk8M4aiMsLhzVEXLDlOJYNZKpbfj+hf5OMGPd N1bA/lQrlxgaomMd9XKv2i5gKMyCb8ZuyCFmrBIe4FoqUzr929dnuTtLMmWyB1WrWK2R kPm2QklJGoKRBqy3PsLQN+3ep+FI/IElUd6LcIQtP9yfwq+yyNCmVG55SK9iRhDAfSgd K+BTM+NIFwJ5jB9p8Y1vvnuWtTWEP04NX8LuLHWpnOHw8IbJ1ytZdG2JFtoTzbXQVGvT K+lQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6fcf5aece8si72532466b.995.2024.06.21.03.43.36; Fri, 21 Jun 2024 03:43:37 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6AE9C68CFA2; Fri, 21 Jun 2024 13:43:33 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from shout01.mail.de (shout01.mail.de [62.201.172.24]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4538B68D7B9 for ; Fri, 21 Jun 2024 13:43:25 +0300 (EEST) Received: from postfix03.mail.de (postfix03.bt.mail.de [10.0.121.127]) by shout01.mail.de (Postfix) with ESMTP id 473D6240E43 for ; Fri, 21 Jun 2024 12:43:24 +0200 (CEST) Received: from smtp01.mail.de (smtp04.bt.mail.de [10.0.121.214]) by postfix03.mail.de (Postfix) with ESMTP id 2DA6780209 for ; Fri, 21 Jun 2024 12:43:24 +0200 (CEST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp01.mail.de (Postfix) with ESMTPSA id EFC7D240A68 for ; Fri, 21 Jun 2024 12:43:23 +0200 (CEST) To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 Jun 2024 12:43:15 +0200 Message-Id: <20240621104323.92453-1-thilo.borgmann@mail.de> MIME-Version: 1.0 X-purgate: clean X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate-type: clean X-purgate-Ad: Categorized by eleven eXpurgate (R) http://www.eleven.de X-purgate: This mail is considered clean (visit http://www.eleven.de for further information) X-purgate: clean X-purgate-size: 2706 X-purgate-ID: 154282::1718966604-E17EB338-F24F3784/0/0 Subject: [FFmpeg-devel] [PATCH v13 0/8] [WIP] webp: add support for animated WebP decoding 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: , X-Patchwork-Original-From: Thilo Borgmann via ffmpeg-devel From: Thilo Borgmann Reply-To: FFmpeg development discussions and patches Cc: Thilo Borgmann Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ht23rVa+P5M6 Marked WIP because we'd want to introduce private bsf's first; review welcome before that though v13 Switched to new ProgressFrame API Support for pixel format changes in animations Propagate MIN_DELAY in case of invalid delay in animations Added more tests for animations with pixel format changes v12 VP8 decoder decoupled again The whole animated sequence goes into one packet The (currently public) bitstream filter splits animations up into non-conformant packets Now with XMP metadata support (as string, like MOV) Patch 5/8 is still there for making changes in lavc/webp reviewable but shall be stashed when pushing. -Thilo Josef Zlomek (2): libavcodec/webp: add support for animated WebP libavformat/webp: add WebP demuxer Thilo Borgmann via ffmpeg-devel (6): avcodec/webp: remove unused definitions avcodec/webp: separate VP8 decoding avcodec/bsf: Add awebp2webp bitstream filter avcodec/webp: make init_canvas_frame static fate: add test for animated WebP avcodec/webp: export XMP metadata Changelog | 2 + configure | 1 + doc/demuxers.texi | 28 + libavcodec/bitstream_filters.c | 1 + libavcodec/bsf/Makefile | 1 + libavcodec/bsf/awebp2webp.c | 353 +++++++ libavcodec/codec_desc.c | 3 +- libavcodec/webp.c | 983 ++++++++++++++++-- libavformat/Makefile | 1 + libavformat/allformats.c | 1 + libavformat/webpdec.c | 384 +++++++ tests/fate/image.mak | 9 + tests/ref/fate/exif-image-webp | 4 +- tests/ref/fate/webp-anim | 22 + tests/ref/fate/webp-chfmt1 | 23 + tests/ref/fate/webp-chfmt2 | 106 ++ tests/ref/fate/webp-rgb-lena-lossless | 2 +- tests/ref/fate/webp-rgb-lena-lossless-rgb24 | 2 +- tests/ref/fate/webp-rgb-lossless | 2 +- .../fate/webp-rgb-lossless-palette-predictor | 2 +- tests/ref/fate/webp-rgb-lossy-q80 | 2 +- tests/ref/fate/webp-rgba-lossless | 2 +- tests/ref/fate/webp-rgba-lossy-q80 | 2 +- 23 files changed, 1855 insertions(+), 81 deletions(-) create mode 100644 libavcodec/bsf/awebp2webp.c create mode 100644 libavformat/webpdec.c create mode 100644 tests/ref/fate/webp-anim create mode 100644 tests/ref/fate/webp-chfmt1 create mode 100644 tests/ref/fate/webp-chfmt2