vdec_drv_base.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #define DumpInput__
  2. #ifdef DumpInput__
  3. #include <stdio.h>
  4. #endif
  5. #include "vdec_drv_if_private.h"
  6. #ifndef _VDEC_DRV_BASE_
  7. #define _VDEC_DRV_BASE_
  8. #define MAX_BUFFER_SIZE 37
  9. #if 1
  10. #define WAITING_MODE VAL_INTERRUPT_MODE
  11. #else
  12. #define WAITING_MODE VAL_POLLING_MODE
  13. #endif
  14. #define DO_VCODEC_RESET(cmd, index) \
  15. { \
  16. ADD_QUEUE(cmd, index, WRITE_REG_CMD, MT6589_VDEC_MISC, VDEC_INT_CFG, 0 , WAITING_MODE); \
  17. }
  18. typedef enum __VDDRV_MRESULT_T {
  19. VDDRV_MRESULT_SUCCESS = VAL_TRUE, /* /< Represent success */
  20. VDDRV_MRESULT_FAIL = VAL_FALSE, /* /< Represent failure */
  21. VDDRV_MRESULT_RESOLUTION_CHANGED = VAL_RESOLUTION_CHANGED, /* /< Represent resoluion changed */
  22. VDDRV_MRESULT_NEED_MORE_OUTPUT_BUFFER, /* /< Represent need more output buffer */
  23. VDDRV_MRESULT_FATAL
  24. } VDDRV_MRESULT_T;
  25. typedef struct __VDEC_DRV_BASE_T {
  26. VAL_UINT32_T (*Init)(
  27. VAL_HANDLE_T *handle,
  28. VAL_HANDLE_T halhandle,
  29. VAL_HANDLE_T valhandle,
  30. P_VDEC_DRV_RINGBUF_T pBitstream,
  31. P_VDEC_DRV_SEQINFO_T pSeqinfo,
  32. VDEC_DRV_VIDEO_FORMAT_T eFormat
  33. );
  34. VAL_UINT32_T (*Decode)(
  35. VAL_HANDLE_T handle,
  36. P_VDEC_DRV_RINGBUF_T
  37. pBitstream,
  38. P_VDEC_DRV_FRAMEBUF_T pFrame
  39. ); /* /< Driver Decode Main Funciton */
  40. P_VDEC_DRV_FRAMEBUF_T(*GetDisplayBuffer)(
  41. VAL_HANDLE_T handle
  42. ); /* /< Get Buffer ready to display */
  43. P_VDEC_DRV_FRAMEBUF_T(*GetFreeBuffer)(
  44. VAL_HANDLE_T handle
  45. ); /* /< Get Buffer ready to release */
  46. VAL_UINT32_T (*GetParam)(
  47. VAL_HANDLE_T handle,
  48. VDEC_DRV_GET_TYPE_T a_eType,
  49. VAL_VOID_T *a_pvInParam,
  50. VAL_VOID_T *a_pvOutParam
  51. );
  52. VAL_UINT32_T (*SetParam)(
  53. VAL_HANDLE_T handle,
  54. VDEC_DRV_SET_TYPE_T a_eType,
  55. VAL_VOID_T *a_pvInParam,
  56. VAL_VOID_T *a_pvOutParam
  57. );
  58. VAL_UINT32_T (*DeInit)(
  59. VAL_HANDLE_T handle
  60. ); /* /< Function to do driver de-initialization */
  61. P_VDEC_DRV_RINGBUF_T (*GetFreeInputBuffer)(
  62. VAL_HANDLE_T handle
  63. );
  64. VAL_UINT32_T (*Init_ex)(
  65. VAL_HANDLE_T *handle,
  66. VAL_HANDLE_T halhandle,
  67. VAL_HANDLE_T valhandle,
  68. P_VDEC_DRV_RINGBUF_T pBitstream,
  69. P_VDEC_DRV_SEQINFO_T pSeqinfo,
  70. VDEC_DRV_VIDEO_FORMAT_T eFormat,
  71. VAL_VOID_T *pConfig
  72. );
  73. } VDEC_DRV_BASE_T;
  74. typedef struct __VDEC_DRV_BUF_STATUS_T {
  75. VAL_BOOL_T bDisplay;
  76. VAL_BOOL_T bFree;
  77. VDEC_DRV_FRAMEBUF_T *pFrameBuf;
  78. } VDEC_DRV_BUF_STATUS_T, *P_VDEC_DRV_BUF_STATUS_T;
  79. typedef struct __VDEC_DRV_INPUT_BUF_STATUS_T {
  80. VDEC_DRV_RINGBUF_T *pInputBuf;
  81. VAL_UINT32_T u4RefCnt;
  82. } VDEC_DRV_INPUT_BUF_STATUS_T, *P_VDEC_DRV_INPUT_BUF_STATUS_T;
  83. typedef struct __VDEC_HANDLE_T {
  84. VDEC_DRV_VIDEO_FORMAT_T CodecFormat;
  85. VDEC_DRV_BASE_T rFuncPtr; /* /< Point to driver's proprietary function. */
  86. VAL_HANDLE_T hDrvHandle; /* /< Handle of each format driver */
  87. VAL_BOOL_T fgDrvInitFlag; /* /< hDrvHandle is available or not */
  88. VAL_HANDLE_T hHalHandle; /* /< HAL handle */
  89. VAL_BOOL_T fgHalInitFlag; /* /< hHalHandle is available or not */
  90. VAL_HANDLE_T hValHandle; /* /< VAL handle */
  91. VAL_BOOL_T fgValInitFlag; /* /< hValHandle is available or not */
  92. VAL_MEMORY_T rHandleMem; /* /< Memory for vdec handle */
  93. P_VDEC_DRV_FRAMEBUF_T pDispFrameBuf;
  94. P_VDEC_DRV_FRAMEBUF_T pFreeFrameBuf;
  95. P_VDEC_DRV_RINGBUF_T pInputFreeBuf;
  96. VDEC_DRV_BUF_STATUS_T pFrameBufArray[MAX_BUFFER_SIZE];
  97. VDEC_DRV_INPUT_BUF_STATUS_T pInputBufArray[MAX_BUFFER_SIZE];
  98. VAL_BOOL_T bFlushAll;
  99. VAL_BOOL_T bInputFlushAll;
  100. /* for no VOS header when MPEG4 */
  101. VAL_UINT16_T nDefWidth;
  102. VAL_UINT16_T nDefHeight;
  103. VDEC_DRV_SET_DECODE_MODE_T rSetDecodeMode;
  104. VAL_INT32_T nPerfServiceHandle;
  105. #ifdef DumpInput__
  106. FILE *pf_out;
  107. VAL_MEM_ADDR_T rDumpBase;
  108. #endif
  109. VAL_UINT32_T nOmxTids;
  110. } VDEC_HANDLE_T;
  111. #endif