1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 * Copyright (c) 2016 MediaTek Inc.
4 * Author: Daniel Hsiao <daniel.hsiao@mediatek.com>
5 *	Jungchang Tsao <jungchang.tsao@mediatek.com>
6 *	Tiffany Lin <tiffany.lin@mediatek.com>
7 */
8
9#ifndef _VENC_DRV_BASE_
10#define _VENC_DRV_BASE_
11
12#include "mtk_vcodec_enc_drv.h"
13
14#include "venc_drv_if.h"
15
16struct venc_common_if {
17	/**
18	 * (*init)() - initialize driver
19	 * @ctx:	[in] mtk v4l2 context
20	 * @handle: [out] driver handle
21	 */
22	int (*init)(struct mtk_vcodec_enc_ctx *ctx);
23
24	/**
25	 * (*encode)() - trigger encode
26	 * @handle: [in] driver handle
27	 * @opt: [in] encode option
28	 * @frm_buf: [in] frame buffer to store input frame
29	 * @bs_buf: [in] bitstream buffer to store output bitstream
30	 * @result: [out] encode result
31	 */
32	int (*encode)(void *handle, enum venc_start_opt opt,
33		      struct venc_frm_buf *frm_buf,
34		      struct mtk_vcodec_mem *bs_buf,
35		      struct venc_done_result *result);
36
37	/**
38	 * (*set_param)() - set driver's parameter
39	 * @handle: [in] driver handle
40	 * @type: [in] parameter type
41	 * @in: [in] buffer to store the parameter
42	 */
43	int (*set_param)(void *handle, enum venc_set_param_type type,
44			 struct venc_enc_param *in);
45
46	/**
47	 * (*deinit)() - deinitialize driver.
48	 * @handle: [in] driver handle
49	 */
50	int (*deinit)(void *handle);
51};
52
53#endif
54