... | ... |
@@ -117,6 +117,16 @@ int ff_qsv_print_error(void *log_ctx, mfxStatus err, |
117 | 117 |
return ret; |
118 | 118 |
} |
119 | 119 |
|
120 |
+int ff_qsv_print_warning(void *log_ctx, mfxStatus err, |
|
121 |
+ const char *warning_string) |
|
122 |
+{ |
|
123 |
+ const char *desc; |
|
124 |
+ int ret; |
|
125 |
+ ret = ff_qsv_map_error(err, &desc); |
|
126 |
+ av_log(log_ctx, AV_LOG_WARNING, "%s: %s (%d)\n", warning_string, desc, err); |
|
127 |
+ return ret; |
|
128 |
+} |
|
129 |
+ |
|
120 | 130 |
int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc) |
121 | 131 |
{ |
122 | 132 |
switch (format) { |
... | ... |
@@ -62,6 +62,9 @@ int ff_qsv_map_error(mfxStatus mfx_err, const char **desc); |
62 | 62 |
int ff_qsv_print_error(void *log_ctx, mfxStatus err, |
63 | 63 |
const char *error_string); |
64 | 64 |
|
65 |
+int ff_qsv_print_warning(void *log_ctx, mfxStatus err, |
|
66 |
+ const char *warning_string); |
|
67 |
+ |
|
65 | 68 |
int ff_qsv_codec_id_to_mfx(enum AVCodecID codec_id); |
66 | 69 |
|
67 | 70 |
int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc); |
... | ... |
@@ -794,6 +794,9 @@ int ff_qsv_enc_init(AVCodecContext *avctx, QSVEncContext *q) |
794 | 794 |
if (ret < 0) |
795 | 795 |
return ff_qsv_print_error(avctx, ret, |
796 | 796 |
"Error initializing the encoder"); |
797 |
+ else if (ret > 0) |
|
798 |
+ ff_qsv_print_warning(avctx, ret, |
|
799 |
+ "Warning in encoder initialization"); |
|
797 | 800 |
|
798 | 801 |
ret = qsv_retrieve_enc_params(avctx, q); |
799 | 802 |
if (ret < 0) { |
... | ... |
@@ -974,6 +977,9 @@ static int encode_frame(AVCodecContext *avctx, QSVEncContext *q, |
974 | 974 |
av_usleep(1); |
975 | 975 |
} while (ret == MFX_WRN_DEVICE_BUSY || ret == MFX_WRN_IN_EXECUTION); |
976 | 976 |
|
977 |
+ if (ret > 0) |
|
978 |
+ ff_qsv_print_warning(avctx, ret, "Warning during encoding"); |
|
979 |
+ |
|
977 | 980 |
if (ret < 0) { |
978 | 981 |
av_packet_unref(&new_pkt); |
979 | 982 |
av_freep(&bs); |