}
}
- pic->slices = av_mallocz_array(pic->nb_slices, sizeof(*pic->slices));
- if (!pic->slices) {
- err = AVERROR(ENOMEM);
- goto fail;
+ if (pic->nb_slices > 0) {
+ pic->slices = av_mallocz_array(pic->nb_slices, sizeof(*pic->slices));
+ if (!pic->slices) {
+ err = AVERROR(ENOMEM);
+ goto fail;
+ }
}
for (i = 0; i < pic->nb_slices; i++) {
slice = &pic->slices[i];
// Unfortunately we have to treat this as "don't know" and hope
// for the best, because the Intel MJPEG encoder returns this
// for all the interesting attributes.
+ av_log(avctx, AV_LOG_DEBUG, "Attribute (%d) is not supported.\n",
+ attr[i].type);
continue;
}
switch (attr[i].type) {
goto fail;
}
if (avctx->max_b_frames > 0 && ref_l1 < 1) {
- av_log(avctx, AV_LOG_ERROR, "B frames are not "
- "supported (%#x).\n", attr[i].value);
- err = AVERROR(EINVAL);
- goto fail;
+ av_log(avctx, AV_LOG_WARNING, "B frames are not "
+ "supported (%#x) by the underlying driver.\n",
+ attr[i].value);
+ avctx->max_b_frames = 0;
}
}
break;
vaapi_encode_free(avctx, pic);
}
+ av_buffer_pool_uninit(&ctx->output_buffer_pool);
+
if (ctx->va_context != VA_INVALID_ID) {
vaDestroyContext(ctx->hwctx->display, ctx->va_context);
ctx->va_context = VA_INVALID_ID;
ctx->va_config = VA_INVALID_ID;
}
- av_buffer_pool_uninit(&ctx->output_buffer_pool);
-
av_freep(&ctx->codec_sequence_params);
av_freep(&ctx->codec_picture_params);