hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/* 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