
- Request api allows to synchronize controls along with buffers. - Client allocates a request fd. This request fd is associated with control and set using s_ext_ctrls. Such controls are stored by the framework and not applied immediately. - Request fd is also associated with input qbuf and queued to driver. Following this actual request is queued. Buffers do not enter the queue untill the request is queued. - As part of qbuf, driver call request_setup() which inturn sets the control to driver. Change-Id: I316c4dc2a0091b21059230be5ee5fd6379259456 Signed-off-by: Darshana Patil <quic_darshana@quicinc.com>
44 خطوط
1.6 KiB
C
44 خطوط
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (c) 2020-2021,, The Linux Foundation. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _MSM_VIDC_VB2_H_
|
|
#define _MSM_VIDC_VB2_H_
|
|
|
|
#include <media/videobuf2-core.h>
|
|
#include <media/videobuf2-v4l2.h>
|
|
#include "msm_vidc_inst.h"
|
|
|
|
struct vb2_queue *msm_vidc_get_vb2q(struct msm_vidc_inst *inst,
|
|
u32 type, const char *func);
|
|
|
|
/* vb2_mem_ops */
|
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
|
|
void *msm_vb2_get_userptr(struct device *dev, unsigned long vaddr,
|
|
unsigned long size, enum dma_data_direction dma_dir);
|
|
void *msm_vb2_attach_dmabuf(struct device *dev, struct dma_buf *dbuf,
|
|
unsigned long size, enum dma_data_direction dma_dir);
|
|
#else
|
|
void *msm_vb2_get_userptr(struct vb2_buffer *vb, struct device *dev,
|
|
unsigned long vaddr, unsigned long size);
|
|
void *msm_vb2_attach_dmabuf(struct vb2_buffer *vb, struct device *dev,
|
|
struct dma_buf *dbuf, unsigned long size);
|
|
#endif
|
|
void msm_vb2_put_userptr(void *buf_priv);
|
|
void msm_vb2_detach_dmabuf(void *buf_priv);
|
|
int msm_vb2_map_dmabuf(void *buf_priv);
|
|
void msm_vb2_unmap_dmabuf(void *buf_priv);
|
|
|
|
/* vb2_ops */
|
|
int msm_vidc_queue_setup(struct vb2_queue *q,
|
|
unsigned int *num_buffers, unsigned int *num_planes,
|
|
unsigned int sizes[], struct device *alloc_devs[]);
|
|
int msm_vidc_start_streaming(struct vb2_queue *q, unsigned int count);
|
|
void msm_vidc_stop_streaming(struct vb2_queue *q);
|
|
void msm_vidc_buf_queue(struct vb2_buffer *vb2);
|
|
void msm_vidc_buf_cleanup(struct vb2_buffer *vb);
|
|
int msm_vidc_buf_out_validate(struct vb2_buffer *vb);
|
|
void msm_vidc_buf_request_complete(struct vb2_buffer *vb);
|
|
#endif // _MSM_VIDC_VB2_H_
|