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 D73BF40956 for ; Thu, 3 Mar 2022 19:46:44 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC48768AF5C; Thu, 3 Mar 2022 21:46:41 +0200 (EET) Received: from mail-ot1-f43.google.com (mail-ot1-f43.google.com [209.85.210.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 997AA68A6F6 for ; Thu, 3 Mar 2022 21:46:35 +0200 (EET) Received: by mail-ot1-f43.google.com with SMTP id p12-20020a05683019cc00b005af1442c9e9so5494123otp.13 for ; Thu, 03 Mar 2022 11:46:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:date:mime-version:user-agent:content-language:to :references:from:subject:in-reply-to:content-transfer-encoding; bh=9a6t6vmLasgB/8u0FfLF0gziNlBW5X+f4mP6Z93QO0U=; b=DYG5WL08RKc8E4W80C6HfofHlae+vHXnBzIHh1bmaXprJG3GIBGeHecvtywhAdh2Pa htqn+kUfaDy22FSBFjnppSRIZhf9qt19kNOk86lI9cOVAzzoCyEyEL7qv+T1QUxWOk+M md33v8orldNW4CgexPu61qIOAUUx1kinaCUBzjnEpkDJZdsOF+vbEpqV8cRe4omgEyEa /J7qEhVttp619fc6ZXqPD7A/c8gHknh7BRCAc94kNT9plUTZpCbSNvDt+skShULMCWKn Yr2BlrwDAuVtiNSNGRgGICt9qlTZTfJpkK39nFLeFMbAdueDus40HS2fKXcSFCICjWYC cXpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent :content-language:to:references:from:subject:in-reply-to :content-transfer-encoding; bh=9a6t6vmLasgB/8u0FfLF0gziNlBW5X+f4mP6Z93QO0U=; b=WnJe1t4GnYGcaMu5MlRZnCI9m5D9gj0Ir9JlUonzO7Hpp6absUw6kTNocyU3l7eCDj vhFDrXZiyThv40GnxgRUnWxUfWWNdtdQdfkoA6P/NTl4UMuxed1lp2SI7wsm1pIwHqEa A9ay2Dk9y3uJQLPXC4jdj+LN783JiQrRXsAADaseNtI3vZXM/VHPD5J4HmhPLd7GfcZi Fe3bXMCD1VgtjxLE1XqI8PARtVU78P40N9TAoQynuNK9Kn77V7NhhecGnCp8YiIMxybR XrqvGg0Mc3pNoVohqnjq1mra5FWK7o7y7tf5OcmW2y+wvOYloeiUhEqknEi1kjg428fo xaWA== X-Gm-Message-State: AOAM532ybRkh0Te5ZelEMmTYVkJLS8vDf/2wlnf8xMK6/gV+Ea1zCfUj 2AVr/tO/nC9KCgN3PKhF0M8U8SGNer0= X-Google-Smtp-Source: ABdhPJzgtXHWhv6JYGSWY6M3h4L1/VnvfIN77r4aYV47lqBC9xRx1CXWJeQjL5nIp9oWf+JgtKWmkg== X-Received: by 2002:a05:6830:19e1:b0:5ad:594a:8225 with SMTP id t1-20020a05683019e100b005ad594a8225mr20137151ott.187.1646336792693; Thu, 03 Mar 2022 11:46:32 -0800 (PST) Received: from [192.168.0.10] ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id b31-20020a056870471f00b000d75351d57asm1555938oaq.4.2022.03.03.11.46.31 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 03 Mar 2022 11:46:32 -0800 (PST) Message-ID: <31f915b6-2a02-545c-eb88-d2b764e7a1d1@gmail.com> Date: Thu, 3 Mar 2022 16:46:30 -0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220222214318.3053157-1-vigneshv@google.com> <53482b5b-9293-65c5-a9e7-88f28d30353d@gmail.com> From: James Almer In-Reply-To: Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Add support for AVIF muxing 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-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 3/3/2022 4:20 PM, Vignesh Venkatasubramanian wrote: > On Thu, Mar 3, 2022 at 7:36 AM James Almer wrote: >> >> On 2/22/2022 6:43 PM, Vignesh Venkatasubramanian wrote: >>> Add an AVIF muxer by re-using the existing the mov/mp4 muxer. >>> >>> AVIF Specifiation: https://aomediacodec.github.io/av1-avif >>> >>> Sample usage for still image: >>> ffmpeg -i image.png -c:v libaom-av1 -avif-image 1 image.avif >>> >>> Sample usage for animated AVIF image: >>> ffmpeg -i video.mp4 animated.avif >>> >>> We can re-use any of the AV1 encoding options that will make >>> sense for image encoding (like bitrate, tiles, encoding speed, >>> etc). >>> >>> The files generated by this muxer has been verified to be valid >>> AVIF files by the following: >>> 1) Displays on Chrome (both still and animated images). >>> 2) Displays on Firefox (only still images, firefox does not support >>> animated AVIF yet). >>> 3) Verfied to be valid by Compliance Warden: >>> https://github.com/gpac/ComplianceWarden >>> >>> Fixes the encoder/muxer part of Trac Ticket #7621 >>> >>> Signed-off-by: Vignesh Venkatasubramanian >>> --- >>> configure | 1 + >>> libavformat/allformats.c | 1 + >>> libavformat/movenc.c | 300 +++++++++++++++++++++++++++++++++++---- >>> libavformat/movenc.h | 5 + >>> 4 files changed, 282 insertions(+), 25 deletions(-) >> >> With a single frame i get no errors in that compliance tool, but when i >> encode an animated AVIF i get the following: >> >> [heif][Rule #12] Error: CodingConstraintsBox ('ccst') shall be present once >> [heif][Rule #28] Error: Wrong arity for boxes { ccst } in parents { avc1 >> avc2 avc3 avc4 hev1 hev2 hvc1 hvc2 av01 }: expected in range [1-1], found 0 >> [heif][Rule #31] Error: 'msf1' brand: this file shall conform to HEIF >> (section 7.2) >> [heif][Rule #31] Error: 'msf1' brand: 'iso8' shall be present among the >> compatible brands array >> [heif][Rule #32] Error: 'mif1' brand: this file shall conform to HEIF >> section 6, check the other errors for details >> [heif][Rule #33] Error: 'msf1' brand: this file shall conform to HEIF >> section 7, check the other errors for details >> >> All but one of these should be solved by writing a ccst box after the >> av1C box in the sample entry. The missing one should be solved by >> writing the iso8 compatible brand. >> >> The ccst box looks like it would need some bitstream information, so >> either you parse the packets to get it, or just hardcode sane defaults, >> considering it's used as a hint and it's not required for demuxing. > > I recently fixed these errors in libavif [1][2] (the reference AVIF > encoder). I was hoping to have a follow-up patch since i already > uploaded the existing patches. Since you have pointed this out now, i > have included the fix in this patch itself. The new patch will now > write the iso8 compatible brand and the ccst box with sane default > values. The file produced is now identical to the file produced by > libavif in terms of box structure. > > Also, notice that the compliance tool still shows the following error > for animated avif: > > [avif][Rule #3] Warning: [ItemId=1] still_picture flag set to 0 > [avif][Rule #4] Warning: [ItemId=1] reduced_still_picture_header flag set to 0 > > I believe these are incorrect since it does not make sense to set > these flag to 0 for animated avif sequences. These warnings also show > up with files produced by libavif. So it is okay to ignore them. I > will file an issue with the compliance tool separately. The compliance tool uses the 1.0.0 revision of the spec, and what you mentioned was removed in the current unfinished draft: https://github.com/AOMediaCodec/av1-avif/pull/112 I assume the tool will be updated once a new revision is released, so yes, we can ignore them. > > Please take another look, thanks! I noticed that using -still-picture 1 and passing more than one frame to the libaom encoder will succeed, despite you setting enccfg.g_limit to 1, and encode every frame as key frames. I'd expect the encoder would error out if you try to feed it more frames. Is it a libaom bug? > > [1] https://github.com/AOMediaCodec/libavif/pull/855 > [2] https://github.com/AOMediaCodec/libavif/pull/856 >> _______________________________________________ >> 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". > > > _______________________________________________ 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".