import PULS_20160108
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / include / linux / vcodec / vdec_drv_base.h
1 #define DumpInput__
2 #ifdef DumpInput__
3 #include <stdio.h>
4 #endif
5 #include "vdec_drv_if_private.h"
6
7 #ifndef _VDEC_DRV_BASE_
8 #define _VDEC_DRV_BASE_
9 #define MAX_BUFFER_SIZE 37
10
11 #if 1
12 #define WAITING_MODE VAL_INTERRUPT_MODE
13 #else
14 #define WAITING_MODE VAL_POLLING_MODE
15 #endif
16
17 #define DO_VCODEC_RESET(cmd, index) \
18 { \
19 ADD_QUEUE(cmd, index, WRITE_REG_CMD, MT6589_VDEC_MISC, VDEC_INT_CFG, 0 , WAITING_MODE); \
20 }
21
22 typedef enum __VDDRV_MRESULT_T
23 {
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
28 VDDRV_MRESULT_FATAL
29 } VDDRV_MRESULT_T;
30
31 typedef struct __VDEC_DRV_BASE_T
32 {
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);
41 } VDEC_DRV_BASE_T;
42
43 typedef struct __VDEC_DRV_BUF_STATUS_T
44 {
45 VAL_BOOL_T bDisplay;
46 VAL_BOOL_T bFree;
47 VDEC_DRV_FRAMEBUF_T *pFrameBuf;
48 } VDEC_DRV_BUF_STATUS_T, *P_VDEC_DRV_BUF_STATUS_T;
49
50 typedef struct __VDEC_DRV_INPUT_BUF_STATUS_T
51 {
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;
55
56 typedef struct __VDEC_HANDLE_T
57 {
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];
72 VAL_BOOL_T bFlushAll;
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;
78 #ifdef DumpInput__
79 FILE *pf_out;
80 #endif
81 } VDEC_HANDLE_T;
82
83 #endif