|
@@ -426,6 +426,25 @@ int v4l2_m2m_dqbuf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(v4l2_m2m_dqbuf);
|
|
|
|
|
|
+/**
|
|
|
+ * v4l2_m2m_prepare_buf() - prepare a source or destination buffer, depending on
|
|
|
+ * the type
|
|
|
+ */
|
|
|
+int v4l2_m2m_prepare_buf(struct file *file, struct v4l2_m2m_ctx *m2m_ctx,
|
|
|
+ struct v4l2_buffer *buf)
|
|
|
+{
|
|
|
+ struct vb2_queue *vq;
|
|
|
+ int ret;
|
|
|
+
|
|
|
+ vq = v4l2_m2m_get_vq(m2m_ctx, buf->type);
|
|
|
+ ret = vb2_prepare_buf(vq, buf);
|
|
|
+ if (!ret)
|
|
|
+ v4l2_m2m_try_schedule(m2m_ctx);
|
|
|
+
|
|
|
+ return ret;
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(v4l2_m2m_prepare_buf);
|
|
|
+
|
|
|
/**
|
|
|
* v4l2_m2m_create_bufs() - create a source or destination buffer, depending
|
|
|
* on the type
|
|
@@ -811,6 +830,15 @@ int v4l2_m2m_ioctl_dqbuf(struct file *file, void *priv,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_dqbuf);
|
|
|
|
|
|
+int v4l2_m2m_ioctl_prepare_buf(struct file *file, void *priv,
|
|
|
+ struct v4l2_buffer *buf)
|
|
|
+{
|
|
|
+ struct v4l2_fh *fh = file->private_data;
|
|
|
+
|
|
|
+ return v4l2_m2m_prepare_buf(file, fh->m2m_ctx, buf);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_prepare_buf);
|
|
|
+
|
|
|
int v4l2_m2m_ioctl_expbuf(struct file *file, void *priv,
|
|
|
struct v4l2_exportbuffer *eb)
|
|
|
{
|