val_oal.h 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419
  1. #ifndef _SP5_OAL_H_
  2. #define _SP5_OAL_H_
  3. /* SP5 interface */
  4. #include "vcodec_OAL_v2.h"
  5. /* ME1 interface */
  6. #include "val_types_private.h"
  7. /**
  8. * @par Enumeration
  9. * __VAL_OAL_TYPE
  10. * @par Description
  11. * This is the item used to set OAL type
  12. */
  13. typedef enum ___VAL_OAL_TYPE {
  14. _BYTE_ = 0x5000, /* /< BYTE */
  15. _WORD_, /* /< WORD */
  16. _LONG_ /* /< LONG */
  17. } __VAL_OAL_TYPE;
  18. /* /< VCodecDrvQueryMemType definition for SW/hybrid codec */
  19. #define SP5_VCodecQueryMemType VCodecDrvQueryMemType
  20. /* /< VCodecDrvQueryPhysicalAddr definition for SW/hybrid codec */
  21. #define SP5_VCodecQueryPhysicalAddr VCodecDrvQueryPhysicalAddr
  22. /* /< VCodecDrvSwitchMemType definition for SW/hybrid codec */
  23. #define SP5_VCodecSwitchMemType VCodecDrvSwitchMemType
  24. /* /< VCodecDrvFlushCachedBuffer definition for SW/hybrid codec */
  25. #define SP5_VCodecFlushCachedBuffer VCodecDrvFlushCachedBuffer
  26. /* /< VCodecDrvInvalidateCachedBuffer definition for SW/hybrid codec */
  27. #define SP5_VCodecInvalidateCachedBuffer VCodecDrvInvalidateCachedBuffer
  28. /* /< VCodecDrvFlushCachedBufferAll definition for SW/hybrid codec */
  29. #define SP5_VCodecFlushCachedBufferAll VCodecDrvFlushCachedBufferAll
  30. /* /< VCodecDrvInvalidateCachedBufferAll definition for SW/hybrid codec */
  31. #define SP5_VCodecInvalidateCachedBufferAll VCodecDrvInvalidateCachedBufferAll
  32. /* /< VCodecDrvFlushInvalidateCacheBufferAll definition for SW/hybrid codec */
  33. #define SP5_VCodecFlushInvalidateCacheBufferAll VCodecDrvFlushInvalidateCacheBufferAll
  34. /* /< VCodecDrvMemSet definition for SW/hybrid codec */
  35. #define SP5_VCodecMemSet VCodecDrvMemSet
  36. /* /< VCodecDrvMemCopy definition for SW/hybrid codec */
  37. #define SP5_VCodecMemCopy VCodecDrvMemCopy
  38. /* /< VCodecDrvAssertFail definition for SW/hybrid codec */
  39. #define SP5_VCodecAssertFail VCodecDrvAssertFail
  40. /* /< VCodecDrvMMAP definition for SW/hybrid codec */
  41. #define SP5_VCodecMMAP VCodecDrvMMAP
  42. /* /< VCodecDrvUnMMAP definition for SW/hybrid codec */
  43. #define SP5_VCodecUnMMAP VCodecDrvUnMMAP
  44. /* /< VCodecDrvWaitISR definition for SW/hybrid codec */
  45. #define SP5_VCodecWaitISR VCodecDrvWaitISR
  46. /* /< VCodecDrvLockHW definition for SW/hybrid codec */
  47. #define SP5_VCodecLockHW VCodecDrvLockHW
  48. /* /< VCodecDrvUnLockHW definition for SW/hybrid codec */
  49. #define SP5_VCodecUnLockHW VCodecDrvUnLockHW
  50. /* /< VCodecDrvInitHWLock definition for SW/hybrid codec */
  51. #define SP5_VCodecInitHWLock VCodecDrvInitHWLock
  52. /* /< VCodecDrvDeInitHWLock definition for SW/hybrid codec */
  53. #define SP5_VCodecDeInitHWLock VCodecDrvDeInitHWLock
  54. #if 0
  55. /* /< VCodecDrvTraceLog0 definition for SW/hybrid codec */
  56. #define SP5_VcodecTraceLog0 VCodecDrvTraceLog0
  57. /* /< VCodecDrvTraceLog1 definition for SW/hybrid codec */
  58. #define SP5_VcodecTraceLog1 VCodecDrvTraceLog1
  59. /* /< VCodecDrvTraceLog2 definition for SW/hybrid codec */
  60. #define SP5_VcodecTraceLog2 VCodecDrvTraceLog2
  61. /* /< VCodecDrvTraceLog4 definition for SW/hybrid codec */
  62. #define SP5_VcodecTraceLog4 VCodecDrvTraceLog4
  63. /* /< VCodecDrvTraceLog8 definition for SW/hybrid codec */
  64. #define SP5_VcodecTraceLog8 VCodecDrvTraceLog8
  65. #else
  66. /* /< VCodecPrintf definition for SW/hybrid codec */
  67. #define SP5_VCodecPrintf VCodecPrintf
  68. #endif
  69. /* /< VCodecDrvMemAllocAligned definition for SW/hybrid codec */
  70. #define SP5_VdoMemAllocAligned VCodecDrvMemAllocAligned
  71. /* /< VCodecDrvMemFree definition for SW/hybrid codec */
  72. #define SP5_VdoMemFree VCodecDrvMemFree
  73. /* /< VCodecDrvIntMalloc definition for SW/hybrid codec */
  74. #define SP5_VdoIntMalloc VCodecDrvIntMalloc
  75. /* /< VCodecDrvIntFree definition for SW/hybrid codec */
  76. #define SP5_VdoIntFree VCodecDrvIntFree
  77. /* /< VCodecDrvRegSync definition for SW/hybrid codec */
  78. #define SP5_RegSync VCodecDrvRegSync
  79. /* /< VCodecDrvRegSyncWriteB definition for SW/hybrid codec */
  80. #define SP5_RegSyncWriteB VCodecDrvRegSyncWriteB
  81. /* /< VCodecDrvRegSyncWriteW definition for SW/hybrid codec */
  82. #define SP5_RegSyncWriteW VCodecDrvRegSyncWriteW
  83. /* /< VCodecDrvRegSyncWriteL definition for SW/hybrid codec */
  84. #define SP5_RegSyncWriteL VCodecDrvRegSyncWriteL
  85. /* /< VMPEG4EncCodecDrvWaitISR definition for SW/hybrid codec */
  86. #define SP5_VMPEG4EncCodecWaitISR VMPEG4EncCodecDrvWaitISR
  87. /* /< VMPEG4EncCodecDrvLockHW definition for SW/hybrid codec */
  88. #define SP5_VMPEG4EncCodecLockHW VMPEG4EncCodecDrvLockHW
  89. /* /< VMPEG4EncCodecDrvUnLockHW definition for SW/hybrid codec */
  90. #define SP5_VMPEG4EncCodecUnLockHW VMPEG4EncCodecDrvUnLockHW
  91. /* /< VH264DecCodecDrvWaitISR definition for SW/hybrid codec */
  92. #define SP5_VH264DecCodecWaitISR VH264DecCodecDrvWaitISR
  93. /* /< VH264DecCodecDrvLockHW definition for SW/hybrid codec */
  94. #define SP5_VH264DecCodecLockHW VH264DecCodecDrvLockHW
  95. /* /< VH264DecCodecDrvUnLockHW definition for SW/hybrid codec */
  96. #define SP5_VH264DecCodecUnLockHW VH264DecCodecDrvUnLockHW
  97. /**
  98. * @par Function
  99. * SP5_VCodecQueryMemType
  100. * @par Description
  101. * The function used to query memory type for SW/hybrid codec
  102. * @param
  103. * pBuffer_VA [IN] The pointer of buffer address
  104. * @param
  105. * u4Size [IN] The size of buffer
  106. * @param
  107. * peMemType [OUT] The memory type
  108. * @par Returns
  109. * void
  110. */
  111. void SP5_VCodecQueryMemType(
  112. IN void *pBuffer_VA,
  113. IN unsigned int u4Size,
  114. OUT VCODEC_MEMORY_TYPE_T * peMemType);
  115. /**
  116. * @par Function
  117. * SP5_VCodecQueryPhysicalAddr
  118. * @par Description
  119. * The function used to query physical address
  120. * @param
  121. * pBuffer_VA [IN] The pointer of buffer address
  122. * @param
  123. * pBufferOut_PA [OUT] The physical address
  124. * @par Returns
  125. * void
  126. */
  127. void SP5_VCodecQueryPhysicalAddr(IN void *pBuffer_VA,
  128. OUT void **pBufferOut_PA);
  129. /**
  130. * @par Function
  131. * SP5_VCodecSwitchMemType
  132. * @par Description
  133. * The function used to switch memory type for SW/hybrid codec
  134. * @param
  135. * pBuffer_VA [IN] The pointer of buffer address
  136. * @param
  137. * u4Size [IN] The size of buffer
  138. * @param
  139. * eMemType [IN] The memory type
  140. * @param
  141. * pBufferOut_VA [OUT] The pointer of buffer address
  142. * @par Returns
  143. * int, return 0 if success, return -1 if failed
  144. */
  145. int SP5_VCodecSwitchMemType(IN void *pBuffer_VA,
  146. IN unsigned int u4Size,
  147. IN VCODEC_MEMORY_TYPE_T eMemType,
  148. OUT void **pBufferOut_VA);
  149. /**
  150. * @par Function
  151. * SP5_VCodecFlushCachedBuffer
  152. * @par Description
  153. * The function used to flush cache by size
  154. * @param
  155. * pBuffer_VA [IN] The pointer of buffer address
  156. * @param
  157. * u4Size [IN] The size of buffer
  158. * @par Returns
  159. * void
  160. */
  161. void SP5_VCodecFlushCachedBuffer(IN void *pBuffer_VA,
  162. IN unsigned int u4Size);
  163. /**
  164. * @par Function
  165. * SP5_VCodecInvalidateCachedBuffer
  166. * @par Description
  167. * The function used to invalidate cache by size
  168. * @param
  169. * pBuffer_VA [IN] The pointer of buffer address
  170. * @param
  171. * u4Size [IN] The size of buffer
  172. * @par Returns
  173. * void
  174. */
  175. void SP5_VCodecInvalidateCachedBuffer(IN void *pBuffer_VA,
  176. IN unsigned int u4Size);
  177. /**
  178. * @par Function
  179. * SP5_VCodecFlushCachedBufferAll
  180. * @par Description
  181. * The function used to flush all cache
  182. * @par Returns
  183. * void
  184. */
  185. void SP5_VCodecFlushCachedBufferAll(void);
  186. /**
  187. * @par Function
  188. * SP5_VCodecInvalidateCachedBufferAll
  189. * @par Description
  190. * The function used to invalidate all cache
  191. * @par Returns
  192. * void
  193. */
  194. void SP5_VCodecInvalidateCachedBufferAll(void);
  195. /**
  196. * @par Function
  197. * SP5_VCodecFlushInvalidateCacheBufferAll
  198. * @par Description
  199. * The function used to flush & invalidate all cache
  200. * @par Returns
  201. * void
  202. */
  203. void SP5_VCodecFlushInvalidateCacheBufferAll(void);
  204. /**
  205. * @par Function
  206. * SP5_VCodecMemSet
  207. * @par Description
  208. * The function used to memory set
  209. * @param
  210. * pBuffer_VA [IN] The pointer of buffer address
  211. * @param
  212. * cValue [IN] The value will be set to memory
  213. * @param
  214. * u4Length [IN] The length of memory will be set
  215. * @par Returns
  216. * void
  217. */
  218. void SP5_VCodecMemSet(IN void *pBuffer_VA,
  219. IN char cValue,
  220. IN unsigned int u4Length);
  221. /**
  222. * @par Function
  223. * SP5_VCodecMemCopy
  224. * @par Description
  225. * The function used to memory copy
  226. * @param
  227. * pvDest [IN] The pointer of destination memory
  228. * @param
  229. * pvSrc [IN] The pointer of source memory
  230. * @param
  231. * u4Length [IN] The length of memory will be copied
  232. * @par Returns
  233. * void
  234. */
  235. void SP5_VCodecMemCopy(IN void *pvDest ,
  236. IN const void *pvSrc ,
  237. IN unsigned int u4Length);
  238. /**
  239. * @par Function
  240. * SP5_VCodecAssertFail
  241. * @par Description
  242. * The function used to assert when occur error
  243. * @param
  244. * ptr [IN] The name of error source file
  245. * @param
  246. * i4Line [IN] The line of error source file
  247. * @param
  248. * i4Arg [IN] The argumnet of error source file
  249. * @par Returns
  250. * void
  251. */
  252. void SP5_VCodecAssertFail(IN char *ptr,
  253. IN int i4Line,
  254. IN int i4Arg);
  255. /**
  256. * @par Function
  257. * SP5_VCodecMMAP
  258. * @par Description
  259. * The function used to memory map
  260. * @param
  261. * prParam [IN/OUT] The structure contains memory info for memory map
  262. * @par Returns
  263. * void
  264. */
  265. void SP5_VCodecMMAP(VCODEC_OAL_MMAP_T *prParam);
  266. /**
  267. * @par Function
  268. * SP5_VCodecUnMMAP
  269. * @par Description
  270. * The function used to memory unmap
  271. * @param
  272. * prParam [IN/OUT] The structure contains memory info for memory unmap
  273. * @par Returns
  274. * void
  275. */
  276. void SP5_VCodecUnMMAP(VCODEC_OAL_MMAP_T *prParam);
  277. /**
  278. * @par Function
  279. * SP5_VCodecWaitISR
  280. * @par Description
  281. * The ISR usage related function, whene trigger HW, we will use to wait HW complete
  282. * @param
  283. * prParam [IN/OUT] The structure contains used info for ISR usage
  284. * @par Returns
  285. * int, return 1 if success, return 0 if failed
  286. */
  287. int SP5_VCodecWaitISR(VCODEC_OAL_ISR_T *prParam);
  288. /**
  289. * @par Function
  290. * SP5_VCodecLockHW
  291. * @par Description
  292. * The single/multiple instance usage function, to allow using HW
  293. * @param
  294. * prParam [IN/OUT] The structure contains used info for Lock HW
  295. * @par Returns
  296. * int, return 1 if success, return 0 if failed
  297. */
  298. int SP5_VCodecLockHW(VCODEC_OAL_HW_LOCK_T *prParam);
  299. /**
  300. * @par Function
  301. * SP5_VCodecUnLockHW
  302. * @par Description
  303. * The single/multiple instance usage function, to release HW for another instance
  304. * @param
  305. * prParam [IN/OUT] The structure contains used info for unLock HW
  306. * @par Returns
  307. * int, return 1 if success, return 0 if failed
  308. */
  309. int SP5_VCodecUnLockHW(VCODEC_OAL_HW_LOCK_T *prParam);
  310. /**
  311. * @par Function
  312. * SP5_VCodecInitHWLock
  313. * @par Description
  314. * The function used to init HW lock
  315. * @param
  316. * prParam [IN/OUT] The structure contains used info for init HW lock
  317. * @par Returns
  318. * void
  319. */
  320. void SP5_VCodecInitHWLock(VCODEC_OAL_HW_REGISTER_T *prParam);
  321. /**
  322. * @par Function
  323. * SP5_VCodecDeInitHWLock
  324. * @par Description
  325. * The function used to deinit HW lock
  326. * @param
  327. * prParam [IN/OUT] The structure contains used info for deinit HW lock
  328. * @par Returns
  329. * void
  330. */
  331. void SP5_VCodecDeInitHWLock(VCODEC_OAL_HW_REGISTER_T *prParam);
  332. #if 0
  333. /**
  334. * @par Function
  335. * SP5_VcodecTraceLog0
  336. * @par Description
  337. * The function used to trace log for debug
  338. * @param
  339. * eGroup [IN] The value to define log importance priority
  340. * @param
  341. * eIndex [IN] The value to define log type
  342. * @par Returns
  343. * void
  344. */
  345. void SP5_VcodecTraceLog0(IN VCODEC_LOG_GROUP_T eGroup,
  346. IN VCODEC_LOG_INDEX_T eIndex
  347. );
  348. /**
  349. * @par Function
  350. * SP5_VcodecTraceLog1
  351. * @par Description
  352. * The function used to trace log for debug
  353. * @param
  354. * eGroup [IN] The value to define log importance priority
  355. * @param
  356. * eIndex [IN] The value to define log type
  357. * @param
  358. * arg [IN] The input argument
  359. * @par Returns
  360. * void
  361. */
  362. void SP5_VcodecTraceLog1(IN VCODEC_LOG_GROUP_T eGroup,
  363. IN VCODEC_LOG_INDEX_T eIndex,
  364. IN UINT64 arg
  365. );
  366. /**
  367. * @par Function
  368. * SP5_VcodecTraceLog2
  369. * @par Description
  370. * The function used to trace log for debug
  371. * @param
  372. * eGroup [IN] The value to define log importance priority
  373. * @param
  374. * eIndex [IN] The value to define log type
  375. * @param
  376. * arg1 [IN] The input argument1
  377. * @param
  378. * arg2 [IN] The input argument2
  379. * @par Returns
  380. * void
  381. */
  382. void SP5_VcodecTraceLog2(IN VCODEC_LOG_GROUP_T eGroup,
  383. IN VCODEC_LOG_INDEX_T eIndex,
  384. IN UINT64 arg1,
  385. IN UINT64 arg2
  386. );
  387. /**
  388. * @par Function
  389. * SP5_VcodecTraceLog4
  390. * @par Description
  391. * The function used to trace log for debug
  392. * @param
  393. * eGroup [IN] The value to define log importance priority
  394. * @param
  395. * eIndex [IN] The value to define log type
  396. * @param
  397. * arg1 [IN] The input argument1
  398. * @param
  399. * arg2 [IN] The input argument2
  400. * @param
  401. * arg3 [IN] The input argument3
  402. * @param
  403. * arg4 [IN] The input argument4
  404. * @par Returns
  405. * void
  406. */
  407. void SP5_VcodecTraceLog4(IN VCODEC_LOG_GROUP_T eGroup,
  408. IN VCODEC_LOG_INDEX_T eIndex,
  409. IN UINT64 arg1,
  410. IN UINT64 arg2, IN UINT64 arg3,
  411. IN UINT64 arg4
  412. );
  413. /**
  414. * @par Function
  415. * SP5_VcodecTraceLog4
  416. * @par Description
  417. * The function used to trace log for debug
  418. * @param
  419. * eGroup [IN] The value to define log importance priority
  420. * @param
  421. * eIndex [IN] The value to define log type
  422. * @param
  423. * arg1 [IN] The input argument1
  424. * @param
  425. * arg2 [IN] The input argument2
  426. * @param
  427. * arg3 [IN] The input argument3
  428. * @param
  429. * arg4 [IN] The input argument4
  430. * @param
  431. * arg5 [IN] The input argument5
  432. * @param
  433. * arg6 [IN] The input argument6
  434. * @param
  435. * arg7 [IN] The input argument7
  436. * @param
  437. * arg8 [IN] The input argument8
  438. * @par Returns
  439. * void
  440. */
  441. void SP5_VcodecTraceLog8(IN VCODEC_LOG_GROUP_T eGroup,
  442. IN VCODEC_LOG_INDEX_T eIndex,
  443. IN UINT64 arg1,
  444. IN UINT64 arg2,
  445. IN UINT64 arg3,
  446. IN UINT64 arg4,
  447. IN UINT64 arg5,
  448. IN UINT64 arg6,
  449. IN UINT64 arg7,
  450. IN UINT64 arg8
  451. );
  452. #else
  453. /**
  454. * @par Function
  455. * SP5_VCodecPrintf
  456. * @par Description
  457. * The function used to trace log for debug
  458. * @param
  459. * format [IN] log string
  460. * @param
  461. * ... [IN] log argument
  462. */
  463. VCODEC_OAL_ERROR_T SP5_VCodecPrintf(IN const char *_Format, ...);
  464. #endif
  465. /**
  466. * @par Function
  467. * SP5_VdoMemAllocAligned
  468. * @par Description
  469. * The function used to alloc external working memry
  470. * @param
  471. * handle [IN] codec/driver handle
  472. * @param
  473. * size [IN] allocated memory size
  474. * @param
  475. * u4AlignSize [IN] allocated memory byte alignment
  476. * @param
  477. * cachable [IN] memory type
  478. * @param
  479. * pBuf [OUT] allocated memory buffer info
  480. * @param
  481. * eMemCodec [IN] allocated memory used for venc/vdec
  482. * @par Returns
  483. * VAL_VOID_T
  484. */
  485. VAL_VOID_T SP5_VdoMemAllocAligned(
  486. VAL_VOID_T *handle,
  487. VAL_UINT32_T size,
  488. unsigned int u4AlignSize,
  489. VCODEC_MEMORY_TYPE_T cachable,
  490. VCODEC_BUFFER_T * pBuf,
  491. VAL_MEM_CODEC_T eMemCodec
  492. );
  493. /**
  494. * @par Function
  495. * SP5_VdoMemFree
  496. * @par Description
  497. * The function used to free external working memry
  498. * @param
  499. * handle [IN] codec/driver handle
  500. * @param
  501. * pBuf [IN] allocated memory buffer info
  502. * @par Returns
  503. * VAL_VOID_T
  504. */
  505. VAL_VOID_T SP5_VdoMemFree(VAL_VOID_T *handle, VCODEC_BUFFER_T *pBuf);
  506. /**
  507. * @par Function
  508. * SP5_VdoIntMalloc
  509. * @par Description
  510. * The function used to alloc internal working memry
  511. * @param
  512. * handle [IN] codec/driver handle
  513. * @param
  514. * size [IN] allocated memory size
  515. * @param
  516. * alignedsize [IN] allocated memory byte alignment
  517. * @param
  518. * prBuffer_adr [OUT] allocated memory buffer info
  519. * @par Returns
  520. * VAL_VOID_T
  521. */
  522. VAL_VOID_T SP5_VdoIntMalloc(HANDLE handle, unsigned int size, unsigned int alignedsize, VCODEC_BUFFER_T *prBuffer_adr);
  523. /**
  524. * @par Function
  525. * SP5_VdoIntFree
  526. * @par Description
  527. * The function used to free internal working memry
  528. * @param
  529. * handle [IN] codec/driver handle
  530. * @param
  531. * prBuffer_adr [IN] allocated memory buffer info
  532. * @par Returns
  533. * VAL_VOID_T
  534. */
  535. VAL_VOID_T SP5_VdoIntFree(HANDLE handle, VCODEC_BUFFER_T *prBuffer_adr);
  536. /**
  537. * @par Function
  538. * SP5_RegSync
  539. * @par Description
  540. * The function used to set register sync
  541. * @param
  542. * type [IN] BYTE/WORD/LONG
  543. * @param
  544. * v [IN] register value
  545. * @param
  546. * a [IN] register address
  547. * @par Returns
  548. * VAL_VOID_T
  549. */
  550. VAL_VOID_T SP5_RegSync(int type, unsigned int v, unsigned int a);
  551. /**
  552. * @par Function
  553. * SP5_VMPEG4EncCodecWaitISR
  554. * @par Description
  555. * The ISR usage related function, whene trigger HW, we will use to wait HW complete
  556. * @param
  557. * prParam [IN/OUT] The structure contains used info for ISR usage
  558. * @par Returns
  559. * int, return 1 if success, return 0 if failed
  560. */
  561. int SP5_VMPEG4EncCodecWaitISR(VCODEC_OAL_ISR_T *prParam);
  562. /**
  563. * @par Function
  564. * SP5_VMPEG4EncCodecLockHW
  565. * @par Description
  566. * The single/multiple instance usage function, to allow using HW
  567. * @param
  568. * prParam [IN/OUT] The structure contains used info for Lock HW
  569. * @par Returns
  570. * int, return 1 if success, return 0 if failed
  571. */
  572. int SP5_VMPEG4EncCodecLockHW(VCODEC_OAL_HW_LOCK_T *prParam);
  573. /**
  574. * @par Function
  575. * SP5_VMPEG4EncCodecUnLockHW
  576. * @par Description
  577. * The single/multiple instance usage function, to release HW for another instance
  578. * @param
  579. * prParam [IN/OUT] The structure contains used info for unLock HW
  580. * @par Returns
  581. * int, return 1 if success, return 0 if failed
  582. */
  583. int SP5_VMPEG4EncCodecUnLockHW(VCODEC_OAL_HW_LOCK_T *prParam);
  584. /**
  585. * @par Function
  586. * SP5_VH264DecCodecWaitISR
  587. * @par Description
  588. * The ISR usage related function, whene trigger HW, we will use to wait HW complete
  589. * @param
  590. * prParam [IN/OUT] The structure contains used info for ISR usage
  591. * @par Returns
  592. * int, return 1 if success, return 0 if failed
  593. */
  594. int SP5_VH264DecCodecWaitISR(VCODEC_OAL_ISR_T *prParam);
  595. /**
  596. * @par Function
  597. * SP5_VH264DecCodecLockHW
  598. * @par Description
  599. * The single/multiple instance usage function, to allow using HW
  600. * @param
  601. * prParam [IN/OUT] The structure contains used info for Lock HW
  602. * @par Returns
  603. * int, return 1 if success, return 0 if failed
  604. */
  605. int SP5_VH264DecCodecLockHW(VCODEC_OAL_HW_LOCK_T *prParam);
  606. /**
  607. * @par Function
  608. * SP5_VH264DecCodecUnLockHW
  609. * @par Description
  610. * The single/multiple instance usage function, to release HW for another instance
  611. * @param
  612. * prParam [IN/OUT] The structure contains used info for unLock HW
  613. * @par Returns
  614. * int, return 1 if success, return 0 if failed
  615. */
  616. int SP5_VH264DecCodecUnLockHW(VCODEC_OAL_HW_LOCK_T *prParam);
  617. /**
  618. * @par Function
  619. * eValInit
  620. * @par Description
  621. * The init driver function
  622. * @param
  623. * a_phHalHandle [IN/OUT] The codec/driver handle
  624. * @par Returns
  625. * VAL_RESULT_T, return VAL_RESULT_NO_ERROR if success, return VAL_RESULT_UNKNOWN_ERROR if failed
  626. */
  627. VAL_RESULT_T eValInit(VAL_HANDLE_T *a_phHalHandle);
  628. /**
  629. * @par Function
  630. * eValDeInit
  631. * @par Description
  632. * The deinit driver function
  633. * @param
  634. * a_phHalHandle [IN/OUT] The codec/driver handle
  635. * @par Returns
  636. * VAL_RESULT_T, return VAL_RESULT_NO_ERROR if success, return VAL_RESULT_UNKNOWN_ERROR if failed
  637. */
  638. VAL_RESULT_T eValDeInit(VAL_HANDLE_T *a_phHalHandle);
  639. /**
  640. * @par Function
  641. * VCodecDrvCheck_Version
  642. * @par Description
  643. * The function used to check codec library version
  644. * @param
  645. * version [IN/OUT] The codec library version
  646. * @par Returns
  647. * int, return 0 if success, return -1 if failed
  648. */
  649. int VCodecDrvCheck_Version(int version);
  650. /************ Multi-thread function ***********/
  651. /***** Thread Management Functions ******/
  652. /**
  653. * @par Function
  654. * VCodecDrvPthread_attr_init
  655. * @par Description
  656. * The pthread_attr_init wrapper function
  657. * @param
  658. * attr [OUT] attr
  659. * @par Returns
  660. * int, pthread_attr_init((pthread_attr_t *)attr);
  661. */
  662. int VCodecDrvPthread_attr_init(OUT VCODEC_PTHREAD_ATTR_T * attr);
  663. /**
  664. * @par Function
  665. * VCodecDrvPthread_attr_destroy
  666. * @par Description
  667. * The pthread_attr_destroy wrapper function
  668. * @param
  669. * attr [IN] attr
  670. * @par Returns
  671. * int, pthread_attr_destroy((pthread_attr_t *)attr);
  672. */
  673. int VCodecDrvPthread_attr_destroy(IN VCODEC_PTHREAD_ATTR_T * attr);
  674. /**
  675. * @par Function
  676. * VCodecDrvPthread_attr_getdetachstate
  677. * @par Description
  678. * The pthread_attr_getdetachstate wrapper function
  679. * @param
  680. * attr [IN] attr
  681. * @param
  682. * detachstate [OUT] detachstate
  683. * @par Returns
  684. * int, pthread_attr_getdetachstate((pthread_attr_t const *)attr, detachstate);
  685. */
  686. int VCodecDrvPthread_attr_getdetachstate(IN const VCODEC_PTHREAD_ATTR_T * attr, OUT int *detachstate);
  687. /**
  688. * @par Function
  689. * VCodecDrvPthread_attr_getdetachstate
  690. * @par Description
  691. * The pthread_attr_getdetachstate wrapper function
  692. * @param
  693. * attr [IN] attr
  694. * @param
  695. * detachstate [OUT] detachstate
  696. * @par Returns
  697. * int, pthread_attr_getdetachstate((pthread_attr_t const *)attr, detachstate);
  698. */
  699. int VCodecDrvPthread_attr_setdetachstate(IN VCODEC_PTHREAD_ATTR_T * attr, IN int detachstate);
  700. /**
  701. * @par Function
  702. * VCodecDrvPthread_create
  703. * @par Description
  704. * The pthread_create wrapper function
  705. * @param
  706. * thread [OUT] thread
  707. * @param
  708. * attr [IN] attr
  709. * @param
  710. * start_routine [IN] start_routine
  711. * @param
  712. * arg [IN] arg
  713. * @par Returns
  714. * int, pthread_create((pthread_t *)thread, (pthread_attr_t const *)attr, start_routine, arg);
  715. */
  716. int VCodecDrvPthread_create(
  717. OUT VCODEC_PTHREAD_T * thread,
  718. IN const VCODEC_PTHREAD_ATTR_T * attr,
  719. IN void * (*start_routine)(void *),
  720. IN void *arg
  721. );
  722. /**
  723. * @par Function
  724. * VCodecDrvPthread_kill
  725. * @par Description
  726. * The pthread_kill wrapper function
  727. * @param
  728. * tid [IN] tid
  729. * @param
  730. * sig [IN] sig
  731. * @par Returns
  732. * int, pthread_kill((pthread_t)tid, SIGUSR1);
  733. */
  734. int VCodecDrvPthread_kill(IN VCODEC_PTHREAD_T tid, IN int sig);
  735. /**
  736. * @par Function
  737. * VCodecDrvPthread_exit
  738. * @par Description
  739. * The pthread_exit wrapper function
  740. * @param
  741. * retval [OUT] retval
  742. * @par Returns
  743. * void
  744. */
  745. void VCodecDrvPthread_exit(OUT void *retval);
  746. /**
  747. * @par Function
  748. * VCodecDrvPthread_join
  749. * @par Description
  750. * The pthread_join wrapper function
  751. * @param
  752. * thid [IN] thid
  753. * @param
  754. * ret_val [OUT] ret_val
  755. * @par Returns
  756. * int, pthread_join((pthread_t)thid, ret_val);
  757. */
  758. int VCodecDrvPthread_join(IN VCODEC_PTHREAD_T thid, OUT void **ret_val);
  759. /* int VCodecDrvPthread_detach(IN VCODEC_PTHREAD_T thid); */
  760. /**
  761. * @par Function
  762. * VCodecDrvPthread_once
  763. * @par Description
  764. * The pthread_once wrapper function
  765. * @param
  766. * once_control [IN] once_control
  767. * @param
  768. * init_routine [IN] init_routine
  769. * @par Returns
  770. * int, pthread_once((pthread_once_t *)once_control, init_routine);
  771. */
  772. int VCodecDrvPthread_once(IN VCODEC_PTHREAD_ONCE_T * once_control, IN void (*init_routine)(void));
  773. /**
  774. * @par Function
  775. * VCodecDrvPthread_self
  776. * @par Description
  777. * The pthread_self wrapper function
  778. * @par Returns
  779. * VCODEC_PTHREAD_T, (VCODEC_PTHREAD_T)pthread_self()
  780. */
  781. VCODEC_PTHREAD_T VCodecDrvPthread_self(void);
  782. /* VCODEC_OAL_ERROR_T VCodecDrvPthread_equal(IN VCODEC_PTHREAD_T one,IN VCODEC_PTHREAD_T two); */
  783. /***** Mutex Functions ******/
  784. /**
  785. * @par Function
  786. * VCodecDrvPthread_mutexattr_init
  787. * @par Description
  788. * The pthread_mutexattr_init wrapper function
  789. * @param
  790. * attr [OUT] attr
  791. * @par Returns
  792. * int, pthread_mutexattr_init((pthread_mutexattr_t *)attr);
  793. */
  794. int VCodecDrvPthread_mutexattr_init(OUT VCODEC_PTHREAD_MUTEXATTR_T * attr);
  795. /**
  796. * @par Function
  797. * VCodecDrvPthread_mutexattr_destroy
  798. * @par Description
  799. * The pthread_mutexattr_destroy wrapper function
  800. * @param
  801. * attr [IN] attr
  802. * @par Returns
  803. * int, pthread_mutexattr_destroy((pthread_mutexattr_t *)attr);
  804. */
  805. int VCodecDrvPthread_mutexattr_destroy(IN VCODEC_PTHREAD_MUTEXATTR_T * attr);
  806. /**
  807. * @par Function
  808. * VCodecDrvPthread_mutex_init
  809. * @par Description
  810. * The pthread_mutex_init wrapper function
  811. * @param
  812. * mutex [OUT] mutex
  813. * @param
  814. * attr [IN] attr
  815. * @par Returns
  816. * int, pthread_mutex_init((pthread_mutex_t *)mutex, (const pthread_mutexattr_t *)attr);
  817. */
  818. int VCodecDrvPthread_mutex_init(OUT VCODEC_PTHREAD_MUTEX_T * mutex, IN const VCODEC_PTHREAD_MUTEXATTR_T * attr);
  819. /**
  820. * @par Function
  821. * VCodecDrvPthread_mutex_destroy
  822. * @par Description
  823. * The pthread_mutex_destroy wrapper function
  824. * @param
  825. * mutex [IN] mutex
  826. * @par Returns
  827. * int, pthread_mutex_destroy((pthread_mutex_t *)mutex);
  828. */
  829. int VCodecDrvPthread_mutex_destroy(IN VCODEC_PTHREAD_MUTEX_T * mutex);
  830. /**
  831. * @par Function
  832. * VCodecDrvPthread_mutex_lock
  833. * @par Description
  834. * The pthread_mutex_lock wrapper function
  835. * @param
  836. * mutex [IN] mutex
  837. * @par Returns
  838. * int, pthread_mutex_lock((pthread_mutex_t *)mutex);
  839. */
  840. int VCodecDrvPthread_mutex_lock(IN VCODEC_PTHREAD_MUTEX_T * mutex);
  841. /**
  842. * @par Function
  843. * VCodecDrvPthread_mutex_unlock
  844. * @par Description
  845. * The pthread_mutex_unlock wrapper function
  846. * @param
  847. * mutex [IN] mutex
  848. * @par Returns
  849. * int, pthread_mutex_unlock((pthread_mutex_t *)mutex);
  850. */
  851. int VCodecDrvPthread_mutex_unlock(IN VCODEC_PTHREAD_MUTEX_T * mutex);
  852. /**
  853. * @par Function
  854. * VCodecDrvPthread_mutex_trylock
  855. * @par Description
  856. * The pthread_mutex_trylock wrapper function
  857. * @param
  858. * mutex [IN] mutex
  859. * @par Returns
  860. * int, pthread_mutex_trylock((pthread_mutex_t *)mutex);
  861. */
  862. int VCodecDrvPthread_mutex_trylock(IN VCODEC_PTHREAD_MUTEX_T * mutex);
  863. /***** Spin Functions ******/
  864. /**
  865. * @par Function
  866. * VCodecDrvPthread_spin_init
  867. * @par Description
  868. * The pthread_spin_init wrapper function
  869. * @param
  870. * lock [OUT] lock
  871. * @param
  872. * pshared [IN] pshared
  873. * @par Returns
  874. * int, -1, NOT implement
  875. */
  876. int VCodecDrvPthread_spin_init(OUT VCODEC_PTHREAD_SPINLOCK_T * lock, IN int pshared);
  877. /**
  878. * @par Function
  879. * VCodecDrvPthread_spin_destroy
  880. * @par Description
  881. * The pthread_spin_destroy wrapper function
  882. * @param
  883. * lock [IN] lock
  884. * @par Returns
  885. * int, -1, NOT implement
  886. */
  887. int VCodecDrvPthread_spin_destroy(IN VCODEC_PTHREAD_SPINLOCK_T * lock);
  888. /**
  889. * @par Function
  890. * VCodecDrvPthread_spin_lock
  891. * @par Description
  892. * The pthread_spin_lock wrapper function
  893. * @param
  894. * lock [IN] lock
  895. * @par Returns
  896. * int, -1, NOT implement
  897. */
  898. int VCodecDrvPthread_spin_lock(IN VCODEC_PTHREAD_SPINLOCK_T * lock);
  899. /**
  900. * @par Function
  901. * VCodecDrvPthread_spin_trylock
  902. * @par Description
  903. * The pthread_spin_trylock wrapper function
  904. * @param
  905. * lock [IN] lock
  906. * @par Returns
  907. * int, -1, NOT implement
  908. */
  909. int VCodecDrvPthread_spin_trylock(IN VCODEC_PTHREAD_SPINLOCK_T * lock);
  910. /**
  911. * @par Function
  912. * VCodecDrvPthread_spin_unlock
  913. * @par Description
  914. * The pthread_spin_unlock wrapper function
  915. * @param
  916. * lock [IN] lock
  917. * @par Returns
  918. * int, -1, NOT implement
  919. */
  920. int VCodecDrvPthread_spin_unlock(IN VCODEC_PTHREAD_SPINLOCK_T * lock);
  921. /***** Condition Variable Functions ******/
  922. /**
  923. * @par Function
  924. * VCodecDrvPthread_condattr_init
  925. * @par Description
  926. * The pthread_condattr_init wrapper function
  927. * @param
  928. * attr [OUT] attr
  929. * @par Returns
  930. * int, pthread_condattr_init((pthread_condattr_t *)attr);
  931. */
  932. int VCodecDrvPthread_condattr_init(OUT VCODEC_PTHREAD_CONDATTR_T * attr);
  933. /**
  934. * @par Function
  935. * VCodecDrvPthread_condattr_destroy
  936. * @par Description
  937. * The pthread_condattr_destroy wrapper function
  938. * @param
  939. * attr [IN] attr
  940. * @par Returns
  941. * int, pthread_condattr_destroy((pthread_condattr_t *)attr);
  942. */
  943. int VCodecDrvPthread_condattr_destroy(IN VCODEC_PTHREAD_CONDATTR_T * attr);
  944. /**
  945. * @par Function
  946. * VCodecDrvPthread_cond_init
  947. * @par Description
  948. * The pthread_cond_init wrapper function
  949. * @param
  950. * cond [OUT] cond
  951. * @param
  952. * attr [IN] attr
  953. * @par Returns
  954. * int, pthread_cond_init((pthread_cond_t *)cond, (const pthread_condattr_t *)attr);
  955. */
  956. int VCodecDrvPthread_cond_init(OUT VCODEC_PTHREAD_COND_T * cond, IN const VCODEC_PTHREAD_CONDATTR_T * attr);
  957. /**
  958. * @par Function
  959. * VCodecDrvPthread_cond_destroy
  960. * @par Description
  961. * The pthread_cond_destroy wrapper function
  962. * @param
  963. * cond [IN] cond
  964. * @par Returns
  965. * int, pthread_cond_destroy((pthread_cond_t *)cond);
  966. */
  967. int VCodecDrvPthread_cond_destroy(IN VCODEC_PTHREAD_COND_T * cond);
  968. /**
  969. * @par Function
  970. * VCodecDrvPthread_cond_broadcast
  971. * @par Description
  972. * The pthread_cond_broadcast wrapper function
  973. * @param
  974. * cond [IN] cond
  975. * @par Returns
  976. * int, pthread_cond_broadcast((pthread_cond_t *)cond);
  977. */
  978. int VCodecDrvPthread_cond_broadcast(IN VCODEC_PTHREAD_COND_T * cond);
  979. /**
  980. * @par Function
  981. * VCodecDrvPthread_cond_signal
  982. * @par Description
  983. * The pthread_cond_signal wrapper function
  984. * @param
  985. * cond [IN] cond
  986. * @par Returns
  987. * int, pthread_cond_signal((pthread_cond_t *)cond);
  988. */
  989. int VCodecDrvPthread_cond_signal(IN VCODEC_PTHREAD_COND_T * cond);
  990. /**
  991. * @par Function
  992. * VCodecDrvPthread_cond_signal
  993. * @par Description
  994. * The pthread_cond_wait wrapper function
  995. * @param
  996. * cond [IN] cond
  997. * @param
  998. * mutex [IN] mutex
  999. * @par Returns
  1000. * int, pthread_cond_wait((pthread_cond_t *)cond, (pthread_mutex_t *)mutex);
  1001. */
  1002. int VCodecDrvPthread_cond_wait(IN VCODEC_PTHREAD_COND_T * cond, IN VCODEC_PTHREAD_MUTEX_T * mutex);
  1003. /************ End of Multi-thread function ***********/
  1004. /***** Semaphore Functions ******/
  1005. /**
  1006. * @par Function
  1007. * VCodecDrv_sem_init
  1008. * @par Description
  1009. * The sem_init wrapper function
  1010. * @param
  1011. * sem [IN] sem
  1012. * @param
  1013. * pshared [IN] pshared
  1014. * @param
  1015. * value [IN] value
  1016. * @par Returns
  1017. * int, sem_init((sem_t*)sem, pshared, value);
  1018. */
  1019. int VCodecDrv_sem_init(IN VCODEC_OAL_SEM_T * sem, IN int pshared, IN unsigned int value);
  1020. /**
  1021. * @par Function
  1022. * VCodecDrv_sem_destroy
  1023. * @par Description
  1024. * The sem_destroy wrapper function
  1025. * @param
  1026. * sem [IN] sem
  1027. * @par Returns
  1028. * int, sem_destroy((sem_t*)sem);
  1029. */
  1030. int VCodecDrv_sem_destroy(IN VCODEC_OAL_SEM_T * sem);
  1031. /**
  1032. * @par Function
  1033. * VCodecDrv_sem_post
  1034. * @par Description
  1035. * The sem_post wrapper function
  1036. * @param
  1037. * sem [IN] sem
  1038. * @par Returns
  1039. * int, sem_post((sem_t*)sem);
  1040. */
  1041. int VCodecDrv_sem_post(IN VCODEC_OAL_SEM_T * sem);
  1042. /**
  1043. * @par Function
  1044. * VCodecDrv_sem_wait
  1045. * @par Description
  1046. * The sem_wait wrapper function
  1047. * @param
  1048. * sem [IN] sem
  1049. * @par Returns
  1050. * int, sem_wait((sem_t*)sem);
  1051. */
  1052. int VCodecDrv_sem_wait(IN VCODEC_OAL_SEM_T * sem);
  1053. /***** Binding Functions ******/
  1054. /**
  1055. * @par Function
  1056. * VCodecDrvBindingCore
  1057. * @par Description
  1058. * The function used to set given thread to binding specific CPU Core
  1059. * @param
  1060. * ThreadHandle [IN] given thread
  1061. * @param
  1062. * u4Mask [IN] specific CPU Core
  1063. * @par Returns
  1064. * VCODEC_OAL_ERROR_T, return VCODEC_OAL_ERROR_NONE if success, return VCODEC_OAL_ERROR_ERROR if failed
  1065. */
  1066. VCODEC_OAL_ERROR_T VCodecDrvBindingCore(IN VCODEC_PTHREAD_T ThreadHandle, IN unsigned int u4Mask);
  1067. /**
  1068. * @par Function
  1069. * VCodecDrvDeBindingCore
  1070. * @par Description
  1071. * The function used to set given thread to debinding specific CPU Core
  1072. * @param
  1073. * ThreadHandle [IN] given thread
  1074. * @par Returns
  1075. * VCODEC_OAL_ERROR_T, return VCODEC_OAL_ERROR_NONE if success, return VCODEC_OAL_ERROR_ERROR if failed
  1076. */
  1077. VCODEC_OAL_ERROR_T VCodecDrvDeBindingCore(IN VCODEC_PTHREAD_T ThreadHandle);
  1078. /**
  1079. * @par Function
  1080. * VCodecDrvGetAffinity
  1081. * @par Description
  1082. * The function used to set given thread to get specific CPU Core affinity
  1083. * @param
  1084. * ThreadHandle [IN] given thread
  1085. * @param
  1086. * pu4Mask [OUT] CPU mask
  1087. * @param
  1088. * pu4SetMask [OUT] Set CPU mask
  1089. * @par Returns
  1090. * VCODEC_OAL_ERROR_T, return VCODEC_OAL_ERROR_NONE if success, return VCODEC_OAL_ERROR_ERROR if failed
  1091. */
  1092. VCODEC_OAL_ERROR_T VCodecDrvGetAffinity(
  1093. IN VCODEC_PTHREAD_T ThreadHandle,
  1094. OUT unsigned int *pu4Mask,
  1095. OUT unsigned int *pu4SetMask
  1096. );
  1097. /**
  1098. * @par Function
  1099. * VCodecDrvGetAffinity
  1100. * @par Description
  1101. * The function used to get specific CPU Core loading
  1102. * @param
  1103. * s4CPUid [IN] COU id
  1104. * @param
  1105. * ps4Loading [OUT] CPU loading
  1106. * @par Returns
  1107. * VCODEC_OAL_ERROR_T, return VCODEC_OAL_ERROR_NONE if success, return VCODEC_OAL_ERROR_ERROR if failed
  1108. */
  1109. VCODEC_OAL_ERROR_T VCodecDrvCoreLoading(IN int s4CPUid, OUT int *ps4Loading);
  1110. /**
  1111. * @par Function
  1112. * VCodecDrvGetAffinity
  1113. * @par Description
  1114. * The function used to get total CPU Core number
  1115. * @param
  1116. * ps4CPUNums [OUT] CPU number
  1117. * @par Returns
  1118. * VCODEC_OAL_ERROR_T, return VCODEC_OAL_ERROR_NONE if success, return VCODEC_OAL_ERROR_ERROR if failed
  1119. */
  1120. VCODEC_OAL_ERROR_T VCodecDrvCoreNumber(OUT int *ps4CPUNums);
  1121. /**
  1122. * @par Function
  1123. * VCodecDrvSleep
  1124. * @par Description
  1125. * The function used to sleep a while
  1126. * @param
  1127. * u4Tick [IN] unit: us
  1128. * @par Returns
  1129. * void
  1130. */
  1131. void VCodecDrvSleep(IN unsigned int u4Tick);
  1132. /**
  1133. * @par Function
  1134. * OAL_SMP_BindingCore
  1135. * @par Description
  1136. * The function used to set given thread to binding specific CPU Core (only for test)
  1137. * @param
  1138. * aCurrentTid [IN] given thread id
  1139. * @param
  1140. * aCPUid [IN] specific CPU Core
  1141. * @par Returns
  1142. * int, return 0 if success, return -1 if failed
  1143. */
  1144. int OAL_SMP_BindingCore(int aCurrentTid, int aCPUid); /* ONLY used for TEST in main.c */
  1145. /***** MCI Functions ******/
  1146. /**
  1147. * @par Function
  1148. * VCodecConfigMCIPort
  1149. * @par Description
  1150. * The function used to config MCI port
  1151. * @param
  1152. * u4PortConfig [IN] port config
  1153. * @param
  1154. * pu4PortResult [OUT] port result
  1155. * @param
  1156. * eCodecType [OUT] VDEC or VENC
  1157. * @par Returns
  1158. * VCODEC_OAL_ERROR_T,
  1159. * return VCODEC_OAL_ERROR_NONE if success,
  1160. * return VCODEC_OAL_ERROR_ERROR or VAL_RESULT_UNKNOWN_ERROR if failed
  1161. */
  1162. VCODEC_OAL_ERROR_T VCodecConfigMCIPort(
  1163. IN unsigned int u4PortConfig,
  1164. OUT unsigned int *pu4PortResult,
  1165. IN VCODEC_CODEC_TYPE_T eCodecType
  1166. );
  1167. /***** Software vdec lib Functions ******/
  1168. /**
  1169. * @par Function
  1170. * VCodecDrvMemAllocAligned_NC
  1171. * @par Description
  1172. * The function used to alloc external working memry for non-cacheable
  1173. * @param
  1174. * hDrv [IN] codec/driver handle
  1175. * @param
  1176. * u4Size [IN] allocated memory size
  1177. * @param
  1178. * u4AlignSize [IN] allocated memory byte alignment
  1179. * @param
  1180. * fgCacheable [IN] memory type
  1181. * @param
  1182. * prBuf [OUT] allocated memory buffer info
  1183. * @par Returns
  1184. * void
  1185. */
  1186. void VCodecDrvMemAllocAligned_NC(
  1187. IN HANDLE hDrv,
  1188. IN unsigned int u4Size,
  1189. unsigned int u4AlignSize,
  1190. IN VCODEC_MEMORY_TYPE_T fgCacheable,
  1191. OUT VCODEC_BUFFER_T *prBuf
  1192. );
  1193. /**
  1194. * @par Function
  1195. * VCodecDrvMemFree_NC
  1196. * @par Description
  1197. * The function used to free external working memry
  1198. * @param
  1199. * hDrv [IN] codec/driver handle
  1200. * @param
  1201. * prBuf [IN] allocated memory buffer info
  1202. * @par Returns
  1203. * void
  1204. */
  1205. void VCodecDrvMemFree_NC(IN HANDLE hDrv, IN VCODEC_BUFFER_T *prBuf);
  1206. /**
  1207. * @par Function
  1208. * VDecCodecQueryInfo
  1209. * @par Description
  1210. * The function used to query info
  1211. * @param
  1212. * hDrv [IN] codec/driver handle
  1213. * @param
  1214. * ID [IN] query info type
  1215. * @param
  1216. * pvQueryData [OUT] query data
  1217. * @par Returns
  1218. * void
  1219. */
  1220. VCODEC_DEC_ERROR_T VDecCodecQueryInfo(IN HANDLE hDrv, IN VCODEC_DEC_QUERY_INFO_TYPE_T ID, OUT void *pvQueryData);
  1221. #if 0
  1222. /* MACRO */
  1223. #include "mach/sync_write.h"
  1224. #define SP5_REGSYNC_WriteB(v, a) \
  1225. mt65xx_reg_sync_writeb(v, a)
  1226. #define SP5_REGSYNC_WriteW(v, a) \
  1227. mt65xx_reg_sync_writew(v, a)
  1228. #define SP5_REGSYNC_WriteL(v, a) \
  1229. mt65xx_reg_sync_writel(v, a)
  1230. VAL_VOID_T SP5_RegSyncWriteB(VAL_UINT32_T v, VAL_UINT32_T a);
  1231. VAL_VOID_T SP5_RegSyncWriteW(VAL_UINT32_T v, VAL_UINT32_T a);
  1232. VAL_VOID_T SP5_RegSyncWriteL(VAL_UINT32_T v, VAL_UINT32_T a);
  1233. #endif
  1234. #endif