Commit b47446cc authored by Zhong Li's avatar Zhong Li

lavc/qsvenc: make the queried libmfx version easily reused

Signed-off-by: 's avatarZhong Li <zhong.li@intel.com>
parent 81ae387a
...@@ -468,13 +468,6 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) ...@@ -468,13 +468,6 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
int target_bitrate_kbps, max_bitrate_kbps, brc_param_multiplier; int target_bitrate_kbps, max_bitrate_kbps, brc_param_multiplier;
int buffer_size_in_kilobytes, initial_delay_in_kilobytes; int buffer_size_in_kilobytes, initial_delay_in_kilobytes;
int ret; int ret;
mfxVersion ver;
ret = MFXQueryVersion(q->session,&ver);
if (ret != MFX_ERR_NONE) {
av_log(avctx, AV_LOG_ERROR, "Error getting the session handle\n");
return AVERROR_UNKNOWN;
}
ret = ff_qsv_codec_id_to_mfx(avctx->codec_id); ret = ff_qsv_codec_id_to_mfx(avctx->codec_id);
if (ret < 0) if (ret < 0)
...@@ -530,7 +523,7 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) ...@@ -530,7 +523,7 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q)
// If the minor version is greater than or equal to 19, // If the minor version is greater than or equal to 19,
// then can use the same alignment settings as H.264 for HEVC // then can use the same alignment settings as H.264 for HEVC
q->width_align = (avctx->codec_id != AV_CODEC_ID_HEVC || q->width_align = (avctx->codec_id != AV_CODEC_ID_HEVC ||
QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 19)) ? 16 : 32; QSV_RUNTIME_VERSION_ATLEAST(q->ver, 1, 19)) ? 16 : 32;
q->param.mfx.FrameInfo.Width = FFALIGN(avctx->width, q->width_align); q->param.mfx.FrameInfo.Width = FFALIGN(avctx->width, q->width_align);
if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) {
...@@ -729,7 +722,7 @@ FF_ENABLE_DEPRECATION_WARNINGS ...@@ -729,7 +722,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
#endif #endif
#if QSV_HAVE_MF #if QSV_HAVE_MF
if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) { if (QSV_RUNTIME_VERSION_ATLEAST(q->ver, 1, 25)) {
q->extmfp.Header.BufferId = MFX_EXTBUFF_MULTI_FRAME_PARAM; q->extmfp.Header.BufferId = MFX_EXTBUFF_MULTI_FRAME_PARAM;
q->extmfp.Header.BufferSz = sizeof(q->extmfp); q->extmfp.Header.BufferSz = sizeof(q->extmfp);
...@@ -985,6 +978,12 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q) ...@@ -985,6 +978,12 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q)
if (ret < 0) if (ret < 0)
return ret; return ret;
ret = MFXQueryVersion(q->session,&q->ver);
if (ret < 0) {
return ff_qsv_print_error(avctx, ret,
"Error querying mfx version");
}
// in the mfxInfoMFX struct, JPEG is different from other codecs // in the mfxInfoMFX struct, JPEG is different from other codecs
switch (avctx->codec_id) { switch (avctx->codec_id) {
case AV_CODEC_ID_MJPEG: case AV_CODEC_ID_MJPEG:
......
...@@ -131,6 +131,8 @@ typedef struct QSVEncContext { ...@@ -131,6 +131,8 @@ typedef struct QSVEncContext {
QSVFramesContext frames_ctx; QSVFramesContext frames_ctx;
mfxVersion ver;
// options set by the caller // options set by the caller
int async_depth; int async_depth;
int idr_interval; int idr_interval;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment