FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
cpu.c File Reference
#include <stdint.h>
#include "cpu.h"
#include "cpu_internal.h"
#include "config.h"
#include "opt.h"
#include "common.h"

Go to the source code of this file.

Macros

#define CPUFLAG_MMXEXT   (AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT | AV_CPU_FLAG_CMOV)
 
#define CPUFLAG_3DNOW   (AV_CPU_FLAG_3DNOW | AV_CPU_FLAG_MMX)
 
#define CPUFLAG_3DNOWEXT   (AV_CPU_FLAG_3DNOWEXT | CPUFLAG_3DNOW)
 
#define CPUFLAG_SSE   (AV_CPU_FLAG_SSE | CPUFLAG_MMXEXT)
 
#define CPUFLAG_SSE2   (AV_CPU_FLAG_SSE2 | CPUFLAG_SSE)
 
#define CPUFLAG_SSE2SLOW   (AV_CPU_FLAG_SSE2SLOW | CPUFLAG_SSE2)
 
#define CPUFLAG_SSE3   (AV_CPU_FLAG_SSE3 | CPUFLAG_SSE2)
 
#define CPUFLAG_SSE3SLOW   (AV_CPU_FLAG_SSE3SLOW | CPUFLAG_SSE3)
 
#define CPUFLAG_SSSE3   (AV_CPU_FLAG_SSSE3 | CPUFLAG_SSE3)
 
#define CPUFLAG_SSE4   (AV_CPU_FLAG_SSE4 | CPUFLAG_SSSE3)
 
#define CPUFLAG_SSE42   (AV_CPU_FLAG_SSE42 | CPUFLAG_SSE4)
 
#define CPUFLAG_AVX   (AV_CPU_FLAG_AVX | CPUFLAG_SSE42)
 
#define CPUFLAG_AVXSLOW   (AV_CPU_FLAG_AVXSLOW | CPUFLAG_AVX)
 
#define CPUFLAG_XOP   (AV_CPU_FLAG_XOP | CPUFLAG_AVX)
 
#define CPUFLAG_FMA3   (AV_CPU_FLAG_FMA3 | CPUFLAG_AVX)
 
#define CPUFLAG_FMA4   (AV_CPU_FLAG_FMA4 | CPUFLAG_AVX)
 
#define CPUFLAG_AVX2   (AV_CPU_FLAG_AVX2 | CPUFLAG_AVX)
 
#define CPUFLAG_BMI2   (AV_CPU_FLAG_BMI2 | AV_CPU_FLAG_BMI1)
 
#define CPUFLAG_AESNI   (AV_CPU_FLAG_AESNI | CPUFLAG_SSE42)
 

Functions

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...
 
void av_set_cpu_flags_mask (int mask)
 Set a mask on flags returned by av_get_cpu_flags(). More...
 
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)
 

Variables

static int flags
 
static int checked
 

Macro Definition Documentation

#define CPUFLAG_MMXEXT   (AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT | AV_CPU_FLAG_CMOV)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_3DNOW   (AV_CPU_FLAG_3DNOW | AV_CPU_FLAG_MMX)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_3DNOWEXT   (AV_CPU_FLAG_3DNOWEXT | CPUFLAG_3DNOW)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE   (AV_CPU_FLAG_SSE | CPUFLAG_MMXEXT)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE2   (AV_CPU_FLAG_SSE2 | CPUFLAG_SSE)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE2SLOW   (AV_CPU_FLAG_SSE2SLOW | CPUFLAG_SSE2)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE3   (AV_CPU_FLAG_SSE3 | CPUFLAG_SSE2)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE3SLOW   (AV_CPU_FLAG_SSE3SLOW | CPUFLAG_SSE3)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSSE3   (AV_CPU_FLAG_SSSE3 | CPUFLAG_SSE3)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE4   (AV_CPU_FLAG_SSE4 | CPUFLAG_SSSE3)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_SSE42   (AV_CPU_FLAG_SSE42 | CPUFLAG_SSE4)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_AVX   (AV_CPU_FLAG_AVX | CPUFLAG_SSE42)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_AVXSLOW   (AV_CPU_FLAG_AVXSLOW | CPUFLAG_AVX)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_XOP   (AV_CPU_FLAG_XOP | CPUFLAG_AVX)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_FMA3   (AV_CPU_FLAG_FMA3 | CPUFLAG_AVX)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_FMA4   (AV_CPU_FLAG_FMA4 | CPUFLAG_AVX)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_AVX2   (AV_CPU_FLAG_AVX2 | CPUFLAG_AVX)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_BMI2   (AV_CPU_FLAG_BMI2 | AV_CPU_FLAG_BMI1)

Referenced by av_parse_cpu_flags().

#define CPUFLAG_AESNI   (AV_CPU_FLAG_AESNI | CPUFLAG_SSE42)

Referenced by av_parse_cpu_flags().

Function Documentation

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().

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_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.

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().

Variable Documentation

int flags
static
Examples:
qsvdec.c.

Definition at line 47 of file cpu.c.

Referenced by ape_tag_read_field(), apply_param_change(), asf_read_stream_properties(), asf_write_packet(), av_force_cpu_flags(), av_get_cpu_flags(), av_opt_query_ranges(), av_opt_set_defaults2(), av_parse_cpu_flags(), av_read_image_line(), av_set_cpu_flags_mask(), av_timecode_init(), av_vdpau_bind_context(), av_write_image_line(), avfilter_graph_queue_command(), avfilter_graph_set_auto_convert(), avi_add_ientry(), avi_read_idx1(), avi_write_header(), avi_write_packet_internal(), avio_check(), bidir_refine(), check(), check_codec_match(), decode_frame(), decode_frame_header(), decode_header(), decode_hextile(), decode_init(), decode_mb_b(), decode_rle(), decode_slice(), decode_subblock(), decode_subblock3(), device_open(), dnxhd_decode_dct_block(), dump_paramchange(), dump_stream_format(), dxa_read_header(), encode_codebook(), encode_frame(), encode_mode(), epzs_motion_search2(), epzs_motion_search4(), event_thread(), fbdev_read_header(), fbdev_write_header(), ff_ac3_apply_rematrixing(), ff_add_index_entry(), ff_alsa_open(), ff_get_unscaled_swscale(), ff_mediacodec_dec_decode(), ff_mms_asf_header_parser(), ff_mp4_parse_es_descr(), ff_rdt_parse_packet(), ffat_init_encoder(), fileTest(), filter_codec_opts(), filter_frame(), flush(), flv_read_packet(), flv_write_packet(), get_audio_flags(), get_mb_score(), get_needed_flags(), get_opt_flags_string(), gif_read_image(), hls_read_seek(), hpel_motion_search(), init_context_defaults(), init_noise(), ipvideo_decode_block_opcode_0x7(), ipvideo_decode_block_opcode_0x7_16(), ipvideo_decode_block_opcode_0x8(), ipvideo_decode_block_opcode_0x8_16(), ipvideo_decode_block_opcode_0x9(), ipvideo_decode_block_opcode_0x9_16(), ipvideo_decode_block_opcode_0xA(), ipvideo_decode_block_opcode_0xA_16(), is_animated_webp_packet(), lvf_read_packet(), main(), matroska_parse_block(), matroska_parse_wavpack(), mjpeg_decode_app(), mkv_write_vtt_blocks(), mov_parse_stsd_audio(), mov_read_saiz(), mov_read_tfhd(), mov_read_timecode_track(), mov_read_tkhd(), mov_read_trun(), mov_write_tfhd_tag(), mov_write_tkhd_tag(), mov_write_trun_tag(), mpeg_decode_user_data(), mpegps_read_pes_header(), mpegts_push_data(), mpegts_write_pes(), mpegts_write_section1(), msvideo1_decode_16bit(), msvideo1_decode_8bit(), mxf_compute_ptses_fake_index(), mxf_parse_physical_source_package(), mxf_parse_structural_metadata(), noise(), nut_write_packet(), nvenc_check_capabilities(), ogg_read_page(), old_codec37(), opt_cpuflags(), opt_loglevel(), parse_MP4SLDescrTag(), parse_opus_ts_header(), parse_pcr(), parse_pixel_format(), pmp_header(), pp_config_props(), process_command(), qpel_motion_search(), qsv_transcode_init(), read_desc_chunk(), read_header(), read_moof_duration(), read_packet(), read_part_of_packet(), read_trun_duration(), rm_read_dts(), rm_read_header(), rm_read_packet(), rtp_parse_one_packet(), rtp_parse_packet_internal(), rtp_resolve_host(), rv10_write_header(), sdr2_read_packet(), selfTest(), seqvideo_decode(), show_help_default(), smacker_read_packet(), sws_alloc_set_opts(), sws_getCachedContext(), sws_init_context(), swscale(), thread_get_buffer_internal(), txd_decode_frame(), udp_resolve_host(), url_alloc_for_protocol(), vaapi_map_frame(), validate_avframe_allocation(), video_open(), vmdaudio_decode_frame(), vorbis_packet(), wmavoice_decode_init(), write_header(), write_sm_data(), and wv_read_block_header().

int checked
static