| @@ -117,6 +117,16 @@ int ff_qsv_print_error(void *log_ctx, mfxStatus err, | |||||
| return ret; | return ret; | ||||
| } | } | ||||
| int ff_qsv_print_warning(void *log_ctx, mfxStatus err, | |||||
| const char *warning_string) | |||||
| { | |||||
| const char *desc; | |||||
| int ret; | |||||
| ret = ff_qsv_map_error(err, &desc); | |||||
| av_log(log_ctx, AV_LOG_WARNING, "%s: %s (%d)\n", warning_string, desc, err); | |||||
| return ret; | |||||
| } | |||||
| int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) | int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) | ||||
| { | { | ||||
| switch (format) { | switch (format) { | ||||
| @@ -62,6 +62,9 @@ int ff_qsv_map_error(mfxStatus mfx_err, const char **desc); | |||||
| int ff_qsv_print_error(void *log_ctx, mfxStatus err, | int ff_qsv_print_error(void *log_ctx, mfxStatus err, | ||||
| const char *error_string); | const char *error_string); | ||||
| int ff_qsv_print_warning(void *log_ctx, mfxStatus err, | |||||
| const char *warning_string); | |||||
| int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id); | int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id); | ||||
| int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc); | int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc); | ||||
| @@ -794,6 +794,9 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q) | |||||
| if (ret < 0) | if (ret < 0) | ||||
| return ff_qsv_print_error(avctx, ret, | return ff_qsv_print_error(avctx, ret, | ||||
| "Error initializing the encoder"); | "Error initializing the encoder"); | ||||
| else if (ret > 0) | |||||
| ff_qsv_print_warning(avctx, ret, | |||||
| "Warning in encoder initialization"); | |||||
| ret = qsv_retrieve_enc_params(avctx, q); | ret = qsv_retrieve_enc_params(avctx, q); | ||||
| if (ret < 0) { | if (ret < 0) { | ||||
| @@ -974,6 +977,9 @@ static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, | |||||
| av_usleep(1); | av_usleep(1); | ||||
| } while (ret == MFX_WRN_DEVICE_BUSY || ret == MFX_WRN_IN_EXECUTION); | } while (ret == MFX_WRN_DEVICE_BUSY || ret == MFX_WRN_IN_EXECUTION); | ||||
| if (ret > 0) | |||||
| ff_qsv_print_warning(avctx, ret, "Warning during encoding"); | |||||
| if (ret < 0) { | if (ret < 0) { | ||||
| av_packet_unref(&new_pkt); | av_packet_unref(&new_pkt); | ||||
| av_freep(&bs); | av_freep(&bs); | ||||