if (avpkt.size) {
ret = v4l2_try_start(avctx);
- if (ret)
+ if (ret) {
+ av_packet_unref(&avpkt);
return 0;
+ }
}
dequeue:
+ av_packet_unref(&avpkt);
return ff_v4l2_context_dequeue_frame(capture, frame);
}
ret = ff_v4l2_m2m_codec_init(avctx);
if (ret) {
+ V4L2m2mPriv *priv = avctx->priv_data;
av_log(avctx, AV_LOG_ERROR, "can't configure decoder\n");
+ s->self_ref = NULL;
+ av_buffer_unref(&priv->context_ref);
+
return ret;
}
.receive_frame = v4l2_receive_frame,\
.close = ff_v4l2_m2m_codec_end,\
.bsfs = bsf_name, \
- .capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY, \
+ .capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DELAY | \
+ AV_CODEC_CAP_AVOID_PROBING, \
.wrapper_name = "v4l2m2m", \
};