Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Vignesh Venkatasubramanian <vigneshv-at-google.com@ffmpeg.org>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH 3/3] avformat/movenc: Add support for AVIF muxing
Date: Thu, 3 Mar 2022 11:20:07 -0800
Message-ID: <CAOJaEP+1ZN0CDr8scwT19Bg3jbJkDHToWNp5pHX5eK3zTDQC8Q@mail.gmail.com> (raw)
In-Reply-To: <53482b5b-9293-65c5-a9e7-88f28d30353d@gmail.com>

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.

Please take another look, thanks!

[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".



-- 
Vignesh
_______________________________________________
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".

  parent reply	other threads:[~2022-03-03 19:20 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 [this message]
2022-03-03 19:46               ` James Almer
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=CAOJaEP+1ZN0CDr8scwT19Bg3jbJkDHToWNp5pHX5eK3zTDQC8Q@mail.gmail.com \
    --to=vigneshv-at-google.com@ffmpeg.org \
    --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