5 #include "vdec_drv_if_private.h"
7 #ifndef _VDEC_DRV_BASE_
8 #define _VDEC_DRV_BASE_
9 #define MAX_BUFFER_SIZE 37
12 #define WAITING_MODE VAL_INTERRUPT_MODE
14 #define WAITING_MODE VAL_POLLING_MODE
17 #define DO_VCODEC_RESET(cmd, index) \
19 ADD_QUEUE(cmd, index, WRITE_REG_CMD, MT6589_VDEC_MISC, VDEC_INT_CFG, 0 , WAITING_MODE); \
22 typedef enum __VDDRV_MRESULT_T
24 VDDRV_MRESULT_SUCCESS
= VAL_TRUE
, ///< Represent success
25 VDDRV_MRESULT_FAIL
= VAL_FALSE
, ///< Represent failure
26 VDDRV_MRESULT_RESOLUTION_CHANGED
= VAL_RESOLUTION_CHANGED
, ///< Represent resoluion changed
27 VDDRV_MRESULT_NEED_MORE_OUTPUT_BUFFER
, ///< Represent need more output buffer
31 typedef struct __VDEC_DRV_BASE_T
33 VAL_UINT32_T(*Init
)(VAL_HANDLE_T
*handle
, VAL_HANDLE_T halhandle
, VAL_HANDLE_T valhandle
, P_VDEC_DRV_RINGBUF_T pBitstream
, P_VDEC_DRV_SEQINFO_T pSeqinfo
, VDEC_DRV_VIDEO_FORMAT_T eFormat
); ///< Function to do driver Initialization
34 VAL_UINT32_T(*Decode
)(VAL_HANDLE_T handle
, P_VDEC_DRV_RINGBUF_T pBitstream
, P_VDEC_DRV_FRAMEBUF_T pFrame
); ///< Driver Decode Main Funciton
35 P_VDEC_DRV_FRAMEBUF_T(*GetDisplayBuffer
)(VAL_HANDLE_T handle
); ///< Get Buffer ready to display
36 P_VDEC_DRV_FRAMEBUF_T(*GetFreeBuffer
)(VAL_HANDLE_T handle
); ///< Get Buffer ready to release
37 VAL_UINT32_T(*GetParam
)(VAL_HANDLE_T handle
, VDEC_DRV_GET_TYPE_T a_eType
, VAL_VOID_T
*a_pvInParam
, VAL_VOID_T
*a_pvOutParam
); ///< get codec's required memory size. (Ex: VDEC_DRV_GET_TYPE_QUERY_REF_POOL_SIZE)
38 VAL_UINT32_T(*SetParam
)(VAL_HANDLE_T handle
, VDEC_DRV_SET_TYPE_T a_eType
, VAL_VOID_T
*a_pvInParam
, VAL_VOID_T
*a_pvOutParam
); ///< get codec's required memory size. (Ex: VDEC_DRV_GET_TYPE_QUERY_REF_POOL_SIZE)
39 VAL_UINT32_T(*DeInit
)(VAL_HANDLE_T handle
); ///< Function to do driver de-initialization
40 P_VDEC_DRV_RINGBUF_T(*GetFreeInputBuffer
)(VAL_HANDLE_T handle
);
43 typedef struct __VDEC_DRV_BUF_STATUS_T
47 VDEC_DRV_FRAMEBUF_T
*pFrameBuf
;
48 } VDEC_DRV_BUF_STATUS_T
, *P_VDEC_DRV_BUF_STATUS_T
;
50 typedef struct __VDEC_DRV_INPUT_BUF_STATUS_T
52 VDEC_DRV_RINGBUF_T
*pInputBuf
;
53 VAL_UINT32_T u4RefCnt
;
54 } VDEC_DRV_INPUT_BUF_STATUS_T
, *P_VDEC_DRV_INPUT_BUF_STATUS_T
;
56 typedef struct __VDEC_HANDLE_T
58 VDEC_DRV_VIDEO_FORMAT_T CodecFormat
;
59 VDEC_DRV_BASE_T rFuncPtr
; ///< Point to driver's proprietary function.
60 VAL_HANDLE_T hDrvHandle
; ///< Handle of each format driver
61 VAL_BOOL_T fgDrvInitFlag
; ///< hDrvHandle is available or not
62 VAL_HANDLE_T hHalHandle
; ///< HAL handle
63 VAL_BOOL_T fgHalInitFlag
; ///< hHalHandle is available or not
64 VAL_HANDLE_T hValHandle
; ///< VAL handle
65 VAL_BOOL_T fgValInitFlag
; ///< hValHandle is available or not
66 VAL_MEMORY_T rHandleMem
; ///< Memory for vdec handle
67 P_VDEC_DRV_FRAMEBUF_T pDispFrameBuf
;
68 P_VDEC_DRV_FRAMEBUF_T pFreeFrameBuf
;
69 P_VDEC_DRV_RINGBUF_T pInputFreeBuf
;
70 VDEC_DRV_BUF_STATUS_T pFrameBufArray
[MAX_BUFFER_SIZE
];
71 VDEC_DRV_INPUT_BUF_STATUS_T pInputBufArray
[MAX_BUFFER_SIZE
];
73 VAL_BOOL_T bInputFlushAll
;
74 // for no VOS header when MPEG4
75 VAL_UINT16_T nDefWidth
;
76 VAL_UINT16_T nDefHeight
;
77 VDEC_DRV_SET_DECODE_MODE_T rSetDecodeMode
;