venc_drv_base.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. #include "venc_drv_if_private.h"
  2. #include "vcodec_if_v2.h"
  3. #include <sys/time.h>
  4. #ifndef _VENC_DRV_BASE_
  5. #define _VENC_DRV_BASE_
  6. #define DO_VCODEC_RESET(cmd, index) \
  7. { \
  8. }
  9. typedef enum __VDDRV_MRESULT_T {
  10. VDDRV_MRESULT_SUCCESS = VAL_TRUE, /* /< Represent success */
  11. VDDRV_MRESULT_FAIL = VAL_FALSE /* /< Represent failure */
  12. } VDDRV_MRESULT_T;
  13. typedef struct __VENC_DRV_BASE_T {
  14. VAL_UINT32_T (*Init)(
  15. VAL_HANDLE_T *handle,
  16. VAL_HANDLE_T halhandle,
  17. VAL_HANDLE_T valhandle
  18. );
  19. VAL_UINT32_T (*Encode)(
  20. VAL_HANDLE_T handle,
  21. VENC_DRV_START_OPT_T eOpt,
  22. P_VENC_DRV_PARAM_FRM_BUF_T pFrameBuf,
  23. P_VENC_DRV_PARAM_BS_BUF_T pBitstreamBuf,
  24. VENC_DRV_DONE_RESULT_T * pResult
  25. );
  26. VAL_UINT32_T (*GetParam)(
  27. VAL_HANDLE_T handle,
  28. VENC_DRV_GET_TYPE_T a_eType,
  29. VAL_VOID_T *a_pvInParam,
  30. VAL_VOID_T *a_pvOutParam
  31. );
  32. VAL_UINT32_T (*SetParam)(
  33. VAL_HANDLE_T handle,
  34. VENC_DRV_SET_TYPE_T a_eType,
  35. VAL_VOID_T *a_pvInParam,
  36. VAL_VOID_T *a_pvOutParam
  37. );
  38. VAL_UINT32_T (*DeInit)(
  39. VAL_HANDLE_T handle
  40. ); /* /< Function to do driver de-initialization */
  41. } VENC_DRV_BASE_T;
  42. /**
  43. * @par Structure
  44. * mhalVdoDrv_t
  45. * @par Description
  46. * This is a structure which store common video enc driver information
  47. */
  48. typedef struct mhalVdoDrv_s {
  49. VAL_VOID_T *prCodecHandle;
  50. VAL_UINT32_T u4EncodedFrameCount;
  51. VCODEC_ENC_CALLBACK_T rCodecCb;
  52. VIDEO_ENC_API_T *prCodecAPI;
  53. VENC_BS_T pBSBUF;
  54. VCODEC_ENC_BUFFER_INFO_T EncoderInputParamNC;
  55. VENC_DRV_PARAM_BS_BUF_T BSout;
  56. VENC_HYBRID_ENCSETTING rVencSetting;
  57. VAL_UINT8_T *ptr;
  58. } mhalVdoDrv_t;
  59. typedef struct __VENC_HYBRID_HANDLE_T {
  60. mhalVdoDrv_t rMhalVdoDrv;
  61. VAL_MEMORY_T rBSDrvWorkingMem;
  62. VAL_UINT32_T nOmxTids;
  63. VAL_VCODEC_THREAD_ID_T rThreadID;
  64. VIDEO_ENC_WRAP_HANDLE_T hWrapper;
  65. VAL_VOID_T *pDrvModule; /* /< used for dlopen and dlclose */
  66. } VENC_HYBRID_HANDLE_T;
  67. typedef struct __VENC_HANDLE_T {
  68. VENC_DRV_VIDEO_FORMAT_T CodecFormat;
  69. VENC_DRV_BASE_T rFuncPtr; /* /< Point to driver's proprietary function. */
  70. VAL_HANDLE_T hDrvHandle; /* /< Handle of each format driver */
  71. VAL_HANDLE_T hHalHandle; /* /< HAL handle */
  72. VAL_HANDLE_T hValHandle; /* /< VAL handle */
  73. VAL_MEMORY_T rHandleMem; /* /< Memory for venc handle */
  74. VAL_VOID_T *prExtraData; /* /< Driver private data pointer. */
  75. VAL_MEMORY_T rExtraDataMem; /* /< Save extra data memory information to be used in release. */
  76. VENC_HYBRID_HANDLE_T rHybridHandle; /* /< Hybrid handle */
  77. FILE *pfDump;
  78. VAL_UINT32_T u4ShowInfo; /* /< Flag for show FPS and BitRate */
  79. VAL_UINT32_T u4FPS; /* /< FPS */
  80. VAL_UINT32_T u4Bitrate; /* /< Bitrate */
  81. struct timeval tStart; /* /< Start time counting FPS and bitrate */
  82. VENC_DRV_SCENARIO_T eScenario; /* /< VENC Senario */
  83. } VENC_HANDLE_T;
  84. VENC_DRV_MRESULT_T ParseConfig(const char *cfgFileName, const char *ParameterItem, VAL_UINT32_T *val);
  85. #endif