/** * @file hv_drv_OsdRotate.h * @brief Osd driver rotation interface. * @verbatim * ============================================================================== * ##### How to use this driver ##### * ============================================================================== * (+) Use Hv_Drv_OsdSetRotateType(...) to set rotate type. * (+) Use Hv_Drv_OsdGetRotateType(...) to get rotate type. * (+) Use Hv_Drv_OsdAppendDrawAreaBox(...) to append draw area box for rotation. * (+) Use Hv_Drv_OsdRotationWhole(...) to rotate whole DDR buffer. * (+) Use Hv_Drv_OsdRotationArea(...) to rotate areas in DDR buffer. * * @endverbatim * * @author HiView SoC Software Team * @version 0.0.1 * @date 2022-08-22 */ #ifndef _HV_DRV_OSDROTATE_H #define _HV_DRV_OSDROTATE_H #include "hv_comm_DataType.h" #include "hv_drv_OsdTypes.h" #if (HV_PROJECT_CONFIG_OSD_ROTATION == HV_CONFIG_ON) /** * @brief set rotate type * @param[in] enRotate rotate type */ VOID Hv_Drv_OsdSetRotateType(OsdRotationType enRotate); /** * @brief get rotate type * @return OsdRotationType rotate type */ OsdRotationType Hv_Drv_OsdGetRotateType(VOID); OsdRotationType Hv_Drv_OsdGetRealRotateType(VOID); /** * @brief set rotate skip * @param[in] bSkip HV_TRUE-skip(do not rotate), HV_FALSE-do not skip */ VOID Hv_Drv_OsdSetRotateSkip(BOOL bSkip); /** * @brief get rotate skip * @return BOOL HV_TRUE-skip(do not rotate), HV_FALSE-do not skip */ BOOL Hv_Drv_OsdGetRotateSkip(VOID); /** * @brief append draw area box for rotation * @param[in] stBox area box: x, y, width, height */ VOID Hv_Drv_OsdAppendDrawAreaBox(OsdBox stBox); /** * @brief clear draw area box for rotation */ VOID Hv_Drv_OsdClearDrawAreaBox(VOID); VOID Hv_Drv_OsdSetRotationPartFlag(UCHAR8 ucSceneId); VOID Hv_Drv_OsdRecordAbsolutePostion(USHORT16 usX, USHORT16 usY); VOID Hv_Drv_OsdCancelAbsolutePostion(VOID); /** * @brief rotate whole DDR buffer */ VOID Hv_Drv_OsdRotationWhole(VOID); /** * @brief rotate areas in DDR buffer */ VOID Hv_Drv_OsdRotationArea(UCHAR8 ucSceneId); #if (HV_PROJECT_CONFIG_OSD_ROTATION_TYPE == OSD_ROTATE_IN_PLACE_ALL) VOID Hv_Drv_OsdCalculateUnrotateBoxOnScreen(OsdBox *pstBox, UINT32 uiTotalWidth, UINT32 uiTotalHeight, OsdRotationType enRotate); #else VOID Hv_Drv_OsdCalculateRotateBoxOnScreen(OsdBox *pstBox, UINT32 uiTotalWidth, UINT32 uiTotalHeight, OsdRotationType enRotate); #endif #endif #endif