diff options
author | Zhong Li <zhong.li@intel.com> | 2018-10-25 18:44:37 +0800 |
---|---|---|
committer | Zhong Li <zhong.li@intel.com> | 2018-12-07 17:09:23 +0800 |
commit | 33df1afe39fa401e5421ff3489e25b022b74f8ed (patch) | |
tree | b44033a87024e5aa5687bb23468757f25c86b21c /libavcodec/qsvenc.c | |
parent | 34cba655576761a25f7fbd64f8406f19185f69fb (diff) | |
download | ffmpeg-33df1afe39fa401e5421ff3489e25b022b74f8ed.tar.gz |
lavc/qsvenc: make hevc alignment same as h264 for 1.19+ version
It is to clean up to the code and To-Do list.
Signed-off-by: Zhong Li <zhong.li@intel.com>
Diffstat (limited to 'libavcodec/qsvenc.c')
-rw-r--r-- | libavcodec/qsvenc.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index a9e44be981..331f49faac 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -446,6 +446,12 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) 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); if (ret < 0) return AVERROR_BUG; @@ -494,10 +500,10 @@ static int init_video_param(AVCodecContext *avctx, QSVEncContext *q) q->param.mfx.FrameInfo.BitDepthChroma = desc->comp[0].depth; q->param.mfx.FrameInfo.Shift = desc->comp[0].depth > 8; - // TODO: detect version of MFX--if the minor version is greater than - // or equal to 19, then can use the same alignment settings as H.264 - // for HEVC - q->width_align = avctx->codec_id == AV_CODEC_ID_HEVC ? 32 : 16; + // If the minor version is greater than or equal to 19, + // then can use the same alignment settings as H.264 for HEVC + q->width_align = (avctx->codec_id != AV_CODEC_ID_HEVC || + QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 19)) ? 16 : 32; q->param.mfx.FrameInfo.Width = FFALIGN(avctx->width, q->width_align); if (avctx->flags & AV_CODEC_FLAG_INTERLACED_DCT) { @@ -677,8 +683,7 @@ FF_ENABLE_DEPRECATION_WARNINGS #endif #if QSV_HAVE_MF - ret = MFXQueryVersion(q->session,&ver); - if (ret >= MFX_ERR_NONE && QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) { + if (QSV_RUNTIME_VERSION_ATLEAST(ver, 1, 25)) { q->extmfp.Header.BufferId = MFX_EXTBUFF_MULTI_FRAME_PARAM; q->extmfp.Header.BufferSz = sizeof(q->extmfp); |