| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Copyright (c) 2016 MediaTek Inc. |
| * Author: PoChun Lin <pochun.lin@mediatek.com> |
| */ |
| |
| #ifndef _VENC_VPU_IF_H_ |
| #define _VENC_VPU_IF_H_ |
| |
| #include "mtk_vcodec_fw.h" |
| #include "venc_drv_if.h" |
| |
| /* |
| * struct venc_vpu_inst - encoder VPU driver instance |
| * @wq_hd: wait queue used for vpu cmd trigger then wait vpu interrupt done |
| * @signaled: flag used for checking vpu interrupt done |
| * @failure: flag to show vpu cmd succeeds or not |
| * @state: enum venc_ipi_msg_enc_state |
| * @bs_size: bitstream size for skip frame case usage |
| * @is_key_frm: key frame flag |
| * @inst_addr: VPU instance addr |
| * @vsi: driver structure allocated by VPU side and shared to AP side for |
| * control and info share |
| * @id: the id of inter-processor interrupt |
| * @ctx: context for v4l2 layer integration |
| * @dev: device for v4l2 layer integration |
| */ |
| struct venc_vpu_inst { |
| wait_queue_head_t wq_hd; |
| int signaled; |
| int failure; |
| int state; |
| int bs_size; |
| int is_key_frm; |
| unsigned int inst_addr; |
| void *vsi; |
| int id; |
| struct mtk_vcodec_ctx *ctx; |
| }; |
| |
| int vpu_enc_init(struct venc_vpu_inst *vpu); |
| int vpu_enc_set_param(struct venc_vpu_inst *vpu, |
| enum venc_set_param_type id, |
| struct venc_enc_param *param); |
| int vpu_enc_encode(struct venc_vpu_inst *vpu, unsigned int bs_mode, |
| struct venc_frm_buf *frm_buf, |
| struct mtk_vcodec_mem *bs_buf, |
| unsigned int *bs_size, |
| struct venc_frame_info *frame_info); |
| int vpu_enc_deinit(struct venc_vpu_inst *vpu); |
| |
| #endif |