FFmpeg
Functions | Variables
cpu.c File Reference
#include "config.h"
#include <stddef.h>
#include <stdint.h>
#include <stdatomic.h>
#include "attributes.h"
#include "cpu.h"
#include "cpu_internal.h"
#include "opt.h"
#include "common.h"

Go to the source code of this file.

Functions

static int get_cpu_flags (void)
 
void av_force_cpu_flags (int arg)
 Disables cpu detection and forces the specified flags. More...
 
int av_get_cpu_flags (void)
 Return the flags which specify extensions supported by the CPU. More...
 
int av_parse_cpu_caps (unsigned *flags, const char *s)
 Parse CPU caps from a string and update the given AV_CPU_* flags based on that. More...
 
int av_cpu_count (void)
 
void av_cpu_force_count (int count)
 Overrides cpu count detection and forces the specified count. More...
 
size_t av_cpu_max_align (void)
 Get the maximum data alignment that may be required by FFmpeg. More...
 

Variables

static atomic_int cpu_flags = ATOMIC_VAR_INIT(-1)
 
static atomic_int cpu_count = ATOMIC_VAR_INIT(-1)
 

Function Documentation

◆ get_cpu_flags()

static int get_cpu_flags ( void  )
static

Definition at line 55 of file cpu.c.

Referenced by av_get_cpu_flags().

◆ av_force_cpu_flags()

void av_force_cpu_flags ( int  flags)

Disables cpu detection and forces the specified flags.

-1 is a special case that disables forcing of specific flags.

Definition at line 75 of file cpu.c.

Referenced by check_cpu_flag(), LLVMFuzzerTestOneInput(), main(), and opt_cpuflags().

◆ av_get_cpu_flags()

int av_get_cpu_flags ( void  )

Return the flags which specify extensions supported by the CPU.

The returned value is affected by av_force_cpu_flags() if that was used before. So av_get_cpu_flags() can easily be used in an application to detect the enabled cpu flags.

Definition at line 103 of file cpu.c.

Referenced by check_cpu_flag(), D(), davs2_init(), define_8tap_2d_funcs(), ff_aac_dsp_init_x86(), ff_ac3dsp_init_arm(), ff_ac3dsp_init_x86(), ff_ac3dsp_set_downmix_x86(), ff_afir_init_x86(), ff_alacdsp_init_riscv(), ff_alacdsp_init_x86(), ff_anlmdn_init_x86(), ff_atadenoise_init_x86(), ff_audiodsp_init_arm(), ff_audiodsp_init_ppc(), ff_audiodsp_init_riscv(), ff_audiodsp_init_x86(), ff_blend_init_x86(), ff_blockdsp_init_arm(), ff_blockdsp_init_mips(), ff_blockdsp_init_ppc(), ff_blockdsp_init_x86(), ff_bswapdsp_init_riscv(), ff_bswapdsp_init_x86(), ff_bwdif_init_x86(), ff_cavsdsp_init_x86(), ff_celt_pvq_init_x86(), ff_cfhddsp_init_x86(), ff_cfhdencdsp_init_x86(), ff_colorspacedsp_x86_init(), ff_convolution_init_x86(), ff_dcadsp_init_x86(), ff_dct_encode_init_x86(), ff_dct_init_x86(), ff_diracdsp_init_x86(), ff_dnxhdenc_init_x86(), ff_dwt_init_x86(), ff_eq_init_x86(), ff_exrdsp_init_x86(), ff_fdctdsp_init_ppc(), ff_fdctdsp_init_x86(), ff_fft_init_aarch64(), ff_fft_init_arm(), ff_fft_init_ppc(), ff_fft_init_x86(), ff_fixed_dsp_init_riscv(), ff_fixed_dsp_init_x86(), ff_flacdsp_init_x86(), ff_flacencdsp_init_x86(), ff_float_dsp_init_aarch64(), ff_float_dsp_init_arm(), ff_float_dsp_init_ppc(), ff_float_dsp_init_riscv(), ff_float_dsp_init_x86(), ff_fmt_convert_init_aarch64(), ff_fmt_convert_init_arm(), ff_fmt_convert_init_ppc(), ff_fmt_convert_init_riscv(), ff_fmt_convert_init_x86(), ff_framerate_init_x86(), ff_fspp_init_x86(), ff_g722dsp_init_arm(), ff_g722dsp_init_x86(), ff_gblur_init_x86(), ff_get_cpu_max_align_aarch64(), ff_get_cpu_max_align_arm(), ff_get_cpu_max_align_loongarch(), ff_get_cpu_max_align_mips(), ff_get_cpu_max_align_ppc(), ff_get_cpu_max_align_x86(), ff_get_unscaled_swscale_aarch64(), ff_get_unscaled_swscale_ppc(), ff_gradfun_init_x86(), ff_h263dsp_init_mips(), ff_h263dsp_init_x86(), ff_h264_pred_init_aarch64(), ff_h264_pred_init_arm(), ff_h264_pred_init_loongarch(), ff_h264_pred_init_mips(), ff_h264chroma_init_aarch64(), ff_h264chroma_init_arm(), ff_h264chroma_init_loongarch(), ff_h264chroma_init_mips(), ff_h264chroma_init_ppc(), ff_h264chroma_init_x86(), ff_h264dsp_init_aarch64(), ff_h264dsp_init_arm(), ff_h264dsp_init_loongarch(), ff_h264dsp_init_mips(), ff_h264dsp_init_ppc(), ff_h264dsp_init_x86(), ff_h264qpel_init_aarch64(), ff_h264qpel_init_arm(), ff_h264qpel_init_loongarch(), ff_h264qpel_init_mips(), ff_h264qpel_init_ppc(), ff_h264qpel_init_x86(), ff_hevc_dsp_init_aarch64(), ff_hevc_dsp_init_arm(), ff_hevc_dsp_init_loongarch(), ff_hevc_dsp_init_mips(), ff_hevc_dsp_init_ppc(), ff_hevc_dsp_init_x86(), ff_hevc_pred_init_mips(), ff_hflip_init_x86(), ff_hpeldsp_init_aarch64(), ff_hpeldsp_init_arm(), ff_hpeldsp_init_loongarch(), ff_hpeldsp_init_mips(), ff_hpeldsp_init_ppc(), ff_hpeldsp_init_x86(), ff_huffyuvdsp_init_x86(), ff_huffyuvencdsp_init_x86(), ff_idctdsp_init_aarch64(), ff_idctdsp_init_arm(), ff_idctdsp_init_loongarch(), ff_idctdsp_init_mips(), ff_idctdsp_init_ppc(), ff_idctdsp_init_riscv(), ff_idctdsp_init_x86(), ff_idet_init_x86(), ff_image_copy_plane_uc_from_x86(), ff_init_lls_x86(), ff_jpeg2000dsp_init_x86(), ff_limiter_init_x86(), ff_llauddsp_init_arm(), ff_llauddsp_init_ppc(), ff_llauddsp_init_x86(), ff_llviddsp_init_ppc(), ff_llviddsp_init_x86(), ff_llvidencdsp_init_x86(), ff_lpc_init_x86(), ff_lut3d_init_x86(), ff_maskedclamp_init_x86(), ff_maskedmerge_init_x86(), ff_me_cmp_init_aarch64(), ff_me_cmp_init_arm(), ff_me_cmp_init_mips(), ff_me_cmp_init_ppc(), ff_mlpdsp_init_arm(), ff_mlpdsp_init_x86(), ff_mpadsp_init_aarch64(), ff_mpadsp_init_arm(), ff_mpadsp_init_ppc(), ff_mpadsp_init_x86(), ff_mpeg4videodsp_init_ppc(), ff_mpeg4videodsp_init_x86(), ff_mpegvideoencdsp_init_arm(), ff_mpegvideoencdsp_init_mips(), ff_mpegvideoencdsp_init_ppc(), ff_mpegvideoencdsp_init_x86(), ff_mpv_common_init_arm(), ff_mpv_common_init_mips(), ff_mpv_common_init_neon(), ff_mpv_common_init_ppc(), ff_mpv_common_init_x86(), ff_nlmeans_init_aarch64(), ff_nlmeans_init_x86(), ff_noise_init_x86(), ff_opus_dsp_init_aarch64(), ff_opus_dsp_init_riscv(), ff_opus_dsp_init_x86(), ff_overlay_init_x86(), ff_pixblockdsp_init_aarch64(), ff_pixblockdsp_init_arm(), ff_pixblockdsp_init_mips(), ff_pixblockdsp_init_ppc(), ff_pixblockdsp_init_riscv(), ff_pixblockdsp_init_x86(), ff_pixelutils_sad_init_x86(), ff_pngdsp_init_x86(), ff_pp7_init_x86(), ff_proresdsp_init_x86(), ff_psdsp_init_aarch64(), ff_psdsp_init_arm(), ff_psdsp_init_riscv(), ff_psdsp_init_x86(), ff_psnr_init_x86(), ff_pullup_init_x86(), ff_qpeldsp_init_mips(), ff_qpeldsp_init_x86(), ff_rdft_init_arm(), ff_removegrain_init_x86(), ff_rv34dsp_init_arm(), ff_rv34dsp_init_x86(), ff_rv40dsp_init_aarch64(), ff_rv40dsp_init_arm(), ff_rv40dsp_init_x86(), ff_sbcdsp_init_arm(), ff_sbcdsp_init_x86(), ff_sbrdsp_init_aarch64(), ff_sbrdsp_init_arm(), ff_sbrdsp_init_x86(), ff_scene_sad_get_fn_x86(), ff_showcqt_init_x86(), ff_shuffle_filter_coefficients(), ff_sobel_init_x86(), ff_spatial_idwt_init_x86(), ff_spp_init_x86(), ff_ssim_init_x86(), ff_stereo3d_init_x86(), ff_svq1enc_init_ppc(), ff_svq1enc_init_x86(), ff_sws_init_swscale_aarch64(), ff_sws_init_swscale_arm(), ff_sws_init_swscale_loongarch(), ff_sws_init_swscale_ppc(), ff_sws_init_swscale_vsx(), ff_sws_init_swscale_x86(), ff_synth_filter_init_aarch64(), ff_synth_filter_init_arm(), ff_synth_filter_init_x86(), ff_takdsp_init_x86(), ff_threshold_init_x86(), ff_tinterlace_init_x86(), ff_transpose_init_x86(), ff_ttadsp_init_x86(), ff_ttaencdsp_init_x86(), ff_tx_decompose_length(), ff_tx_init_subtx(), ff_utvideodsp_init_x86(), ff_v210_x86_init(), ff_v210enc_init_x86(), ff_v360_init_x86(), ff_vc1dsp_init_aarch64(), ff_vc1dsp_init_arm(), ff_vc1dsp_init_loongarch(), ff_vc1dsp_init_mips(), ff_vc1dsp_init_ppc(), ff_vc1dsp_init_x86(), ff_videodsp_init_aarch64(), ff_videodsp_init_arm(), ff_videodsp_init_mips(), ff_videodsp_init_x86(), ff_volume_init_x86(), ff_vorbisdsp_init_aarch64(), ff_vorbisdsp_init_arm(), ff_vorbisdsp_init_ppc(), ff_vorbisdsp_init_riscv(), ff_vorbisdsp_init_x86(), ff_vp3dsp_init_arm(), ff_vp3dsp_init_mips(), ff_vp3dsp_init_ppc(), ff_vp3dsp_init_x86(), ff_vp6dsp_init_arm(), ff_vp6dsp_init_x86(), ff_vp78dsp_init_aarch64(), ff_vp78dsp_init_arm(), ff_vp78dsp_init_ppc(), ff_vp78dsp_init_x86(), ff_vp8dsp_init_aarch64(), ff_vp8dsp_init_arm(), ff_vp8dsp_init_loongarch(), ff_vp8dsp_init_mips(), ff_vp8dsp_init_x86(), ff_vp9dsp_init_16bpp_x86(), ff_vp9dsp_init_loongarch(), ff_vp9dsp_init_mips(), ff_vp9dsp_init_x86(), ff_w3fdif_init_x86(), ff_wmv2dsp_init_mips(), ff_xvid_idct_init_mips(), ff_xvid_idct_init_x86(), ff_yadif_init_x86(), ff_yuv2rgb_init_loongarch(), ff_yuv2rgb_init_ppc(), ff_yuv2rgb_init_tables_ppc(), ff_yuv2rgb_init_x86(), INIT_FUNC(), lf_mix_fns(), main(), opt_cpuflags(), pp_get_context(), PRED4x4(), rgb2rgb_init_aarch64(), rgb2rgb_init_loongarch(), rgb2rgb_init_riscv(), rgb2rgb_init_x86(), swri_audio_convert_init_aarch64(), swri_audio_convert_init_arm(), swri_audio_convert_init_x86(), swri_resample_dsp_aarch64_init(), swri_resample_dsp_arm_init(), swri_resample_dsp_x86_init(), sws_init_single_context(), swscale(), thread_main(), vp9dsp_itxfm_init_aarch64(), vp9dsp_itxfm_init_arm(), vp9dsp_loopfilter_init_aarch64(), and vp9dsp_loopfilter_init_arm().

◆ av_parse_cpu_caps()

int av_parse_cpu_caps ( unsigned *  flags,
const char *  s 
)

Parse CPU caps from a string and update the given AV_CPU_* flags based on that.

Returns
negative on error.

Definition at line 113 of file cpu.c.

Referenced by main(), and opt_cpuflags().

◆ av_cpu_count()

int av_cpu_count ( void  )

◆ av_cpu_force_count()

void av_cpu_force_count ( int  count)

Overrides cpu count detection and forces the specified count.

Count < 1 disables forcing of specific count.

Definition at line 260 of file cpu.c.

Referenced by opt_cpucount().

◆ av_cpu_max_align()

size_t av_cpu_max_align ( void  )

Get the maximum data alignment that may be required by FFmpeg.

Note that this is affected by the build configuration and the CPU flags mask, so e.g. if the CPU supports AVX, but libavutil has been built with –disable-avx or the AV_CPU_FLAG_AVX flag has been disabled through av_set_cpu_flags_mask(), then this function will behave as if AVX is not present.

Definition at line 265 of file cpu.c.

Referenced by config_input(), config_output(), config_props(), ff_default_get_audio_buffer(), ff_default_get_video_buffer(), and init_segment().

Variable Documentation

◆ cpu_flags

atomic_int cpu_flags = ATOMIC_VAR_INIT(-1)
static

Definition at line 52 of file cpu.c.

Referenced by av_force_cpu_flags(), av_get_cpu_flags(), davs2_init(), define_8tap_2d_funcs(), ff_aac_dsp_init_x86(), ff_ac3dsp_init_arm(), ff_ac3dsp_init_x86(), ff_ac3dsp_set_downmix_x86(), ff_afir_init_x86(), ff_alacdsp_init_x86(), ff_anlmdn_init_x86(), ff_atadenoise_init_x86(), ff_audiodsp_init_arm(), ff_audiodsp_init_x86(), ff_blend_init_x86(), ff_blockdsp_init_arm(), ff_blockdsp_init_mips(), ff_blockdsp_init_x86(), ff_bswapdsp_init_riscv(), ff_bswapdsp_init_x86(), ff_bwdif_init_x86(), ff_cavsdsp_init_x86(), ff_celt_pvq_init_x86(), ff_cfhddsp_init_x86(), ff_cfhdencdsp_init_x86(), ff_colorspacedsp_x86_init(), ff_convolution_init_x86(), ff_dcadsp_init_x86(), ff_dct_encode_init_x86(), ff_dct_init_x86(), ff_eq_init_x86(), ff_exrdsp_init_x86(), ff_fdctdsp_init_x86(), ff_fft_init_aarch64(), ff_fft_init_arm(), ff_fft_init_x86(), ff_fixed_dsp_init_x86(), ff_flacdsp_init_x86(), ff_flacencdsp_init_x86(), ff_float_dsp_init_aarch64(), ff_float_dsp_init_arm(), ff_float_dsp_init_vfp(), ff_float_dsp_init_x86(), ff_fmt_convert_init_aarch64(), ff_fmt_convert_init_arm(), ff_fmt_convert_init_x86(), ff_framerate_init_x86(), ff_fspp_init_x86(), ff_g722dsp_init_arm(), ff_g722dsp_init_x86(), ff_gblur_init_x86(), ff_get_unscaled_swscale_aarch64(), ff_gradfun_init_x86(), ff_h263dsp_init_mips(), ff_h263dsp_init_x86(), ff_h264_pred_init_aarch64(), ff_h264_pred_init_arm(), ff_h264_pred_init_loongarch(), ff_h264_pred_init_mips(), ff_h264chroma_init_aarch64(), ff_h264chroma_init_arm(), ff_h264chroma_init_loongarch(), ff_h264chroma_init_mips(), ff_h264chroma_init_x86(), ff_h264dsp_init_aarch64(), ff_h264dsp_init_arm(), ff_h264dsp_init_loongarch(), ff_h264dsp_init_mips(), ff_h264dsp_init_x86(), ff_h264qpel_init_aarch64(), ff_h264qpel_init_arm(), ff_h264qpel_init_loongarch(), ff_h264qpel_init_mips(), ff_h264qpel_init_x86(), ff_hevc_dsp_init_arm(), ff_hevc_dsp_init_loongarch(), ff_hevc_dsp_init_mips(), ff_hevc_dsp_init_x86(), ff_hevc_pred_init_mips(), ff_hflip_init_x86(), ff_hpeldsp_init_aarch64(), ff_hpeldsp_init_arm(), ff_hpeldsp_init_loongarch(), ff_hpeldsp_init_mips(), ff_hpeldsp_init_x86(), ff_hpeldsp_vp3_init_x86(), ff_huffyuvdsp_init_x86(), ff_huffyuvencdsp_init_x86(), ff_idctdsp_init_aarch64(), ff_idctdsp_init_arm(), ff_idctdsp_init_loongarch(), ff_idctdsp_init_mips(), ff_idctdsp_init_x86(), ff_idet_init_x86(), ff_image_copy_plane_uc_from_x86(), ff_init_lls_x86(), ff_jpeg2000dsp_init_x86(), ff_limiter_init_x86(), ff_llauddsp_init_arm(), ff_llauddsp_init_x86(), ff_llviddsp_init_x86(), ff_llvidencdsp_init_x86(), ff_lpc_init_x86(), ff_lut3d_init_x86(), ff_maskedclamp_init_x86(), ff_maskedmerge_init_x86(), ff_me_cmp_init_aarch64(), ff_me_cmp_init_arm(), ff_me_cmp_init_mips(), ff_mlpdsp_init_arm(), ff_mlpdsp_init_x86(), ff_mpadsp_init_aarch64(), ff_mpadsp_init_arm(), ff_mpadsp_init_x86(), ff_mpeg4videodsp_init_x86(), ff_mpegvideoencdsp_init_arm(), ff_mpegvideoencdsp_init_mips(), ff_mpegvideoencdsp_init_x86(), ff_mpv_common_init_arm(), ff_mpv_common_init_mips(), ff_mpv_common_init_neon(), ff_mpv_common_init_x86(), ff_nlmeans_init_aarch64(), ff_nlmeans_init_x86(), ff_noise_init_x86(), ff_opus_dsp_init_aarch64(), ff_opus_dsp_init_x86(), ff_overlay_init_x86(), ff_pixblockdsp_init_aarch64(), ff_pixblockdsp_init_arm(), ff_pixblockdsp_init_mips(), ff_pixblockdsp_init_riscv(), ff_pixblockdsp_init_x86(), ff_pixelutils_sad_init_x86(), ff_pngdsp_init_x86(), ff_pp7_init_x86(), ff_proresdsp_init_x86(), ff_psdsp_init_aarch64(), ff_psdsp_init_arm(), ff_psdsp_init_x86(), ff_psnr_init_x86(), ff_pullup_init_x86(), ff_qpeldsp_init_mips(), ff_qpeldsp_init_x86(), ff_rdft_init_arm(), ff_removegrain_init_x86(), ff_rv34dsp_init_arm(), ff_rv34dsp_init_x86(), ff_rv40dsp_init_aarch64(), ff_rv40dsp_init_arm(), ff_rv40dsp_init_x86(), ff_sbcdsp_init_arm(), ff_sbcdsp_init_x86(), ff_sbrdsp_init_aarch64(), ff_sbrdsp_init_arm(), ff_sbrdsp_init_x86(), ff_scene_sad_get_fn_x86(), ff_shuffle_filter_coefficients(), ff_sobel_init_x86(), ff_spp_init_x86(), ff_ssim_init_x86(), ff_stereo3d_init_x86(), ff_svq1enc_init_x86(), ff_sws_init_swscale_aarch64(), ff_sws_init_swscale_arm(), ff_sws_init_swscale_loongarch(), ff_sws_init_swscale_vsx(), ff_sws_init_swscale_x86(), ff_synth_filter_init_aarch64(), ff_synth_filter_init_arm(), ff_synth_filter_init_x86(), ff_takdsp_init_x86(), ff_threshold_init_x86(), ff_tinterlace_init_x86(), ff_transpose_init_x86(), ff_ttadsp_init_x86(), ff_ttaencdsp_init_x86(), ff_tx_decompose_length(), ff_tx_init_subtx(), ff_utvideodsp_init_x86(), ff_v210_x86_init(), ff_v210enc_init_x86(), ff_v360_init_x86(), ff_vc1dsp_init_aarch64(), ff_vc1dsp_init_arm(), ff_vc1dsp_init_loongarch(), ff_vc1dsp_init_mips(), ff_vc1dsp_init_x86(), ff_videodsp_init_aarch64(), ff_videodsp_init_arm(), ff_videodsp_init_mips(), ff_videodsp_init_x86(), ff_volume_init_x86(), ff_vorbisdsp_init_aarch64(), ff_vorbisdsp_init_arm(), ff_vorbisdsp_init_x86(), ff_vp3dsp_init_arm(), ff_vp3dsp_init_mips(), ff_vp3dsp_init_x86(), ff_vp6dsp_init_arm(), ff_vp6dsp_init_x86(), ff_vp78dsp_init_arm(), ff_vp78dsp_init_x86(), ff_vp8dsp_init_arm(), ff_vp8dsp_init_loongarch(), ff_vp8dsp_init_mips(), ff_vp8dsp_init_x86(), ff_vp9dsp_init_16bpp_x86(), ff_vp9dsp_init_loongarch(), ff_vp9dsp_init_mips(), ff_vp9dsp_init_x86(), ff_w3fdif_init_x86(), ff_wmv2dsp_init_mips(), ff_xvid_idct_init_mips(), ff_xvid_idct_init_x86(), ff_yadif_init_x86(), ff_yuv2rgb_init_loongarch(), ff_yuv2rgb_init_x86(), get_codelet_prio(), INIT_FUNC(), initFilter(), lf_mix_fns(), main(), PRED4x4(), print_cpu_flags(), rgb2rgb_init_aarch64(), rgb2rgb_init_loongarch(), rgb2rgb_init_x86(), swri_audio_convert_init_aarch64(), swri_audio_convert_init_arm(), swri_resample_dsp_aarch64_init(), swri_resample_dsp_arm_init(), sws_init_single_context(), swscale(), vp9dsp_itxfm_init_aarch64(), vp9dsp_itxfm_init_arm(), vp9dsp_loopfilter_init_aarch64(), and vp9dsp_loopfilter_init_arm().

◆ cpu_count

atomic_int cpu_count = ATOMIC_VAR_INIT(-1)
static

Definition at line 53 of file cpu.c.

Referenced by av_cpu_count(), av_cpu_force_count(), and main().