int ff_qsv_print_error(void *log_ctx, mfxStatus err,
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_profile_to_mfx(enum AVCodecID codec_id, int profile);
int ff_qsv_map_pixfmt(enum AVPixelFormat format, uint32_t *fourcc);
}
do {
- ret = MFXVideoENCODE_EncodeFrameAsync(q->session, NULL, surf, bs, sync);
+ ret = MFXVideoENCODE_EncodeFrameAsync(q->session, enc_ctrl, surf, bs, sync);
if (ret == MFX_WRN_DEVICE_BUSY)
- av_usleep(1);
+ av_usleep(500);
} 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) {
av_packet_unref(&new_pkt);
av_freep(&bs);