[FFmpeg-devel] [PATCH v2 000/162] VLC, esp. init_vlc patches

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Tue Nov 24 00:54:08 EET 2020


Andreas Rheinhardt:
> This is the second version of my init_vlc patchset [1]. Given the
> feedback I received for the last version I stressed thread-safety of
> init functions of decoders. As a consequence, the amount of decoders
> with FF_CODEC_CAP_INIT_THREADSAFE increased by 25 (some of them were
> already thread-safe, just the flag was missing). I am not finished yet*,
> but I don't see a reason to postpone sending this patchset already.
> 
> It now saves 146KiB from the binary (and much more when using hardcoded
> tables).
> 
> [1]: https://ffmpeg.org/pipermail/ffmpeg-devel/2020-November/272127.html
> 
> Two patches of this patchset (#55 and #161) change MIPS code; this is
> untested as I don't have a MIPS. Would be nice if someone could test it. 
> 
> *: AAC needs much more work (e.g. these decoders claim to be
> init-threadsafe, but aren't).
> 
Will apply the patches that don't depend on ff_init_vlc_from_lengths()
tomorrow, namely:
avcodec/mpegaudiodec_template: Don't use unnecessarily many VLC bits
avcodec/mv30: Don't check for errors for complete VLCs
avcodec/imm4: Don't use too big VLC table
avcodec/aac*: Make initializing ff_aac_pow*sf_tab thread-safe
avcodec/aactab: Fix conflicting types for ff_aac_codebook*
avcodec/qdmc: Don't check for errors for complete VLCs
avcodec/hqx: Don't check for errors for complete VLCs
avcodec/hqx: Inline constants
avcodec/intrax8: Make ff_intrax8_common_init() thread-safe
avcodec/intrax8: Replace always-false check by assert
avcodec/atrac9tab: Add missing static to internal table
avcodec/atrac9dec: Replace av_free() by av_freep() in close function
avcodec/atrac9dec: Don't use unnecessarily large VLC tables
avcodec/atrac9dec: Use least max_depth in calls to get_vlc2()
avcodec/atrac9dec: Don't confuse max_depth of VLC with max codelength
avcodec/truemotion2: Mark decoder as init-threadsafe
avcodec/g2meet: Use least max_depth in get_vlc2()
avcodec/sheervideo: Add av_cold to build_vlc()
avcodec/mss4: Mark decoder as init-threadsafe
avcodec/rv40vlc2: Make VLC smaller
avcodec/qdm2: Remove outdated comment
avcodec/mpegaudiodsp: Make initializing synth windows thread-safe
avcodec/mpegaudiodsp: Make ff_mpadsp_init() thread-safe
avcodec/fft_template, fft_init_table: Make ff_fft_init() thread-safe
avcodec/mpegaudiodsp: Combine initializing float and int tables
avcodec/motionpixels: Make decoder init-threadsafe
avcodec/motionpixels: Use symbols table
avcodec/motionpixels: Don't check for errors for complete VLC
avcodec/motionpixels: Be more strict when parsing Huffman trees
avcodec/motionpixels: Only create VLC iff it is going to be used
avcodec/mimic: Mark decoder as init-threadsafe
avcodec/mimic: Cleanup generically upon init failure
avcodec/rv10: Make initializing static RV10 VLCs thread-safe
avcodec/smacker: Mark decoders as init-threadsafe
avcodec/tscc2: Mark tscc2 decoder as init-threadsafe

- Andreas


More information about the ffmpeg-devel mailing list