Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: Michael Niedermayer <michael@niedermayer.cc>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] [PATCH] all: use designated initializers for AVOption.unit
Date: Sun, 11 Feb 2024 21:39:17 +0100
Message-ID: <20240211203917.GV6420@pb2> (raw)
In-Reply-To: <20240211170831.1114-1-anton@khirnov.net>


[-- Attachment #1.1: Type: text/plain, Size: 24913 bytes --]

On Sun, Feb 11, 2024 at 06:08:28PM +0100, Anton Khirnov wrote:
> Makes it robust against adding fields before it, which will be useful in
> following commits.
> 
> Majority of the patch generated by the following Coccinelle script:
> 
> @@
> typedef AVOption;
> identifier arr_name;
> initializer list il;
> initializer list[8] il1;
> expression tail;
> @@
> AVOption arr_name[] = { il, { il1,
> - tail
> + .unit = tail
> }, ...  };
> 
> with some manual changes, as the script:
> * has trouble with options defined inside macros
> * sometimes does not handle options under an #else branch
> * sometimes swallows whitespace
> ---
>  fftools/ffmpeg_mux_init.c              |   2 +-
>  libavcodec/aacdec_template.c           |  16 +-
>  libavcodec/aacenc.c                    |   8 +-
>  libavcodec/ac3dec_float.c              |   2 +-
>  libavcodec/ac3enc.c                    |  58 +--
>  libavcodec/amfenc_av1.c                | 154 ++++----
>  libavcodec/amfenc_h264.c               | 150 +++----
>  libavcodec/amfenc_hevc.c               | 136 +++----
>  libavcodec/apedec.c                    |   4 +-
>  libavcodec/audiotoolboxenc.c           |  12 +-
>  libavcodec/avdct.c                     |  44 +--
>  libavcodec/bsf/av1_metadata.c          |   4 +-
>  libavcodec/bsf/dump_extradata.c        |   2 +-
>  libavcodec/bsf/dv_error_marker.c       |  38 +-
>  libavcodec/bsf/filter_units.c          |  20 +-
>  libavcodec/bsf/h264_metadata.c         |   4 +-
>  libavcodec/bsf/h265_metadata.c         |   2 +-
>  libavcodec/bsf/hapqa_extract.c         |   6 +-
>  libavcodec/bsf/prores_metadata.c       |  42 +-
>  libavcodec/bsf/remove_extradata.c      |   2 +-
>  libavcodec/bsf/vp9_metadata.c          |   4 +-
>  libavcodec/cbs_bsf.h                   |   4 +-
>  libavcodec/ccaption_dec.c              |   8 +-
>  libavcodec/cfhdenc.c                   |  28 +-
>  libavcodec/cuviddec.c                  |   8 +-
>  libavcodec/dcadec.c                    |   6 +-
>  libavcodec/dnxhdenc.c                  |  14 +-
>  libavcodec/dolby_e.c                   |   8 +-
>  libavcodec/dxvenc.c                    |   4 +-
>  libavcodec/exr.c                       |  34 +-
>  libavcodec/exrenc.c                    |  16 +-
>  libavcodec/ffv1enc.c                   |  10 +-
>  libavcodec/flacenc.c                   |  36 +-
>  libavcodec/gif.c                       |   6 +-
>  libavcodec/hapenc.c                    |  14 +-
>  libavcodec/huffyuvenc.c                |   8 +-
>  libavcodec/j2kenc.c                    |  24 +-
>  libavcodec/jpeglsenc.c                 |   8 +-
>  libavcodec/libaomenc.c                 |  28 +-
>  libavcodec/libaribb24.c                |   6 +-
>  libavcodec/libaribcaption.c            |   4 +-
>  libavcodec/libfdk-aacdec.c             |  20 +-
>  libavcodec/libfdk-aacenc.c             |  10 +-
>  libavcodec/libopenh264enc.c            |  28 +-
>  libavcodec/libopenjpegenc.c            |  36 +-
>  libavcodec/libopusenc.c                |  18 +-
>  libavcodec/libsvtav1.c                 |  14 +-
>  libavcodec/libtwolame.c                |  12 +-
>  libavcodec/libvpxenc.c                 |  60 +--
>  libavcodec/libwebpenc_common.c         |  16 +-
>  libavcodec/libx264.c                   |  70 ++--
>  libavcodec/libxavs.c                   |  22 +-
>  libavcodec/libxeve.c                   |  34 +-
>  libavcodec/libxvid.c                   |   8 +-
>  libavcodec/libzvbi-teletextdec.c       |   8 +-
>  libavcodec/ljpegenc.c                  |   8 +-
>  libavcodec/magicyuvenc.c               |   8 +-
>  libavcodec/mediacodecenc.c             | 226 +++++------
>  libavcodec/mfenc.c                     |  34 +-
>  libavcodec/mjpegenc.c                  |   6 +-
>  libavcodec/mlpenc.c                    |  12 +-
>  libavcodec/mpeg12enc.c                 |  24 +-
>  libavcodec/mpegvideoenc.h              |  54 +--
>  libavcodec/nvenc_av1.c                 | 142 +++----
>  libavcodec/nvenc_h264.c                | 208 +++++-----
>  libavcodec/nvenc_hevc.c                | 182 ++++-----
>  libavcodec/omx.c                       |   8 +-
>  libavcodec/options.c                   |   2 +-
>  libavcodec/options_table.h             | 526 ++++++++++++-------------
>  libavcodec/opusenc.c                   |   4 +-
>  libavcodec/pngenc.c                    |  14 +-
>  libavcodec/profiles.h                  |   2 +-
>  libavcodec/proresenc_kostya.c          |  30 +-
>  libavcodec/qsvdec.c                    |  24 +-
>  libavcodec/qsvenc.h                    |  54 +--
>  libavcodec/qsvenc_av1.c                |   6 +-
>  libavcodec/qsvenc_h264.c               |  38 +-
>  libavcodec/qsvenc_hevc.c               |  42 +-
>  libavcodec/qsvenc_mpeg2.c              |  10 +-
>  libavcodec/qsvenc_vp9.c                |  12 +-
>  libavcodec/s302m.c                     |  10 +-
>  libavcodec/snowenc.c                   |  16 +-
>  libavcodec/svq1enc.c                   |   8 +-
>  libavcodec/tiffenc.c                   |  10 +-
>  libavcodec/utvideoenc.c                |  10 +-
>  libavcodec/vaapi_encode.h              |   6 +-
>  libavcodec/vaapi_encode_av1.c          |  14 +-
>  libavcodec/vaapi_encode_h264.c         |  28 +-
>  libavcodec/vaapi_encode_h265.c         |  20 +-
>  libavcodec/vaapi_encode_mpeg2.c        |   8 +-
>  libavcodec/vbnenc.c                    |   8 +-
>  libavcodec/vc2enc.c                    |  26 +-
>  libavcodec/videotoolboxenc.c           |  68 ++--
>  libavdevice/bktr.c                     |  14 +-
>  libavdevice/caca.c                     |  10 +-
>  libavdevice/decklink_dec_c.c           | 104 ++---
>  libavdevice/decklink_enc_c.c           |  48 +--
>  libavdevice/iec61883.c                 |   8 +-
>  libavdevice/libcdio.c                  |  12 +-
>  libavdevice/openal-dec.c               |   6 +-
>  libavdevice/v4l2.c                     |  22 +-
>  libavdevice/xcbgrab.c                  |   4 +-
>  libavfilter/af_aap.c                   |  20 +-
>  libavfilter/af_acrossover.c            |  30 +-
>  libavfilter/af_acrusher.c              |   6 +-
>  libavfilter/af_adeclick.c              |  24 +-
>  libavfilter/af_adenorm.c               |  10 +-
>  libavfilter/af_adynamicequalizer.c     |  48 +--
>  libavfilter/af_aemphasis.c             |  26 +-
>  libavfilter/af_afade.c                 | 116 +++---
>  libavfilter/af_afftdn.c                |  62 +--
>  libavfilter/af_afir.c                  |  34 +-
>  libavfilter/af_afwtdn.c                |  16 +-
>  libavfilter/af_agate.c                 |  18 +-
>  libavfilter/af_aiir.c                  |  40 +-
>  libavfilter/af_amix.c                  |   8 +-
>  libavfilter/af_anequalizer.c           |   6 +-
>  libavfilter/af_anlmdn.c                |  10 +-
>  libavfilter/af_anlms.c                 |  20 +-
>  libavfilter/af_aphaser.c               |  10 +-
>  libavfilter/af_apulsator.c             |  20 +-
>  libavfilter/af_arls.c                  |  20 +-
>  libavfilter/af_asoftclip.c             |  20 +-
>  libavfilter/af_aspectralstats.c        |  32 +-
>  libavfilter/af_astats.c                |  60 +--
>  libavfilter/af_axcorrelate.c           |   8 +-
>  libavfilter/af_biquads.c               |  46 +--
>  libavfilter/af_bs2b.c                  |   8 +-
>  libavfilter/af_deesser.c               |   8 +-
>  libavfilter/af_firequalizer.c          |  34 +-
>  libavfilter/af_flanger.c               |  16 +-
>  libavfilter/af_haas.c                  |  10 +-
>  libavfilter/af_hdcd.c                  |  20 +-
>  libavfilter/af_headphone.c             |  12 +-
>  libavfilter/af_loudnorm.c              |   8 +-
>  libavfilter/af_rubberband.c            |  56 +--
>  libavfilter/af_sidechaincompress.c     |  18 +-
>  libavfilter/af_silenceremove.c         |  28 +-
>  libavfilter/af_sofalizer.c             |   6 +-
>  libavfilter/af_stereotools.c           |  34 +-
>  libavfilter/af_surround.c              |   6 +-
>  libavfilter/af_volume.c                |  20 +-
>  libavfilter/asrc_afirsrc.c             |  58 +--
>  libavfilter/asrc_anoisesrc.c           |  18 +-
>  libavfilter/avf_abitscope.c            |   8 +-
>  libavfilter/avf_ahistogram.c           |  36 +-
>  libavfilter/avf_avectorscope.c         |  38 +-
>  libavfilter/avf_showcqt.c              |  16 +-
>  libavfilter/avf_showcwt.c              |  62 +--
>  libavfilter/avf_showfreqs.c            |  40 +-
>  libavfilter/avf_showspectrum.c         | 148 +++----
>  libavfilter/avf_showvolume.c           |  18 +-
>  libavfilter/avf_showwaves.c            |   2 +-
>  libavfilter/avfilter.c                 |   2 +-
>  libavfilter/avfiltergraph.c            |   4 +-
>  libavfilter/buffersrc.c                |  48 +--
>  libavfilter/dnn/dnn_backend_openvino.c |   8 +-
>  libavfilter/f_bench.c                  |   6 +-
>  libavfilter/f_drawgraph.c              |  20 +-
>  libavfilter/f_ebur128.c                |  36 +-
>  libavfilter/f_graphmonitor.c           |  56 +--
>  libavfilter/f_interleave.c             |   8 +-
>  libavfilter/f_metadata.c               |  28 +-
>  libavfilter/f_perms.c                  |  12 +-
>  libavfilter/f_sidedata.c               |  50 +--
>  libavfilter/framesync.c                |  14 +-
>  libavfilter/qrencode.c                 |  18 +-
>  libavfilter/vaf_spectrumsynth.c        |  22 +-
>  libavfilter/vf_atadenoise.c            |   6 +-
>  libavfilter/vf_blend.c                 |  94 ++---
>  libavfilter/vf_blend_vulkan.c          |  14 +-
>  libavfilter/vf_bm3d.c                  |   6 +-
>  libavfilter/vf_bwdif.c                 |   8 +-
>  libavfilter/vf_chromanr.c              |   6 +-
>  libavfilter/vf_chromashift.c           |  12 +-
>  libavfilter/vf_ciescope.c              |  68 ++--
>  libavfilter/vf_codecview.c             |  12 +-
>  libavfilter/vf_colorchannelmixer.c     |  16 +-
>  libavfilter/vf_colorcorrect.c          |  10 +-
>  libavfilter/vf_colorlevels.c           |  16 +-
>  libavfilter/vf_colormap.c              |  12 +-
>  libavfilter/vf_colorspace.c            |  28 +-
>  libavfilter/vf_colorspace_cuda.c       |  10 +-
>  libavfilter/vf_convolution.c           |  14 +-
>  libavfilter/vf_convolve.c              |  18 +-
>  libavfilter/vf_cover_rect.c            |   6 +-
>  libavfilter/vf_cropdetect.c            |   6 +-
>  libavfilter/vf_curves.c                |  30 +-
>  libavfilter/vf_datascope.c             |  14 +-
>  libavfilter/vf_deblock.c               |   6 +-
>  libavfilter/vf_dedot.c                 |   6 +-
>  libavfilter/vf_deflicker.c             |  18 +-
>  libavfilter/vf_deinterlace_vaapi.c     |  18 +-
>  libavfilter/vf_derain.c                |  10 +-
>  libavfilter/vf_deshake.c               |  16 +-
>  libavfilter/vf_despill.c               |   6 +-
>  libavfilter/vf_detelecine.c            |  10 +-
>  libavfilter/vf_displace.c              |  10 +-
>  libavfilter/vf_dnn_classify.c          |   4 +-
>  libavfilter/vf_dnn_detect.c            |  16 +-
>  libavfilter/vf_dnn_processing.c        |   6 +-
>  libavfilter/vf_drawtext.c              |  20 +-
>  libavfilter/vf_edgedetect.c            |  22 +-
>  libavfilter/vf_entropy.c               |   6 +-
>  libavfilter/vf_eq.c                    |   2 +-
>  libavfilter/vf_estdif.c                |  10 +-
>  libavfilter/vf_extractplanes.c         |  16 +-
>  libavfilter/vf_fade.c                  |   4 +-
>  libavfilter/vf_fftdnoiz.c              |   6 +-
>  libavfilter/vf_fftfilt.c               |   2 +-
>  libavfilter/vf_field.c                 |   6 +-
>  libavfilter/vf_fieldhint.c             |   8 +-
>  libavfilter/vf_fieldmatch.c            |  46 +--
>  libavfilter/vf_fieldorder.c            |   2 +-
>  libavfilter/vf_fillborders.c           |  16 +-
>  libavfilter/vf_fps.c                   |  18 +-
>  libavfilter/vf_framerate.c             |   6 +-
>  libavfilter/vf_geq.c                   |  12 +-
>  libavfilter/vf_guided.c                |  12 +-
>  libavfilter/vf_histeq.c                |   4 +-
>  libavfilter/vf_histogram.c             |  54 +--
>  libavfilter/vf_huesaturation.c         |  16 +-
>  libavfilter/vf_hwmap.c                 |  10 +-
>  libavfilter/vf_iccgen.c                |  58 +--
>  libavfilter/vf_il.c                    |  42 +-
>  libavfilter/vf_lenscorrection.c        |   6 +-
>  libavfilter/vf_lensfun.c               |  42 +-
>  libavfilter/vf_libplacebo.c            | 202 +++++-----
>  libavfilter/vf_lut3d.c                 |  30 +-
>  libavfilter/vf_maskedthreshold.c       |   6 +-
>  libavfilter/vf_mcdeint.c               |   4 +-
>  libavfilter/vf_mestimate.c             |   4 +-
>  libavfilter/vf_minterpolate.c          |  12 +-
>  libavfilter/vf_mix.c                   |   8 +-
>  libavfilter/vf_morpho.c                |  22 +-
>  libavfilter/vf_negate.c                |  16 +-
>  libavfilter/vf_nnedi.c                 |  76 ++--
>  libavfilter/vf_noise.c                 |  12 +-
>  libavfilter/vf_overlay.c               |  14 +-
>  libavfilter/vf_overlay_cuda.c          |  10 +-
>  libavfilter/vf_overlay_qsv.c           |   8 +-
>  libavfilter/vf_overlay_vaapi.c         |   8 +-
>  libavfilter/vf_pad.c                   |   2 +-
>  libavfilter/vf_palettegen.c            |   8 +-
>  libavfilter/vf_paletteuse.c            |  22 +-
>  libavfilter/vf_perspective.c           |  14 +-
>  libavfilter/vf_phase.c                 |   4 +-
>  libavfilter/vf_pixelize.c              |  10 +-
>  libavfilter/vf_pp7.c                   |   8 +-
>  libavfilter/vf_pseudocolor.c           |  48 +--
>  libavfilter/vf_pullup.c                |   8 +-
>  libavfilter/vf_remap.c                 |   2 +-
>  libavfilter/vf_remap_opencl.c          |   6 +-
>  libavfilter/vf_scale.c                 |  54 +--
>  libavfilter/vf_scale_cuda.c            |  18 +-
>  libavfilter/vf_scale_npp.c             |  32 +-
>  libavfilter/vf_scale_vaapi.c           |  32 +-
>  libavfilter/vf_scale_vulkan.c          |  20 +-
>  libavfilter/vf_selectivecolor.c        |   6 +-
>  libavfilter/vf_setparams.c             | 160 ++++----
>  libavfilter/vf_sharpen_npp.c           |   4 +-
>  libavfilter/vf_shear.c                 |   6 +-
>  libavfilter/vf_shufflepixels.c         |  18 +-
>  libavfilter/vf_signalstats.c           |  16 +-
>  libavfilter/vf_signature.c             |  14 +-
>  libavfilter/vf_spp.c                   |   6 +-
>  libavfilter/vf_sr.c                    |   4 +-
>  libavfilter/vf_ssim360.c               |  26 +-
>  libavfilter/vf_stereo3d.c              | 114 +++---
>  libavfilter/vf_subtitles.c             |   8 +-
>  libavfilter/vf_telecine.c              |  10 +-
>  libavfilter/vf_thumbnail.c             |   8 +-
>  libavfilter/vf_tinterlace.c            |  42 +-
>  libavfilter/vf_tonemap.c               |  16 +-
>  libavfilter/vf_tonemap_opencl.c        |  54 +--
>  libavfilter/vf_tonemap_vaapi.c         |  14 +-
>  libavfilter/vf_tpad.c                  |   8 +-
>  libavfilter/vf_transpose.c             |  10 +-
>  libavfilter/vf_transpose_npp.c         |  18 +-
>  libavfilter/vf_transpose_opencl.c      |  10 +-
>  libavfilter/vf_transpose_vaapi.c       |  10 +-
>  libavfilter/vf_transpose_vt.c          |  10 +-
>  libavfilter/vf_transpose_vulkan.c      |  10 +-
>  libavfilter/vf_v360.c                  | 224 +++++------
>  libavfilter/vf_vaguedenoiser.c         |  14 +-
>  libavfilter/vf_vectorscope.c           |  62 +--
>  libavfilter/vf_vidstabdetect.c         |   6 +-
>  libavfilter/vf_vidstabtransform.c      |  24 +-
>  libavfilter/vf_vignette.c              |  12 +-
>  libavfilter/vf_vpp_qsv.c               |  64 +--
>  libavfilter/vf_w3fdif.c                |  10 +-
>  libavfilter/vf_waveform.c              |  94 ++---
>  libavfilter/vf_weave.c                 |  10 +-
>  libavfilter/vf_xfade.c                 | 120 +++---
>  libavfilter/vf_xfade_opencl.c          |  22 +-
>  libavfilter/vf_xfade_vulkan.c          |  36 +-
>  libavfilter/vf_yadif_videotoolbox.m    |   6 +-
>  libavfilter/vf_zscale.c                | 220 +++++------
>  libavfilter/vsrc_ddagrab.c             |  16 +-
>  libavfilter/vsrc_gradients.c           |  14 +-
>  libavfilter/vsrc_mandelbrot.c          |  20 +-
>  libavfilter/vsrc_mptestsrc.c           |  26 +-
>  libavfilter/vsrc_sierpinski.c          |   6 +-
>  libavfilter/vsrc_testsrc.c             |  14 +-
>  libavfilter/vsrc_testsrc_vulkan.c      |  14 +-
>  libavfilter/window_func.h              |  46 +--
>  libavfilter/yadif_common.c             |   8 +-
>  libavformat/avisynth.c                 |  16 +-
>  libavformat/chromaprint.c              |   8 +-
>  libavformat/dashenc.c                  |  24 +-
>  libavformat/flvenc.c                   |  12 +-
>  libavformat/hlsenc.c                   |  54 +--
>  libavformat/http.c                     |   6 +-
>  libavformat/img2dec.c                  |  18 +-
>  libavformat/libamqp.c                  |   6 +-
>  libavformat/libopenmpt.c               |   6 +-
>  libavformat/librist.c                  |   8 +-
>  libavformat/librtmp.c                  |   8 +-
>  libavformat/libsrt.c                   |  22 +-
>  libavformat/matroskaenc.c              |   8 +-
>  libavformat/mov.c                      |   8 +-
>  libavformat/movenc.c                   |  58 +--
>  libavformat/mpegtsenc.c                |  34 +-
>  libavformat/mxfenc.c                   |  16 +-
>  libavformat/nutenc.c                   |   8 +-
>  libavformat/options_table.h            |  80 ++--
>  libavformat/rtmpproto.c                |  14 +-
>  libavformat/rtpenc.h                   |  12 +-
>  libavformat/rtsp.c                     |  36 +-
>  libavformat/segment.c                  |  20 +-
>  libavformat/spdifenc.c                 |   4 +-
>  libavformat/unix.c                     |   8 +-
>  libavformat/wavenc.c                   |  16 +-
>  libavformat/webvttdec.c                |  10 +-
>  libavutil/iamf.c                       |  26 +-
>  libavutil/tests/opt.c                  |   8 +-
>  libswresample/options.c                |  70 ++--
>  libswscale/options.c                   |  60 +--
>  338 files changed, 4659 insertions(+), 4659 deletions(-)

some of these have formatting issues:
(havent really reviewd just saw when applying locally)

+++ b/libavcodec/vbnenc.c
@@ -134,10 +134,10 @@ static av_cold int vbn_init(AVCodecContext *avctx)
 #define OFFSET(x) offsetof(VBNContext, x)
 #define FLAGS     AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
 static const AVOption options[] = {
-    { "format",      "Texture format", OFFSET(format), AV_OPT_TYPE_INT,   { .i64 = VBN_FORMAT_DXT5 }, VBN_FORMAT_RAW, VBN_FORMAT_DXT5, FLAGS, "format" },
-        { "raw",     "RAW texture",                 0, AV_OPT_TYPE_CONST, { .i64 = VBN_FORMAT_RAW  },              0,               0, FLAGS, "format" },
-        { "dxt1",    "DXT1 texture",                0, AV_OPT_TYPE_CONST, { .i64 = VBN_FORMAT_DXT1 },              0,               0, FLAGS, "format" },
-        { "dxt5",    "DXT5 texture",                0, AV_OPT_TYPE_CONST, { .i64 = VBN_FORMAT_DXT5 },              0,               0, FLAGS, "format" },
+    { "format",      "Texture format", OFFSET(format), AV_OPT_TYPE_INT,   { .i64 = VBN_FORMAT_DXT5 }, VBN_FORMAT_RAW, VBN_FORMAT_DXT5, FLAGS, .unit = "format" },
+    { "raw",     "RAW texture",                 0, AV_OPT_TYPE_CONST, { .i64 = VBN_FORMAT_RAW  },              0,               0, FLAGS, .unit = "format" },
+    { "dxt1",    "DXT1 texture",                0, AV_OPT_TYPE_CONST, { .i64 = VBN_FORMAT_DXT1 },              0,               0, FLAGS, .unit = "format" },
+    { "dxt5",    "DXT5 texture",                0, AV_OPT_TYPE_CONST, { .i64 = VBN_FORMAT_DXT5 },              0,               0, FLAGS, .unit = "format" },
     { NULL },
 };

diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c
index d978c67a3b0..1f4a49ebb23 100644
--- a/libavcodec/vc2enc.c
+++ b/libavcodec/vc2enc.c
@@ -1187,19 +1187,19 @@ static av_cold int vc2_encode_init(AVCodecContext *avctx)

 #define VC2ENC_FLAGS (AV_OPT_FLAG_ENCODING_PARAM | AV_OPT_FLAG_VIDEO_PARAM)
 static const AVOption vc2enc_options[] = {
-    {"tolerance",     "Max undershoot in percent", offsetof(VC2EncContext, tolerance), AV_OPT_TYPE_DOUBLE, {.dbl = 5.0f}, 0.0f, 45.0f, VC2ENC_FLAGS, "tolerance"},
-    {"slice_width",   "Slice width",  offsetof(VC2EncContext, slice_width), AV_OPT_TYPE_INT, {.i64 = 32}, 32, 1024, VC2ENC_FLAGS, "slice_width"},
-    {"slice_height",  "Slice height", offsetof(VC2EncContext, slice_height), AV_OPT_TYPE_INT, {.i64 = 16}, 8, 1024, VC2ENC_FLAGS, "slice_height"},
-    {"wavelet_depth", "Transform depth", offsetof(VC2EncContext, wavelet_depth), AV_OPT_TYPE_INT, {.i64 = 4}, 1, 5, VC2ENC_FLAGS, "wavelet_depth"},
-    {"wavelet_type",  "Transform type",  offsetof(VC2EncContext, wavelet_idx), AV_OPT_TYPE_INT, {.i64 = VC2_TRANSFORM_9_7}, 0, VC2_TRANSFORMS_NB, VC2ENC_FLAGS, "wavelet_idx"},
-        {"9_7",          "Deslauriers-Dubuc (9,7)", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_9_7},    INT_MIN, INT_MAX, VC2ENC_FLAGS, "wavelet_idx"},
-        {"5_3",          "LeGall (5,3)",            0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_5_3},    INT_MIN, INT_MAX, VC2ENC_FLAGS, "wavelet_idx"},
-        {"haar",         "Haar (with shift)",       0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_HAAR_S}, INT_MIN, INT_MAX, VC2ENC_FLAGS, "wavelet_idx"},
-        {"haar_noshift", "Haar (without shift)",    0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_HAAR},   INT_MIN, INT_MAX, VC2ENC_FLAGS, "wavelet_idx"},
-    {"qm", "Custom quantization matrix", offsetof(VC2EncContext, quant_matrix), AV_OPT_TYPE_INT, {.i64 = VC2_QM_DEF}, 0, VC2_QM_NB, VC2ENC_FLAGS, "quant_matrix"},
-        {"default",   "Default from the specifications", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_QM_DEF}, INT_MIN, INT_MAX, VC2ENC_FLAGS, "quant_matrix"},
-        {"color",     "Prevents low bitrate discoloration", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_QM_COL}, INT_MIN, INT_MAX, VC2ENC_FLAGS, "quant_matrix"},
-        {"flat",      "Optimize for PSNR", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_QM_FLAT}, INT_MIN, INT_MAX, VC2ENC_FLAGS, "quant_matrix"},
+    {"tolerance",     "Max undershoot in percent", offsetof(VC2EncContext, tolerance), AV_OPT_TYPE_DOUBLE, {.dbl = 5.0f}, 0.0f, 45.0f, VC2ENC_FLAGS, .unit = "tolerance"},
+    {"slice_width",   "Slice width",  offsetof(VC2EncContext, slice_width), AV_OPT_TYPE_INT, {.i64 = 32}, 32, 1024, VC2ENC_FLAGS, .unit = "slice_width"},
+    {"slice_height",  "Slice height", offsetof(VC2EncContext, slice_height), AV_OPT_TYPE_INT, {.i64 = 16}, 8, 1024, VC2ENC_FLAGS, .unit = "slice_height"},
+    {"wavelet_depth", "Transform depth", offsetof(VC2EncContext, wavelet_depth), AV_OPT_TYPE_INT, {.i64 = 4}, 1, 5, VC2ENC_FLAGS, .unit = "wavelet_depth"},
+    {"wavelet_type",  "Transform type",  offsetof(VC2EncContext, wavelet_idx), AV_OPT_TYPE_INT, {.i64 = VC2_TRANSFORM_9_7}, 0, VC2_TRANSFORMS_NB, VC2ENC_FLAGS, .unit = "wavelet_idx"},
+    {"9_7",          "Deslauriers-Dubuc (9,7)", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_9_7},    INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "wavelet_idx"},
+    {"5_3",          "LeGall (5,3)",            0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_5_3},    INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "wavelet_idx"},
+    {"haar",         "Haar (with shift)",       0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_HAAR_S}, INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "wavelet_idx"},
+    {"haar_noshift", "Haar (without shift)",    0, AV_OPT_TYPE_CONST, {.i64 = VC2_TRANSFORM_HAAR},   INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "wavelet_idx"},
+    {"qm", "Custom quantization matrix", offsetof(VC2EncContext, quant_matrix), AV_OPT_TYPE_INT, {.i64 = VC2_QM_DEF}, 0, VC2_QM_NB, VC2ENC_FLAGS, .unit = "quant_matrix"},
+    {"default",   "Default from the specifications", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_QM_DEF}, INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "quant_matrix"},
+    {"color",     "Prevents low bitrate discoloration", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_QM_COL}, INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "quant_matrix"},
+    {"flat",      "Optimize for PSNR", 0, AV_OPT_TYPE_CONST, {.i64 = VC2_QM_FLAT}, INT_MIN, INT_MAX, VC2ENC_FLAGS, .unit = "quant_matrix"},
     {NULL}


     [...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

The day soldiers stop bringing you their problems is the day you have stopped 
leading them. They have either lost confidence that you can help or concluded 
you do not care. Either case is a failure of leadership. - Colin Powell

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

[-- Attachment #2: Type: text/plain, Size: 251 bytes --]

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

  reply	other threads:[~2024-02-11 20:39 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-11 17:08 Anton Khirnov
2024-02-11 20:39 ` Michael Niedermayer [this message]
2024-02-12  7:43   ` Anton Khirnov

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=20240211203917.GV6420@pb2 \
    --to=michael@niedermayer.cc \
    --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