FFmpeg  4.4.5
Macros | Functions | Variables
qsvenc.c File Reference
#include <string.h>
#include <sys/types.h>
#include <mfx/mfxvideo.h>
#include "libavutil/common.h"
#include "libavutil/hwcontext.h"
#include "libavutil/hwcontext_qsv.h"
#include "libavutil/mem.h"
#include "libavutil/log.h"
#include "libavutil/time.h"
#include "libavutil/imgutils.h"
#include "libavcodec/bytestream.h"
#include "avcodec.h"
#include "internal.h"
#include "packet_internal.h"
#include "qsv.h"
#include "qsv_internal.h"
#include "qsvenc.h"

Go to the source code of this file.

Macros

#define UNMATCH(x)   (param_out.mfx.x != q->param.mfx.x)
 

Functions

static const char * print_profile (mfxU16 profile)
 
static const char * print_ratecontrol (mfxU16 rc_mode)
 
static const char * print_threestate (mfxU16 val)
 
static void dump_video_param (AVCodecContext *avctx, QSVEncContext *q, mfxExtBuffer **coding_opts)
 
static int select_rc_mode (AVCodecContext *avctx, QSVEncContext *q)
 
static int check_enc_param (AVCodecContext *avctx, QSVEncContext *q)
 
static int init_video_param_jpeg (AVCodecContext *avctx, QSVEncContext *q)
 
static int init_video_param (AVCodecContext *avctx, QSVEncContext *q)
 
static int qsv_retrieve_enc_jpeg_params (AVCodecContext *avctx, QSVEncContext *q)
 
static int qsv_retrieve_enc_vp9_params (AVCodecContext *avctx, QSVEncContext *q)
 
static int qsv_retrieve_enc_params (AVCodecContext *avctx, QSVEncContext *q)
 
static int qsv_init_opaque_alloc (AVCodecContext *avctx, QSVEncContext *q)
 
static int qsvenc_init_session (AVCodecContext *avctx, QSVEncContext *q)
 
static unsigned int qsv_fifo_item_size (void)
 
static unsigned int qsv_fifo_size (const AVFifoBuffer *fifo)
 
int ff_qsv_enc_init (AVCodecContext *avctx, QSVEncContext *q)
 
static void free_encoder_ctrl_payloads (mfxEncodeCtrl *enc_ctrl)
 
static void clear_unused_frames (QSVEncContext *q)
 
static int get_free_frame (QSVEncContext *q, QSVFrame **f)
 
static int submit_frame (QSVEncContext *q, const AVFrame *frame, QSVFrame **new_frame)
 
static void print_interlace_msg (AVCodecContext *avctx, QSVEncContext *q)
 
static int encode_frame (AVCodecContext *avctx, QSVEncContext *q, const AVFrame *frame)
 
int ff_qsv_encode (AVCodecContext *avctx, QSVEncContext *q, AVPacket *pkt, const AVFrame *frame, int *got_packet)
 
int ff_qsv_enc_close (AVCodecContext *avctx, QSVEncContext *q)
 

Variables

struct {
   mfxU16   profile
 
   const char *   name
 
profile_names []
 
struct {
   mfxU16   rc_mode
 
   const char *   name
 
rc_names []
 
const AVCodecHWConfigInternal *const ff_qsv_enc_hw_configs []
 

Macro Definition Documentation

◆ UNMATCH

#define UNMATCH (   x)    (param_out.mfx.x != q->param.mfx.x)

Function Documentation

◆ print_profile()

static const char* print_profile ( mfxU16  profile)
static

Definition at line 74 of file qsvenc.c.

Referenced by dump_video_param().

◆ print_ratecontrol()

static const char* print_ratecontrol ( mfxU16  rc_mode)
static

Definition at line 114 of file qsvenc.c.

Referenced by dump_video_param().

◆ print_threestate()

static const char* print_threestate ( mfxU16  val)
static

Definition at line 123 of file qsvenc.c.

Referenced by dump_video_param().

◆ dump_video_param()

static void dump_video_param ( AVCodecContext avctx,
QSVEncContext q,
mfxExtBuffer **  coding_opts 
)
static

Definition at line 132 of file qsvenc.c.

Referenced by qsv_retrieve_enc_params().

◆ select_rc_mode()

static int select_rc_mode ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 300 of file qsvenc.c.

Referenced by init_video_param().

◆ check_enc_param()

static int check_enc_param ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 389 of file qsvenc.c.

Referenced by init_video_param().

◆ init_video_param_jpeg()

static int init_video_param_jpeg ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 420 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ init_video_param()

static int init_video_param ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 484 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ qsv_retrieve_enc_jpeg_params()

static int qsv_retrieve_enc_jpeg_params ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 817 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ qsv_retrieve_enc_vp9_params()

static int qsv_retrieve_enc_vp9_params ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 835 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ qsv_retrieve_enc_params()

static int qsv_retrieve_enc_params ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 884 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ qsv_init_opaque_alloc()

static int qsv_init_opaque_alloc ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 1011 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ qsvenc_init_session()

static int qsvenc_init_session ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 1048 of file qsvenc.c.

Referenced by ff_qsv_enc_init().

◆ qsv_fifo_item_size()

static unsigned int qsv_fifo_item_size ( void  )
inlinestatic

Definition at line 1090 of file qsvenc.c.

Referenced by ff_qsv_enc_init(), and qsv_fifo_size().

◆ qsv_fifo_size()

static unsigned int qsv_fifo_size ( const AVFifoBuffer fifo)
inlinestatic

Definition at line 1095 of file qsvenc.c.

Referenced by ff_qsv_encode().

◆ ff_qsv_enc_init()

int ff_qsv_enc_init ( AVCodecContext avctx,
QSVEncContext q 
)

Definition at line 1100 of file qsvenc.c.

Referenced by qsv_enc_init().

◆ free_encoder_ctrl_payloads()

static void free_encoder_ctrl_payloads ( mfxEncodeCtrl *  enc_ctrl)
static

Definition at line 1236 of file qsvenc.c.

Referenced by clear_unused_frames().

◆ clear_unused_frames()

static void clear_unused_frames ( QSVEncContext q)
static

Definition at line 1247 of file qsvenc.c.

Referenced by get_free_frame().

◆ get_free_frame()

static int get_free_frame ( QSVEncContext q,
QSVFrame **  f 
)
static

Definition at line 1262 of file qsvenc.c.

Referenced by submit_frame().

◆ submit_frame()

static int submit_frame ( QSVEncContext q,
const AVFrame frame,
QSVFrame **  new_frame 
)
static

Definition at line 1302 of file qsvenc.c.

Referenced by encode_frame().

◆ print_interlace_msg()

static void print_interlace_msg ( AVCodecContext avctx,
QSVEncContext q 
)
static

Definition at line 1381 of file qsvenc.c.

Referenced by encode_frame().

◆ encode_frame()

static int encode_frame ( AVCodecContext avctx,
QSVEncContext q,
const AVFrame frame 
)
static

Definition at line 1393 of file qsvenc.c.

Referenced by ff_qsv_encode().

◆ ff_qsv_encode()

int ff_qsv_encode ( AVCodecContext avctx,
QSVEncContext q,
AVPacket pkt,
const AVFrame frame,
int got_packet 
)

Definition at line 1521 of file qsvenc.c.

Referenced by qsv_enc_frame().

◆ ff_qsv_enc_close()

int ff_qsv_enc_close ( AVCodecContext avctx,
QSVEncContext q 
)

Definition at line 1613 of file qsvenc.c.

Referenced by qsv_enc_close(), and qsv_enc_init().

Variable Documentation

◆ profile

mfxU16 profile

◆ name

const char* name
Examples
ffhash.c.

Definition at line 46 of file qsvenc.c.

Referenced by add_input_streams(), add_meta(), add_metadata(), add_tracked_method(), add_video_device(), amf_get_field_value2(), amf_get_property_buffer(), amf_set_property_buffer(), append_postfix(), apply_filter(), asf_read_ext_content(), asf_read_ext_content_desc(), asf_read_marker(), asf_read_metadata(), asf_read_metadata_obj(), asf_read_value(), asf_set_metadata(), asf_store_aspect_ratio(), audio_frame_cksum(), av_bitstream_filter_init(), av_bsf_get_by_name(), av_chroma_location_from_name(), av_color_primaries_from_name(), av_color_range_from_name(), av_color_space_from_name(), av_color_transfer_from_name(), av_dump_format(), av_get_colorspace_name(), av_match_list(), av_match_name(), av_opt_find(), av_opt_find2(), av_opt_get(), av_opt_get_channel_layout(), av_opt_get_dict_val(), av_opt_get_double(), av_opt_get_image_size(), av_opt_get_int(), av_opt_get_pixel_fmt(), av_opt_get_q(), av_opt_get_sample_fmt(), av_opt_get_video_rate(), av_opt_is_set_to_default_by_name(), av_opt_next(), av_opt_ptr(), av_opt_set(), av_opt_set_bin(), av_opt_set_channel_layout(), av_opt_set_dict_val(), av_opt_set_double(), av_opt_set_image_size(), av_opt_set_int(), av_opt_set_pixel_fmt(), av_opt_set_q(), av_opt_set_sample_fmt(), av_opt_set_video_rate(), av_spherical_from_name(), av_stereo3d_from_name(), avcodec_descriptor_get_by_name(), avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(), avf_read_header(), avfilter_get_by_name(), avfilter_graph_alloc_filter(), avfilter_graph_create_filter(), avfilter_graph_get_filter(), avi_read_nikon(), avio_protocol_get_class(), cbs_av1_read_increment(), cbs_av1_read_leb128(), cbs_av1_read_ns(), cbs_av1_read_subexp(), cbs_av1_read_uvlc(), cbs_av1_write_increment(), cbs_av1_write_leb128(), cbs_av1_write_ns(), cbs_av1_write_subexp(), cbs_av1_write_uvlc(), cbs_read_se_golomb(), cbs_read_ue_golomb(), cbs_vp9_read_increment(), cbs_vp9_read_le(), cbs_vp9_read_s(), cbs_vp9_write_increment(), cbs_vp9_write_le(), cbs_vp9_write_s(), cbs_write_se_golomb(), cbs_write_ue_golomb(), check_add_int16(), check_idct_multiple(), check_list(), checkasm_check_h264pred(), choose_implementation(), choose_pix_fmts(), clip_with_log(), color_table_compare(), config_output(), configure_input_audio_filter(), configure_input_video_filter(), configure_output_audio_filter(), configure_output_video_filter(), create_filter(), decode_header(), decode_info_header(), eval_function(), exif_add_metadata(), exif_decode_tag(), ff_alsa_get_device_list(), ff_alsa_open(), ff_AMediaCodec_getName(), ff_AMediaCodecList_getCodecNameByType(), ff_AMediaFormat_getBuffer(), ff_AMediaFormat_getFloat(), ff_AMediaFormat_getInt32(), ff_AMediaFormat_getInt64(), ff_AMediaFormat_getString(), ff_AMediaFormat_setBuffer(), ff_AMediaFormat_setFloat(), ff_AMediaFormat_setInt32(), ff_AMediaFormat_setInt64(), ff_AMediaFormat_setString(), ff_amf_get_field_value(), ff_ass_split_dialog2(), ff_attributes_dump(), ff_audio_data_alloc(), ff_audio_data_init(), ff_cbs_read_signed(), ff_cbs_read_unsigned(), ff_cbs_trace_header(), ff_cbs_trace_syntax_element(), ff_cbs_write_signed(), ff_cbs_write_unsigned(), ff_decklink_init_device(), ff_dshow_filter_JoinFilterGraph(), ff_guid_str_buf(), ff_jni_exception_get_summary(), ff_jni_init_jfields(), ff_rm_read_mdpr_codecdata(), ff_rtp_handler_find_by_name(), ff_stream_add_bitstream_filter(), ff_tadd_bytes_metadata(), ff_tadd_doubles_metadata(), ff_tadd_long_metadata(), ff_tadd_rational_metadata(), ff_tadd_shorts_metadata(), ff_tadd_string_metadata(), ff_vk_add_descriptor_set(), ff_vk_init_shader(), find_codec_by_name(), find_codec_or_die(), find_font_id(), find_option(), gdigrab_read_header(), get_format(), get_geokey_name(), get_number(), get_vs_prop_int(), graticule16_column(), graticule16_row(), graticule_column(), graticule_row(), hex_log(), hw_device_default_name(), hw_device_free_all(), hw_device_get_by_name(), hw_device_init_from_string(), hw_device_init_from_type(), idct248_error(), init(), init_out(), insert_trim(), libopus_check_vorbis_layout(), libvorbis_setup(), list_voices(), load_path(), main(), mkv_check_tag_name(), modplug_load_metadata(), mov_text_font_name_cb(), mov_text_font_name_set(), mov_write_int8_metadata(), mov_write_raw_metadata_tag(), mov_write_string_metadata(), mov_write_string_tag(), mxf_free_metadataset(), mxf_write_tagged_value(), nvenc_check_device(), opt_find(), opt_loglevel(), param_write_hex(), param_write_int(), param_write_string(), parse_audio_var(), parse_cookie(), parse_device_name(), parse_filter(), parse_global_var(), parse_inputs(), parse_link_name(), parse_named_def(), parse_outputs(), parse_set_cookie(), parse_time_sequence(), parse_video_var(), pp_get_mode_by_name_and_quality(), print_help(), print_pkt_side_data(), process_metadata(), pulse_add_detected_device(), pulse_finish_context_operation(), pulse_finish_stream_operation(), put_bitstream_info(), read_extradata(), read_sm_data(), read_table(), rtmp_send_packet(), sdt_cb(), set_codec_from_probe_data(), set_format(), set_number(), show_colors(), show_formats_devices(), show_frame(), show_help_bsf(), show_help_codec(), show_help_demuxer(), show_help_muxer(), show_help_protocol(), show_layouts(), show_protocols(), split_commandline(), srt_font_name_cb(), test_device(), test_device_type(), test_motion(), usage(), v4l2_get_ext_ctrl(), v4l2_is_v4l_dev(), v4l2_set_ext_ctrl(), write_chapter(), write_ctoc(), writer_get_by_name(), writer_print_data(), writer_print_data_hash(), writer_print_integers(), and wtvfile_open2().

◆ 

const { ... } profile_names[]
Initial value:
= {
{ MFX_PROFILE_AVC_BASELINE, "baseline" },
{ MFX_PROFILE_AVC_MAIN, "main" },
{ MFX_PROFILE_AVC_EXTENDED, "extended" },
{ MFX_PROFILE_AVC_HIGH, "high" },
{ MFX_PROFILE_MPEG2_SIMPLE, "simple" },
{ MFX_PROFILE_MPEG2_MAIN, "main" },
{ MFX_PROFILE_MPEG2_HIGH, "high" },
{ MFX_PROFILE_VC1_SIMPLE, "simple" },
{ MFX_PROFILE_VC1_MAIN, "main" },
{ MFX_PROFILE_VC1_ADVANCED, "advanced" },
}

Referenced by print_profile().

◆ rc_mode

mfxU16 rc_mode

Definition at line 84 of file qsvenc.c.

Referenced by print_ratecontrol(), select_rc_mode(), and vaapi_encode_init_rate_control().

◆ 

const { ... } rc_names[]
Initial value:
= {
{ MFX_RATECONTROL_CBR, "CBR" },
{ MFX_RATECONTROL_VBR, "VBR" },
{ MFX_RATECONTROL_CQP, "CQP" },
}

Referenced by print_ratecontrol().

◆ ff_qsv_enc_hw_configs

const AVCodecHWConfigInternal* const ff_qsv_enc_hw_configs[]
Initial value:
= {
}
#define NULL
Definition: coverity.c:32
#define HW_CONFIG_ENCODER_DEVICE(format, device_type_)
Definition: hwconfig.h:96
#define HW_CONFIG_ENCODER_FRAMES(format, device_type_)
Definition: hwconfig.h:99

Definition at line 1659 of file qsvenc.c.