Merge commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109'
* commit '2d6b3f3a9dce409ca51d70ef4b85c0593bb4b109': qsvenc: Provide a detailed error message if the parameters are invalid Merged-by: Mark Thompson <sw@jkqxz.net>
This commit is contained in:
		
						commit
						0cf9fa9924
					
				| @ -348,15 +348,34 @@ static int select_rc_mode(AVCodecContext *avctx, QSVEncContext *q) | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| static int rc_supported(QSVEncContext *q) | ||||
| static int check_enc_param(AVCodecContext *avctx, QSVEncContext *q) | ||||
| { | ||||
|     mfxVideoParam param_out = { .mfx.CodecId = q->param.mfx.CodecId }; | ||||
|     mfxStatus ret; | ||||
| 
 | ||||
| #define UNMATCH(x) (param_out.mfx.x != q->param.mfx.x) | ||||
| 
 | ||||
|     ret = MFXVideoENCODE_Query(q->session, &q->param, ¶m_out); | ||||
|     if (ret < 0 || | ||||
|         param_out.mfx.RateControlMethod != q->param.mfx.RateControlMethod) | ||||
| 
 | ||||
|     if (ret < 0) { | ||||
|         if (UNMATCH(CodecId)) | ||||
|             av_log(avctx, AV_LOG_ERROR, "Current codec type is unsupported\n"); | ||||
|         if (UNMATCH(CodecProfile)) | ||||
|             av_log(avctx, AV_LOG_ERROR, "Current profile is unsupported\n"); | ||||
|         if (UNMATCH(RateControlMethod)) | ||||
|             av_log(avctx, AV_LOG_ERROR, "Selected ratecontrol mode is unsupported\n"); | ||||
|         if (UNMATCH(LowPower)) | ||||
|               av_log(avctx, AV_LOG_ERROR, "Low power mode is unsupported\n"); | ||||
|         if (UNMATCH(FrameInfo.FrameRateExtN) || UNMATCH(FrameInfo.FrameRateExtN)) | ||||
|               av_log(avctx, AV_LOG_ERROR, "Current frame rate is unsupported\n"); | ||||
|         if (UNMATCH(FrameInfo.PicStruct)) | ||||
|               av_log(avctx, AV_LOG_ERROR, "Current picture structure is unsupported\n"); | ||||
|         if (UNMATCH(FrameInfo.Width) || UNMATCH(FrameInfo.Height)) | ||||
|               av_log(avctx, AV_LOG_ERROR, "Current resolution is unsupported\n"); | ||||
|         if (UNMATCH(FrameInfo.FourCC)) | ||||
|               av_log(avctx, AV_LOG_ERROR, "Current pixel format is unsupported\n"); | ||||
|         return 0; | ||||
|     } | ||||
|     return 1; | ||||
| } | ||||
| 
 | ||||
| @ -634,10 +653,10 @@ FF_ENABLE_DEPRECATION_WARNINGS | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     if (!rc_supported(q)) { | ||||
|     if (!check_enc_param(avctx,q)) { | ||||
|         av_log(avctx, AV_LOG_ERROR, | ||||
|                "Selected ratecontrol mode is not supported by the QSV " | ||||
|                "runtime. Choose a different mode.\n"); | ||||
|                "some encoding parameters are not supported by the QSV " | ||||
|                "runtime. Please double check the input parameters.\n"); | ||||
|         return AVERROR(ENOSYS); | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user