123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- /**
- * @file hv_drv_OsdResource.h
- * @brief Osd driver layer resource management interface.
- * @verbatim
- * ==============================================================================
- * ##### How to use this driver #####
- * ==============================================================================
- * (+) Use Hv_Drv_OsdResource_Init(...) to init resource management data .
- * @endverbatim
- *
- * @author HiView SoC Software Team
- * @version 0.0.1
- * @date 2022-08-22
- */
- #ifndef __HV_DRV_OSDRESOURCE_H
- #define __HV_DRV_OSDRESOURCE_H
- #include "hv_comm_DataType.h"
- #include "hv_mw_OsdComm.h"
- #include "hv_res_OsdMoeRes.h"
- #define OSD_BANK_CAPACITY 512
- #define OSD_EXCLUSIVE_BANK_CAPACITY 512
- #define OSD_WINDOW_RESOURCE_SLOTS 8
- #define OSD_SCENE_COUNT 8
- #define OSD_SCENE_MAX_BANKS 8
- #define OSD_SYSDMA_PORT_NUMBER (DMA_PORT0_CHANNEL0)
- /**
- * @brief resource initialization function
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_Init(VOID);
- /**
- * @brief get resource current offset
- * @param[in] None
- * @return resource offset
- */
- USHORT16 Hv_Drv_OsdResource_GetCurrentOffset(VOID);
- /**
- * @brief get resource size
- * @param[in] enSize resource size
- * @param[out] pucWidth resource width
- * @param[out] pucHeight resource height
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_GetSize(OsdResourceSize enSize, UCHAR8 *pucWidth, UCHAR8 *pucHeight);
- /**
- * @brief get resource bits
- * @param[in] enType resource type enum
- * @return resource bits
- */
- UCHAR8 Hv_Drv_OsdResource_GetBits(OsdResourceType enType);
- /**
- * @brief convert userdefined resource size to OSD_RESOURCE_SIZE_USERDEFINED
- * @param[in] enSize resource size
- * @return resource size converted
- */
- OsdResourceSize Hv_Drv_OsdResource_ConvertSize(OsdResourceSize enSize);
- /**
- * @brief get code array of block
- * @param[in] pstBlock block structure
- * @return code array
- */
- const USHORT16* Hv_Drv_OsdResource_GetBlockCode(const OsdBlock *pstBlock);
- /**
- * @brief get font index by code
- * @param[in] ucBlockID block id
- * @param[in] usCode Unicode
- * @return font index
- */
- USHORT16 Hv_Drv_OsdResource_SearchFontIndexByCode(UCHAR8 ucBlockID, USHORT16 usCode);
- /**
- * @brief find window resource by bankid
- * @param[in] ucBankID bank id
- * @param[in] bInsert if insert if not found
- * @return bank index
- */
- UCHAR8 Hv_Drv_OsdResource_FindResource(UCHAR8 ucBankID, BOOL bInsert);
- /**
- * @brief search blank bank for current window
- * @param[in] None
- * @return blank bank index
- */
- UCHAR8 Hv_Drv_OsdResource_SearchForBlank(VOID);
- /**
- * @brief find loaded block through blockid
- * @param[in] ucBlockID block id
- * @return loaded block structure
- */
- OsdLoadedBlock *Hv_Drv_OsdResource_FindLoadedBlock(UCHAR8 ucBlockID);
- /**
- * @brief get id of block
- * @param[in] pstBlock block structure
- * @return block id
- */
- UCHAR8 Hv_Drv_OsdResource_GetBlockId(const OsdBlock *pstBlock);
- /**
- * @brief get DDR address of block
- * @param[in] pstBlock block structure
- * @return DDR address of block
- */
- const UCHAR8* Hv_Drv_OsdResource_GetBlockMatrixAddr(const OsdBlock *pstBlock);
- /**
- * @brief get RealWidth array of block
- * @param[in] pstBlock block structure
- * @return realwidth array
- */
- const UCHAR8* Hv_Drv_OsdResource_GetRealWidth(const OsdBlock *pstBlock);
- /**
- * @brief clear loaded resource
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_ClearLoadedResource(VOID);
- /**
- * @brief load resource for main menu
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_LoadMenuResource(VOID);
- /**
- * @brief set resource change range
- * @param[in] enType index change type OSD_SRAM_CHANGE_NONE: resource area clean
- * OSD_SRAM_CHANGE_PARTIAL: partial area of resource dirty
- * OSD_SRAM_CHANGE_FULL: whole area of resource dirty
- * @param[in] uiChangeStart start position of this change
- * @param[in] uiChangeEnd end position of this change
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_SetChangeRange(OsdSRAMChangeType enType, UINT32 uiChangeStart, UINT32 uiChangeEnd);
- /**
- * @brief transfer resource to OSD SRAM
- * @param[in] None
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_TransferResource(VOID);
- /**
- * @brief set current language
- * @param[in] enLanguage language enum
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_SetLanguage(OsdLanguage enLanguage);
- /**
- * @brief set current language not clear buffer
- * @param[in] enLanguage language enum
- * @return VOID without return
- */
- VOID Hv_Drv_OsdResource_SetLanguageOnly(OsdLanguage enLanguage);
- /**
- * @brief get resource count for one row
- * @param[in] pstFontInfo window font structure
- * @param[in] pstRowInfo row structure
- * @return resource count in one row
- */
- UCHAR8 Hv_Drv_OsdResource_RowGetDynamicResourceCount(
- OsdPhyFontInfo *pstFontInfo, OsdRowInfo *pstRowInfo);
- /**
- * @brief allocate usSize bytes from resource buffer
- * @param[in] usSize bytes count
- * @return VOID without return value
- */
- VOID Hv_Drv_OsdResource_AllocRegion(USHORT16 usSize);
- /**
- * @brief get current loaded bank
- * @param[in] None
- * @return loaded bank structure
- */
- OsdLoadedBank* Hv_Drv_OsdResource_GetCurrentLoadedBank(VOID);
- /**
- * @brief create a new loaded bank
- * @param[in] enSize resource size
- * @param[in] enType resource bits
- * @return newly created loaded bank structure
- */
- OsdLoadedBank* Hv_Drv_OsdResource_NewLoadedBank(OsdResourceSize enSize, OsdResourceType enType);
- /**
- * @brief reserve slots in current bank, create a new bank if not enough space
- * @param[in] enSize resource size
- * @param[in] enType resource bits
- * @param[in] usSlotsNeed slots demand
- * @return reserved slot offset in resource buffer
- */
- USHORT16 Hv_Drv_OsdResource_PickLoadedBank(OsdResourceSize enSize,
- OsdResourceType enType, USHORT16 usSlotsNeed);
- /**
- * @brief dynamic load matrix for BANK
- * @param[in] pstLoadedBank loaded bank structure
- * @param[in] pucMatrixAddr matrix address in DDR
- * @param[in] usOffset offset within Matrix
- * @param[in] usCount matrix count to load
- * @return starting slot within loaded bank
- */
- USHORT16 Hv_Drv_OsdResource_PickBankLoadMatrix(OsdLoadedBank *pstLoadedBank,
- const UCHAR8 *pucMatrixAddr, USHORT16 usOffset, USHORT16 usCount);
- /**
- * @brief dynamic load matrix for ROW
- * @param[in] pstRowInfo row structure
- * @param[in] pucMatrixAddr Matrix address in DDR
- * @param[in] usOffset offset within Matrix
- * @param[in] ucCount matrix count to load
- * @return starting slot within loaded bank
- */
- USHORT16 Hv_Drv_OsdResource_PickRowLoadMatrix(OsdRowInfo *pstRowInfo,
- const UCHAR8 *pucMatrixAddr, USHORT16 usOffset, UCHAR8 ucCount);
- #ifdef HV_SCALER_DEBUG_VERSION
- extern USHORT16 g_usResourceRealTotalSize;
- extern USHORT16 g_usResourceRealTotalSizeMax;
- #endif
- #endif
|