sample_comm_ive.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. #ifndef __SAMPLE_COMM_IVE_H__
  2. #define __SAMPLE_COMM_IVE_H__
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <errno.h>
  7. #include <fcntl.h>
  8. #include <sys/mman.h>
  9. #include <sys/stat.h>
  10. #include <sys/types.h>
  11. #include <unistd.h>
  12. #include <signal.h>
  13. #include "hi_debug.h"
  14. #include "hi_comm_ive.h"
  15. #include "mpi_ive.h"
  16. #include "sample_comm.h"
  17. #ifdef __cplusplus
  18. #if __cplusplus
  19. extern "C"{
  20. #endif
  21. #endif /* __cplusplus */
  22. #define VIDEO_WIDTH 352
  23. #define VIDEO_HEIGHT 288
  24. #define IVE_ALIGN 16
  25. #define IVE_CHAR_CALW 8
  26. #define IVE_CHAR_CALH 8
  27. #define IVE_CHAR_NUM (IVE_CHAR_CALW *IVE_CHAR_CALH)
  28. #define IVE_FILE_NAME_LEN 256
  29. #define IVE_RECT_NUM 20
  30. #define VPSS_CHN_NUM 2
  31. #define SAMPLE_ALIGN_BACK(x, a) ((a) * (((x) / (a))))
  32. typedef struct hiSAMPLE_IVE_SWITCH_S
  33. {
  34. HI_BOOL bVenc;
  35. HI_BOOL bVo;
  36. }SAMPLE_IVE_SWITCH_S;
  37. typedef struct hiSAMPLE_IVE_RECT_S
  38. {
  39. POINT_S astPoint[4];
  40. } SAMPLE_IVE_RECT_S;
  41. typedef struct hiSAMPLE_RECT_ARRAY_S
  42. {
  43. HI_U16 u16Num;
  44. SAMPLE_IVE_RECT_S astRect[IVE_RECT_NUM];
  45. } SAMPLE_RECT_ARRAY_S;
  46. typedef struct hiIVE_LINEAR_DATA_S
  47. {
  48. HI_S32 s32LinearNum;
  49. HI_S32 s32ThreshNum;
  50. POINT_S* pstLinearPoint;
  51. } IVE_LINEAR_DATA_S;
  52. typedef struct hiSAMPLE_IVE_DRAW_RECT_MSG_S
  53. {
  54. VIDEO_FRAME_INFO_S stFrameInfo;
  55. SAMPLE_RECT_ARRAY_S stRegion;
  56. } SAMPLE_IVE_DRAW_RECT_MSG_S;
  57. //free mmz
  58. #define IVE_MMZ_FREE(phy,vir)\
  59. do{\
  60. if ((0 != (phy)) && (0 != (vir)))\
  61. {\
  62. HI_MPI_SYS_MmzFree((phy),(HI_VOID *)(HI_UL)(vir));\
  63. (phy) = 0;\
  64. (vir) = 0;\
  65. }\
  66. }while(0)
  67. #define IVE_CLOSE_FILE(fp)\
  68. do{\
  69. if (NULL != (fp))\
  70. {\
  71. fclose((fp));\
  72. (fp) = NULL;\
  73. }\
  74. }while(0)
  75. #define SAMPLE_PAUSE()\
  76. do {\
  77. printf("---------------press Enter key to exit!---------------\n");\
  78. (void)getchar();\
  79. } while (0)
  80. #define SAMPLE_CHECK_EXPR_RET(expr, ret, fmt...)\
  81. do\
  82. {\
  83. if(expr)\
  84. {\
  85. SAMPLE_PRT(fmt);\
  86. return (ret);\
  87. }\
  88. }while(0)
  89. #define SAMPLE_CHECK_EXPR_GOTO(expr, label, fmt...)\
  90. do\
  91. {\
  92. if(expr)\
  93. {\
  94. SAMPLE_PRT(fmt);\
  95. goto label;\
  96. }\
  97. }while(0)
  98. /******************************************************************************
  99. * function : Mpi init
  100. ******************************************************************************/
  101. HI_VOID SAMPLE_COMM_IVE_CheckIveMpiInit(HI_VOID);
  102. /******************************************************************************
  103. * function : Mpi exit
  104. ******************************************************************************/
  105. HI_S32 SAMPLE_COMM_IVE_IveMpiExit(HI_VOID);
  106. /******************************************************************************
  107. * function :Read file
  108. ******************************************************************************/
  109. HI_S32 SAMPLE_COMM_IVE_ReadFile(IVE_IMAGE_S* pstImg, FILE* pFp);
  110. /******************************************************************************
  111. * function :Write file
  112. ******************************************************************************/
  113. HI_S32 SAMPLE_COMM_IVE_WriteFile(IVE_IMAGE_S* pstImg, FILE* pFp);
  114. /******************************************************************************
  115. * function :Calc stride
  116. ******************************************************************************/
  117. HI_U16 SAMPLE_COMM_IVE_CalcStride(HI_U32 u32Width, HI_U8 u8Align);
  118. /******************************************************************************
  119. * function : Copy blob to rect
  120. ******************************************************************************/
  121. HI_VOID SAMPLE_COMM_IVE_BlobToRect(IVE_CCBLOB_S *pstBlob, SAMPLE_RECT_ARRAY_S *pstRect,
  122. HI_U16 u16RectMaxNum,HI_U16 u16AreaThrStep,
  123. HI_U32 u32SrcWidth, HI_U32 u32SrcHeight,
  124. HI_U32 u32DstWidth,HI_U32 u32DstHeight);
  125. /******************************************************************************
  126. * function : Create ive image
  127. ******************************************************************************/
  128. HI_S32 SAMPLE_COMM_IVE_CreateImage(IVE_IMAGE_S* pstImg, IVE_IMAGE_TYPE_E enType,
  129. HI_U32 u32Width, HI_U32 u32Height);
  130. /******************************************************************************
  131. * function : Create memory info
  132. ******************************************************************************/
  133. HI_S32 SAMPLE_COMM_IVE_CreateMemInfo(IVE_MEM_INFO_S* pstMemInfo, HI_U32 u32Size);
  134. /******************************************************************************
  135. * function : Create ive image by cached
  136. ******************************************************************************/
  137. HI_S32 SAMPLE_COMM_IVE_CreateImageByCached(IVE_IMAGE_S* pstImg,
  138. IVE_IMAGE_TYPE_E enType, HI_U32 u32Width, HI_U32 u32Height);
  139. /******************************************************************************
  140. * function : Create IVE_DATA_S
  141. ******************************************************************************/
  142. HI_S32 SAMPLE_COMM_IVE_CreateData(IVE_DATA_S* pstData,HI_U32 u32Width, HI_U32 u32Height);
  143. /******************************************************************************
  144. * function : Init Vb
  145. ******************************************************************************/
  146. HI_S32 SAMPLE_COMM_IVE_VbInit(PIC_SIZE_E *paenSize,SIZE_S *pastSize,HI_U32 u32VpssChnNum);
  147. /******************************************************************************
  148. * function : Dma frame info to ive image
  149. ******************************************************************************/
  150. HI_S32 SAMPLE_COMM_IVE_DmaImage(VIDEO_FRAME_INFO_S *pstFrameInfo,IVE_DST_IMAGE_S *pstDst,HI_BOOL bInstant);
  151. /******************************************************************************
  152. * function : Call vgs to fill rect
  153. ******************************************************************************/
  154. HI_S32 SAMPLE_COMM_VGS_FillRect(VIDEO_FRAME_INFO_S* pstFrmInfo, SAMPLE_RECT_ARRAY_S* pstRect, HI_U32 u32Color);
  155. /******************************************************************************
  156. * function : Start Vpss
  157. ******************************************************************************/
  158. HI_S32 SAMPLE_COMM_IVE_StartVpss(SIZE_S *pastSize,HI_U32 u32VpssChnNum);
  159. /******************************************************************************
  160. * function : Stop Vpss
  161. ******************************************************************************/
  162. HI_VOID SAMPLE_COMM_IVE_StopVpss(HI_U32 u32VpssChnNum);
  163. /******************************************************************************
  164. * function : Start Vo
  165. ******************************************************************************/
  166. HI_S32 SAMPLE_COMM_IVE_StartVo(HI_VOID);
  167. /******************************************************************************
  168. * function : Stop Vo
  169. ******************************************************************************/
  170. HI_VOID SAMPLE_COMM_IVE_StopVo(HI_VOID);
  171. /******************************************************************************
  172. * function : Start Vi/Vpss/Venc/Vo
  173. ******************************************************************************/
  174. HI_S32 SAMPLE_COMM_IVE_StartViVpssVencVo(SAMPLE_VI_CONFIG_S *pstViConfig,SAMPLE_IVE_SWITCH_S *pstSwitch,PIC_SIZE_E *penExtPicSize);
  175. /******************************************************************************
  176. * function : Stop Vi/Vpss/Venc/Vo
  177. ******************************************************************************/
  178. HI_VOID SAMPLE_COMM_IVE_StopViVpssVencVo(SAMPLE_VI_CONFIG_S *pstViConfig,SAMPLE_IVE_SWITCH_S *pstSwitch);
  179. #ifdef __cplusplus
  180. #if __cplusplus
  181. }
  182. #endif
  183. #endif /* __cplusplus */
  184. #endif /* __SAMPLE_COMM_IVE_H__ */