FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
cpu.h File Reference
#include "attributes.h"

Go to the source code of this file.

Macros

#define AV_CPU_FLAG_FORCE   0x80000000 /* force usage of selected flags (OR) */
 
#define AV_CPU_FLAG_MMX   0x0001
 standard MMX More...
 
#define AV_CPU_FLAG_MMXEXT   0x0002
 SSE integer functions or AMD MMX ext. More...
 
#define AV_CPU_FLAG_MMX2   0x0002
 SSE integer functions or AMD MMX ext. More...
 
#define AV_CPU_FLAG_3DNOW   0x0004
 AMD 3DNOW. More...
 
#define AV_CPU_FLAG_SSE   0x0008
 SSE functions. More...
 
#define AV_CPU_FLAG_SSE2   0x0010
 PIV SSE2 functions. More...
 
#define AV_CPU_FLAG_SSE2SLOW   0x40000000
 SSE2 supported, but usually not faster. More...
 
#define AV_CPU_FLAG_3DNOWEXT   0x0020
 AMD 3DNowExt. More...
 
#define AV_CPU_FLAG_SSE3   0x0040
 Prescott SSE3 functions. More...
 
#define AV_CPU_FLAG_SSE3SLOW   0x20000000
 SSE3 supported, but usually not faster. More...
 
#define AV_CPU_FLAG_SSSE3   0x0080
 Conroe SSSE3 functions. More...
 
#define AV_CPU_FLAG_ATOM   0x10000000
 Atom processor, some SSSE3 instructions are slower. More...
 
#define AV_CPU_FLAG_SSE4   0x0100
 Penryn SSE4.1 functions. More...
 
#define AV_CPU_FLAG_SSE42   0x0200
 Nehalem SSE4.2 functions. More...
 
#define AV_CPU_FLAG_AESNI   0x80000
 Advanced Encryption Standard functions. More...
 
#define AV_CPU_FLAG_AVX   0x4000
 AVX functions: requires OS support even if YMM registers aren't used. More...
 
#define AV_CPU_FLAG_AVXSLOW   0x8000000
 AVX supported, but slow when using YMM registers (e.g. Bulldozer) More...
 
#define AV_CPU_FLAG_XOP   0x0400
 Bulldozer XOP functions. More...
 
#define AV_CPU_FLAG_FMA4   0x0800
 Bulldozer FMA4 functions. More...
 
#define AV_CPU_FLAG_CMOV   0x1000
 supports cmov instruction More...
 
#define AV_CPU_FLAG_AVX2   0x8000
 AVX2 functions: requires OS support even if YMM registers aren't used. More...
 
#define AV_CPU_FLAG_FMA3   0x10000
 Haswell FMA3 functions. More...
 
#define AV_CPU_FLAG_BMI1   0x20000
 Bit Manipulation Instruction Set 1. More...
 
#define AV_CPU_FLAG_BMI2   0x40000
 Bit Manipulation Instruction Set 2. More...
 
#define AV_CPU_FLAG_ALTIVEC   0x0001
 standard More...
 
#define AV_CPU_FLAG_VSX   0x0002
 ISA 2.06. More...
 
#define AV_CPU_FLAG_POWER8   0x0004
 ISA 2.07. More...
 
#define AV_CPU_FLAG_ARMV5TE   (1 << 0)
 
#define AV_CPU_FLAG_ARMV6   (1 << 1)
 
#define AV_CPU_FLAG_ARMV6T2   (1 << 2)
 
#define AV_CPU_FLAG_VFP   (1 << 3)
 
#define AV_CPU_FLAG_VFPV3   (1 << 4)
 
#define AV_CPU_FLAG_NEON   (1 << 5)
 
#define AV_CPU_FLAG_ARMV8   (1 << 6)
 
#define AV_CPU_FLAG_VFP_VM   (1 << 7)
 VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations. More...
 
#define AV_CPU_FLAG_SETEND   (1 <<16)
 

Functions

int av_get_cpu_flags (void)
 Return the flags which specify extensions supported by the CPU. More...
 
void av_force_cpu_flags (int flags)
 Disables cpu detection and forces the specified flags. More...
 
attribute_deprecated void av_set_cpu_flags_mask (int mask)
 Set a mask on flags returned by av_get_cpu_flags(). More...
 
attribute_deprecated int av_parse_cpu_flags (const char *s)
 Parse CPU flags from a string. 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)
 

Macro Definition Documentation

#define AV_CPU_FLAG_FORCE   0x80000000 /* force usage of selected flags (OR) */

Definition at line 26 of file cpu.h.

#define AV_CPU_FLAG_MMX   0x0001
#define AV_CPU_FLAG_MMXEXT   0x0002
#define AV_CPU_FLAG_MMX2   0x0002

SSE integer functions or AMD MMX ext.

Definition at line 31 of file cpu.h.

Referenced by av_parse_cpu_caps(), and multiple_resample().

#define AV_CPU_FLAG_3DNOW   0x0004
#define AV_CPU_FLAG_SSE   0x0008

SSE functions.

Definition at line 33 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_SSE2   0x0010
#define AV_CPU_FLAG_SSE2SLOW   0x40000000

SSE2 supported, but usually not faster.

than regular MMX/SSE (e.g. Core1)

Definition at line 35 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), ff_ac3dsp_init_x86(), ff_audio_convert_init_x86(), ff_get_cpu_flags_x86(), ff_h264qpel_init_x86(), ff_lpc_init_x86(), ff_vp78dsp_init_x86(), ff_vp8dsp_init_x86(), and hpeldsp_init_sse2().

#define AV_CPU_FLAG_3DNOWEXT   0x0020

AMD 3DNowExt.

Definition at line 37 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_SSE3   0x0040

Prescott SSE3 functions.

Definition at line 38 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), ff_get_cpu_flags_x86(), and ff_sws_init_swscale_x86().

#define AV_CPU_FLAG_SSE3SLOW   0x20000000

SSE3 supported, but usually not faster.

than regular MMX/SSE (e.g. Core1)

Definition at line 39 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_SSSE3   0x0080

Conroe SSSE3 functions.

Definition at line 41 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), ff_get_cpu_flags_x86(), ff_spatial_idwt_init_x86(), and ff_v210_x86_init().

#define AV_CPU_FLAG_ATOM   0x10000000

Atom processor, some SSSE3 instructions are slower.

Definition at line 42 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), ff_ac3dsp_init_x86(), ff_audiodsp_init_x86(), ff_get_cpu_flags_x86(), and ff_volume_init_x86().

#define AV_CPU_FLAG_SSE4   0x0100

Penryn SSE4.1 functions.

Definition at line 43 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), ff_get_cpu_flags_x86(), and ff_huffyuvdsp_init_x86().

#define AV_CPU_FLAG_SSE42   0x0200

Nehalem SSE4.2 functions.

Definition at line 44 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), ff_get_cpu_flags_x86(), and ff_llauddsp_init_x86().

#define AV_CPU_FLAG_AESNI   0x80000

Advanced Encryption Standard functions.

Definition at line 45 of file cpu.h.

Referenced by av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_AVX   0x4000

AVX functions: requires OS support even if YMM registers aren't used.

Definition at line 46 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), ff_get_cpu_flags_x86(), and ff_v210_x86_init().

#define AV_CPU_FLAG_AVXSLOW   0x8000000

AVX supported, but slow when using YMM registers (e.g. Bulldozer)

Definition at line 47 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_XOP   0x0400

Bulldozer XOP functions.

Definition at line 48 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_FMA4   0x0800

Bulldozer FMA4 functions.

Definition at line 49 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_CMOV   0x1000

supports cmov instruction

Definition at line 50 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), ff_get_cpu_flags_x86(), ff_h264dsp_init_x86(), ff_huffyuvdsp_init_x86(), and PRED4x4().

#define AV_CPU_FLAG_AVX2   0x8000

AVX2 functions: requires OS support even if YMM registers aren't used.

Definition at line 51 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_FMA3   0x10000

Haswell FMA3 functions.

Definition at line 52 of file cpu.h.

Referenced by av_force_cpu_flags(), av_parse_cpu_caps(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_BMI1   0x20000

Bit Manipulation Instruction Set 1.

Definition at line 53 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), and ff_get_cpu_flags_x86().

#define AV_CPU_FLAG_BMI2   0x40000

Bit Manipulation Instruction Set 2.

Definition at line 54 of file cpu.h.

Referenced by av_parse_cpu_caps(), ff_get_cpu_flags_x86(), and ff_mlpdsp_init_x86().

#define AV_CPU_FLAG_ALTIVEC   0x0001
#define AV_CPU_FLAG_VSX   0x0002

ISA 2.06.

Definition at line 57 of file cpu.h.

Referenced by ff_get_cpu_flags_ppc().

#define AV_CPU_FLAG_POWER8   0x0004

ISA 2.07.

Definition at line 58 of file cpu.h.

Referenced by ff_get_cpu_flags_ppc().

#define AV_CPU_FLAG_ARMV5TE   (1 << 0)

Definition at line 60 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), and ff_get_cpu_flags_arm().

#define AV_CPU_FLAG_ARMV6   (1 << 1)

Definition at line 61 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), and ff_get_cpu_flags_arm().

#define AV_CPU_FLAG_ARMV6T2   (1 << 2)

Definition at line 62 of file cpu.h.

Referenced by av_parse_cpu_caps(), and av_parse_cpu_flags().

#define AV_CPU_FLAG_VFP   (1 << 3)

Definition at line 63 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), and ff_get_cpu_flags_aarch64().

#define AV_CPU_FLAG_VFPV3   (1 << 4)

Definition at line 64 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), and ff_get_cpu_flags_arm().

#define AV_CPU_FLAG_NEON   (1 << 5)
#define AV_CPU_FLAG_ARMV8   (1 << 6)

Definition at line 66 of file cpu.h.

Referenced by av_parse_cpu_caps(), av_parse_cpu_flags(), and ff_get_cpu_flags_aarch64().

#define AV_CPU_FLAG_VFP_VM   (1 << 7)

VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations.

Definition at line 67 of file cpu.h.

Referenced by av_parse_cpu_caps(), and av_parse_cpu_flags().

#define AV_CPU_FLAG_SETEND   (1 <<16)

Definition at line 68 of file cpu.h.

Referenced by av_parse_cpu_caps(), and ff_get_cpu_flags_arm().

Function Documentation

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 76 of file cpu.c.

Referenced by av_set_cpu_flags_mask(), check_cpu_flag(), D(), ff_ac3dsp_init_arm(), ff_ac3dsp_init_x86(), ff_alacdsp_init_x86(), ff_audio_convert_init_aarch64(), ff_audio_convert_init_arm(), ff_audio_convert_init_x86(), ff_audio_mix_init_x86(), ff_audio_resample_init_aarch64(), ff_audio_resample_init_arm(), ff_audiodsp_init_arm(), ff_audiodsp_init_ppc(), ff_audiodsp_init_x86(), ff_blend_init_x86(), ff_blockdsp_init_arm(), ff_blockdsp_init_ppc(), ff_blockdsp_init_x86(), ff_bswapdsp_init_x86(), ff_bwdif_init_x86(), ff_cavsdsp_init_x86(), ff_colorspacedsp_x86_init(), ff_dcadsp_init_x86(), ff_dct_encode_init_x86(), ff_dct_init_x86(), ff_diracdsp_init_x86(), ff_dither_init_x86(), ff_dnxhdenc_init_x86(), ff_dwt_init_x86(), ff_eq_init_x86(), ff_fdctdsp_init_ppc(), ff_fdctdsp_init_x86(), ff_fft_fixed_init_arm(), ff_fft_init_aarch64(), ff_fft_init_arm(), ff_fft_init_ppc(), ff_fft_init_x86(), ff_fixed_dsp_init_x86(), ff_flacdsp_init_x86(), ff_float_dsp_init_aarch64(), ff_float_dsp_init_arm(), ff_float_dsp_init_ppc(), ff_float_dsp_init_x86(), ff_fmt_convert_init_aarch64(), ff_fmt_convert_init_arm(), ff_fmt_convert_init_ppc(), ff_fmt_convert_init_x86(), ff_fspp_init_x86(), ff_g722dsp_init_arm(), ff_g722dsp_init_x86(), ff_get_unscaled_swscale_aarch64(), ff_get_unscaled_swscale_arm(), ff_get_unscaled_swscale_ppc(), ff_gradfun_init_x86(), ff_h263dsp_init_x86(), ff_h264_pred_init_aarch64(), ff_h264_pred_init_arm(), ff_h264chroma_init_aarch64(), ff_h264chroma_init_arm(), ff_h264chroma_init_ppc(), ff_h264chroma_init_x86(), ff_h264dsp_init_aarch64(), ff_h264dsp_init_arm(), ff_h264dsp_init_ppc(), ff_h264dsp_init_x86(), ff_h264qpel_init_aarch64(), ff_h264qpel_init_arm(), ff_h264qpel_init_ppc(), ff_h264qpel_init_x86(), ff_hevc_dsp_init_x86(), ff_hevcdsp_init_arm(), ff_hpeldsp_init_aarch64(), ff_hpeldsp_init_arm(), ff_hpeldsp_init_ppc(), ff_hpeldsp_init_x86(), ff_huffyuvdsp_init_ppc(), ff_huffyuvdsp_init_x86(), ff_huffyuvencdsp_init_x86(), ff_idctdsp_init_arm(), ff_idctdsp_init_ppc(), ff_idctdsp_init_x86(), ff_idet_init_x86(), ff_imdct15_init_aarch64(), ff_init_lls_x86(), ff_interlace_init_x86(), ff_jpeg2000dsp_init_x86(), ff_llauddsp_init_arm(), ff_llauddsp_init_ppc(), ff_llauddsp_init_x86(), ff_llviddsp_init_x86(), ff_lpc_init_x86(), ff_maskedmerge_init_x86(), ff_me_cmp_init_arm(), 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_mpegvideodsp_init_x86(), ff_mpegvideoencdsp_init_arm(), ff_mpegvideoencdsp_init_ppc(), ff_mpegvideoencdsp_init_x86(), ff_mpv_common_init_arm(), ff_mpv_common_init_neon(), ff_mpv_common_init_ppc(), ff_mpv_common_init_x86(), ff_noise_init_x86(), ff_pixblockdsp_init_arm(), ff_pixblockdsp_init_ppc(), ff_pixblockdsp_init_x86(), ff_pixelutils_sad_init_x86(), ff_pngdsp_init_x86(), ff_pp7_init_x86(), ff_proresdsp_init_x86(), ff_psdsp_init_arm(), ff_psdsp_init_x86(), ff_psnr_init_x86(), ff_pullup_init_x86(), 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_sbrdsp_init_arm(), ff_sbrdsp_init_x86(), ff_showcqt_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_ppc(), 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_tinterlace_init_x86(), ff_ttadsp_init_x86(), ff_v210_x86_init(), ff_v210enc_init_x86(), ff_vc1dsp_init_aarch64(), ff_vc1dsp_init_arm(), ff_vc1dsp_init_ppc(), ff_vc1dsp_init_x86(), ff_videodsp_init_aarch64(), ff_videodsp_init_arm(), ff_videodsp_init_x86(), ff_volume_init_x86(), ff_vorbisdsp_init_aarch64(), ff_vorbisdsp_init_arm(), ff_vorbisdsp_init_ppc(), ff_vorbisdsp_init_x86(), ff_vp3dsp_init_arm(), ff_vp3dsp_init_ppc(), ff_vp3dsp_init_x86(), ff_vp6dsp_init_arm(), ff_vp6dsp_init_x86(), ff_vp78dsp_init_arm(), ff_vp78dsp_init_ppc(), ff_vp78dsp_init_x86(), ff_vp8dsp_init_arm(), ff_vp8dsp_init_x86(), ff_vp9dsp_init_16bpp_x86(), ff_vp9dsp_init_x86(), ff_w3fdif_init_x86(), ff_xvid_idct_init_x86(), ff_yadif_init_x86(), ff_yuv2rgb_init_ppc(), ff_yuv2rgb_init_tables_ppc(), ff_yuv2rgb_init_x86(), INIT_FUNC(), main(), multiple_resample(), opt_cpuflags(), pp_get_context(), PRED4x4(), rgb2rgb_init_x86(), swri_audio_convert_init_aarch64(), swri_audio_convert_init_arm(), swri_audio_convert_init_x86(), swri_resample_dsp_arm_init(), swri_resample_dsp_x86_init(), sws_init_context(), and swscale().

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 49 of file cpu.c.

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

attribute_deprecated void av_set_cpu_flags_mask ( int  mask)

Set a mask on flags returned by av_get_cpu_flags().

This function is mainly useful for testing. Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible

Warning
this function is not thread safe.

Definition at line 94 of file cpu.c.

attribute_deprecated int av_parse_cpu_flags ( const char *  s)

Parse CPU flags from a string.

The returned flags contain the specified flags as well as related unspecified flags.

This function exists only for compatibility with libav. Please use av_parse_cpu_caps() when possible.

Returns
a combination of AV_CPU_* flags, negative on error.

Definition at line 101 of file cpu.c.

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 181 of file cpu.c.

Referenced by main(), and opt_cpuflags().

int av_cpu_count ( void  )
Returns
the number of logical CPU cores present.

Definition at line 256 of file cpu.c.

Referenced by ff_frame_thread_encoder_init(), ff_frame_thread_init(), ff_slice_thread_init(), main(), and thread_init_internal().