hv_drv_OsdDataPath.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /**
  2. * @file hv_drv_OsdDataPath.h
  3. * @brief Osd driver layer Datapath selection interface.
  4. * @verbatim
  5. * ==============================================================================
  6. * ##### How to use this driver #####
  7. * ==============================================================================
  8. * (+) Use Hv_Drv_OsdDataPath_Init(...) to init datapath management data.
  9. * (+) Use Hv_Drv_OsdDataPath_DrawDDRWhole(...) to draw 2K area to DDR.
  10. * (+) Use Hv_Drv_OsdDataPath_DrawDDRReal(...) to draw real size area to DDR.
  11. * (+) Use Hv_Drv_OsdDataPath_ShowDDR(...) to show data formly drawn to DDR.
  12. * (+) Use Hv_Drv_OsdDataPath_SetDrawMode(...) to set OSD/DDR blend mode.
  13. * @endverbatim
  14. *
  15. * @author HiView SoC Software Team
  16. * @version 0.0.1
  17. * @date 2022-08-22
  18. */
  19. #ifndef _HV_DRV_OSDDATAPATH_H
  20. #define _HV_DRV_OSDDATAPATH_H
  21. /**
  22. * @brief Set OSD DDR path enable
  23. * @param[in] bEnable
  24. * @return None
  25. */
  26. VOID Hv_Drv_OsdDataPath_SetDDREnable(BOOL bEnable);
  27. /**
  28. * @brief Get Draw Parts
  29. * @param[in] None
  30. * @return Osd enable flag by bits, WIN0 ~ WIN5 & GRAPHIC
  31. */
  32. UCHAR8 Hv_Drv_OsdDataPath_GetDrawParts(VOID);
  33. #if (HV_PROJECT_CONFIG_OSD_DDRPATH == HV_CONFIG_ON)
  34. /**
  35. * @brief Draw 2K Area to DDR
  36. * @return HV_SUCCESS if copy between double buffer finished, otherwise HV_FAILURE
  37. */
  38. Status Hv_Drv_OsdDataPath_DrawDDRWhole(VOID);
  39. /**
  40. * @brief Draw Merged Window Area to DDR
  41. * @param[in] bDrawToRotateBuffer decides draw to Rotate buffer or Draw Buffer
  42. * @return HV_SUCCESS if copy between double buffer finished, otherwise HV_FAILURE
  43. */
  44. Status Hv_Drv_OsdDataPath_DrawDDRReal(BOOL bDrawToRotateBuffer);
  45. /**
  46. * @brief switch double buffer
  47. * @param[in] None
  48. * @return VOID without return
  49. */
  50. VOID Hv_Drv_OsdDataPath_SwitchDrawBuffer(VOID);
  51. /**
  52. * @brief show data formly drawn to DDR
  53. * @param[in] bCopyBuffer if copy data between double buffer
  54. * @return VOID without return
  55. */
  56. VOID Hv_Drv_OsdDataPath_ShowDDR();
  57. VOID Hv_Drv_OsdDataPath_DoubleBufferCopy(VOID);
  58. #if (HV_OSD_CONFIG_REAL_DDR_CANVAS == HV_CONFIG_ON)
  59. VOID Hv_Drv_OsdDataPath_SetSceneDrawPartsStart(VOID);
  60. VOID Hv_Drv_OsdDataPath_SetSceneDrawPartsEnd(VOID);
  61. VOID Hv_Drv_OsdDataPath_SetSceneDrawParts(OsdSceneDrawPart *pstScenePart);
  62. VOID Hv_Drv_OsdDataPath_SetSceneDrawPartsCurrent(VOID);
  63. #endif
  64. #endif
  65. /**
  66. * @brief Get Pre-scaler canvas size
  67. * @param[out] pusWidth canvas width
  68. * @param[out] pusHeight canvas height
  69. * @return VOID without return
  70. */
  71. VOID Hv_Drv_OsdDP_GetPreScalerSize(USHORT16 *pusWidth, USHORT16 *pusHeight);
  72. /**
  73. * @brief Get Merged Osd Area
  74. * @param[in] ucFlags enabled windows flag
  75. * @param[out] pstArea merged area
  76. * @return VOID without return
  77. */
  78. VOID Hv_Drv_OsdDataPath_MergeOsdArea(UCHAR8 ucFlags, OsdArea *pstArea);
  79. /**
  80. * @brief set DDR/OSD blend mode
  81. * @param[in] enMode mode to set DDR_ONLY: only show DDR path
  82. * OSD_ONLY: only show OSD path
  83. * DDR_FIRST: show both DDR/OSD, DDR cover OSD
  84. * OSD_FIRST: show both DDR/OSD, OSD cover DDR
  85. * @return VOID without return
  86. */
  87. VOID Hv_Drv_OsdDataPath_SetDrawMode(OsdHsBlendMode enMode);
  88. VOID Hv_Drv_OsdDataPath_SetVsDivNumber(UCHAR8 ucDiv);
  89. /**
  90. * @brief get datapath parameters
  91. * @param[in] None
  92. * @return datapath parameter
  93. */
  94. OsdDataPathParam* Hv_Drv_OsdDataPath_GetDataPathParam(VOID);
  95. USHORT16 Hv_Drv_OsdDP_GetRealHActive(VOID);
  96. USHORT16 Hv_Drv_OsdDP_GetRealVActive(VOID);
  97. VOID Hv_Drv_OsdDP_SetOsdScalerup(BOOL bEnable);
  98. VOID Hv_Drv_OsdDataPath_ExpandDrawRange(OsdArea *pstArea, OsdArea *pstMerge);
  99. /**
  100. * @brief datapath management data init
  101. * @param[in] None
  102. * @return VOID without return
  103. */
  104. VOID Hv_Drv_OsdDataPath_Init(VOID);
  105. #endif