From: James Almer <jamrial@gmail.com> To: ffmpeg-devel@ffmpeg.org Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Add support for AVIF muxing Date: Thu, 3 Mar 2022 16:46:30 -0300 Message-ID: <31f915b6-2a02-545c-eb88-d2b764e7a1d1@gmail.com> (raw) In-Reply-To: <CAOJaEP+1ZN0CDr8scwT19Bg3jbJkDHToWNp5pHX5eK3zTDQC8Q@mail.gmail.com> On 3/3/2022 4:20 PM, Vignesh Venkatasubramanian wrote: > On Thu, Mar 3, 2022 at 7:36 AM James Almer <jamrial@gmail.com> 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 <vigneshv@google.com> >>> --- >>> 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".
next prev parent reply other threads:[~2022-03-03 19:46 UTC|newest] Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-02-17 5:51 [FFmpeg-devel] [PATCH 1/3] avcodec/libaomenc: Add parameter for avif single image encoding Vignesh Venkatasubramanian 2022-02-17 5:51 ` [FFmpeg-devel] [PATCH 2/3] avformat/av1: Add a parameter to av1c to omit seq header Vignesh Venkatasubramanian 2022-03-02 22:57 ` James Almer 2022-03-02 23:22 ` Vignesh Venkatasubramanian 2022-03-02 23:23 ` Vignesh Venkatasubramanian 2022-03-02 23:27 ` James Almer 2022-03-28 20:48 ` Vignesh Venkatasubramanian 2022-04-13 20:40 ` Vignesh Venkatasubramanian 2022-05-02 21:36 ` Vignesh Venkatasubramanian 2022-02-17 5:51 ` [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Add support for AVIF muxing Vignesh Venkatasubramanian 2022-02-22 18:40 ` Vignesh Venkatasubramanian 2022-02-22 20:03 ` James Almer 2022-02-22 21:37 ` Vignesh Venkatasubramanian 2022-02-22 21:38 ` Vignesh Venkatasubramanian 2022-02-22 21:43 ` Vignesh Venkatasubramanian 2022-02-24 17:34 ` Vignesh Venkatasubramanian 2022-03-01 16:49 ` Vignesh Venkatasubramanian 2022-03-03 15:36 ` James Almer 2022-03-03 19:16 ` Vignesh Venkatasubramanian 2022-03-04 11:24 ` James Almer 2022-03-04 17:52 ` Vignesh Venkatasubramanian 2022-03-04 17:54 ` Vignesh Venkatasubramanian 2022-03-09 19:34 ` Vignesh Venkatasubramanian 2022-03-10 16:01 ` Andreas Rheinhardt 2022-03-10 18:12 ` Vignesh Venkatasubramanian 2022-03-21 20:46 ` Andreas Rheinhardt 2022-03-22 16:45 ` Vignesh Venkatasubramanian 2022-03-22 16:46 ` Vignesh Venkatasubramanian 2022-03-28 17:06 ` Vignesh Venkatasubramanian 2022-03-28 20:49 ` Vignesh Venkatasubramanian 2022-04-07 18:25 ` Vignesh Venkatasubramanian 2022-04-13 17:21 ` James Zern 2022-04-13 20:40 ` Vignesh Venkatasubramanian 2022-04-13 21:01 ` Andreas Rheinhardt 2022-04-13 21:33 ` Vignesh Venkatasubramanian 2022-05-02 17:28 ` James Zern 2022-05-02 21:34 ` Vignesh Venkatasubramanian 2022-05-02 21:35 ` Vignesh Venkatasubramanian 2022-05-03 23:39 ` James Zern 2022-05-04 2:46 ` "zhilizhao(赵志立)" 2022-05-04 16:45 ` Vignesh Venkatasubramanian 2022-05-04 16:48 ` Vignesh Venkatasubramanian 2022-05-04 17:10 ` "zhilizhao(赵志立)" 2022-05-04 17:14 ` Vignesh Venkatasubramanian 2022-05-04 17:15 ` Vignesh Venkatasubramanian 2022-05-11 16:54 ` Vignesh Venkatasubramanian 2022-05-11 17:25 ` Gyan Doshi 2022-05-12 10:26 ` Gyan Doshi 2022-05-12 16:23 ` Vignesh Venkatasubramanian 2022-05-12 16:23 ` Vignesh Venkatasubramanian 2022-05-13 7:22 ` Gyan Doshi 2022-04-13 20:41 ` Vignesh Venkatasubramanian 2022-04-13 21:04 ` Andreas Rheinhardt 2022-04-13 21:35 ` Vignesh Venkatasubramanian 2022-04-21 16:38 ` Vignesh Venkatasubramanian 2022-04-29 16:03 ` Vignesh Venkatasubramanian 2022-03-10 18:14 ` Vignesh Venkatasubramanian 2022-03-15 15:59 ` Vignesh Venkatasubramanian 2022-03-21 17:07 ` Vignesh Venkatasubramanian 2022-03-03 19:20 ` Vignesh Venkatasubramanian 2022-03-03 19:46 ` James Almer [this message] 2022-03-03 19:57 ` Vignesh Venkatasubramanian 2022-02-17 18:09 ` [FFmpeg-devel] [PATCH 1/3] avcodec/libaomenc: Add parameter for avif single image encoding James Zern 2022-02-17 19:33 ` Vignesh Venkatasubramanian 2022-02-17 20:59 ` James Almer 2022-02-17 21:18 ` [FFmpeg-devel] [PATCH] " Vignesh Venkatasubramanian 2022-02-17 21:20 ` [FFmpeg-devel] [PATCH 1/3] " Vignesh Venkatasubramanian 2022-02-22 21:36 ` Vignesh Venkatasubramanian 2022-03-28 20:47 ` Vignesh Venkatasubramanian 2022-04-13 20:39 ` Vignesh Venkatasubramanian 2022-05-02 21:37 ` Vignesh Venkatasubramanian
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=31f915b6-2a02-545c-eb88-d2b764e7a1d1@gmail.com \ --to=jamrial@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git