2019-06-04 12:37:33 +03:00
/* SPDX-License-Identifier: GPL-2.0 */
2016-05-03 13:11:25 +03:00
/*
* Copyright ( c ) 2016 MediaTek Inc .
* Author : PoChun Lin < pochun . lin @ mediatek . com >
*/
# ifndef _VENC_VPU_IF_H_
# define _VENC_VPU_IF_H_
2020-08-21 13:35:52 +03:00
# include "mtk_vcodec_fw.h"
2016-05-03 13:11:25 +03:00
# 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 ;
2020-08-21 13:35:52 +03:00
int id ;
2016-05-03 13:11:25 +03:00
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 ,
2020-08-21 13:35:55 +03:00
unsigned int * bs_size ,
struct venc_frame_info * frame_info ) ;
2016-05-03 13:11:25 +03:00
int vpu_enc_deinit ( struct venc_vpu_inst * vpu ) ;
# endif