示例#1
0
static void __gsc_m2m_cleanup_queue(struct gsc_ctx *ctx)
{
	struct vb2_v4l2_buffer *src_vb, *dst_vb;

	while (v4l2_m2m_num_src_bufs_ready(ctx->m2m_ctx) > 0) {
		src_vb = v4l2_m2m_src_buf_remove(ctx->m2m_ctx);
		v4l2_m2m_buf_done(src_vb, VB2_BUF_STATE_ERROR);
	}

	while (v4l2_m2m_num_dst_bufs_ready(ctx->m2m_ctx) > 0) {
		dst_vb = v4l2_m2m_dst_buf_remove(ctx->m2m_ctx);
		v4l2_m2m_buf_done(dst_vb, VB2_BUF_STATE_ERROR);
	}
}
示例#2
0
static int nxp_m2m_job_ready(void *priv)
{
    /* TODO */
#if 0
    struct nxp_video *me = priv;

    pr_debug("%s\n", __func__);

    if (v4l2_m2m_num_src_bufs_ready(me->m2m_ctx) < 1 ||
        v4l2_m2m_num_dst_bufs_ready(m2->m2m_ctx) < 1) {
        pr_err("%s: Not enough buffers available\n", __func__);
        return 0;
    }
#endif

    return 1;
}
示例#3
0
文件: hva-v4l2.c 项目: acton393/linux
static int hva_job_ready(void *priv)
{
	struct hva_ctx *ctx = priv;
	struct device *dev = ctx_to_dev(ctx);

	if (!v4l2_m2m_num_src_bufs_ready(ctx->fh.m2m_ctx)) {
		dev_dbg(dev, "%s job not ready: no frame buffers\n",
			ctx->name);
		return 0;
	}

	if (!v4l2_m2m_num_dst_bufs_ready(ctx->fh.m2m_ctx)) {
		dev_dbg(dev, "%s job not ready: no stream buffers\n",
			ctx->name);
		return 0;
	}

	if (ctx->aborting) {
		dev_dbg(dev, "%s job not ready: aborting\n", ctx->name);
		return 0;
	}

	return 1;
}