venc_drv_if_public.h 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889
  1. #ifndef _VENC_DRV_IF_PUBLIC_H_
  2. #define _VENC_DRV_IF_PUBLIC_H_
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. #include "val_types_public.h"
  7. /**
  8. * @par Enumeration
  9. * VENC_DRV_QUERY_TYPE_T
  10. * @par Description
  11. * This is the item used for query driver
  12. */
  13. typedef enum __VENC_DRV_QUERY_TYPE_T {
  14. VENC_DRV_QUERY_TYPE_NONE, /* /< Default value (not used) */
  15. VENC_DRV_QUERY_TYPE_VIDEO_FORMAT, /* /< Query the driver capability */
  16. VENC_DRV_QUERY_TYPE_VIDEO_PROPERTY, /* /< Query the video property */
  17. VENC_DRV_QUERY_TYPE_VIDEO_PROPERTY_LIST, /* /< Query the video property list */
  18. VENC_DRV_QUERY_TYPE_PROPERTY, /* /< Get the driver property */
  19. VENC_DRV_QUERY_TYPE_MCI_SUPPORTED, /* /< Query if the codec support MCI */
  20. VENC_DRV_QUERY_TYPE_CHIP_NAME, /* /< Query chip name */
  21. VENC_DRV_QUERY_TYPE_INPUT_BUF_LIMIT, /* /< Query input buffer stride and sliceheight */
  22. /* /< Query if recorder scenario adjust to normal priority, for 6571. */
  23. VENC_DRV_QUERY_TYPE_NORMAL_PRIO,
  24. VENC_DRV_QUERY_TYPE_VIDEO_CAMCORDER_CAP, /* /< Query spec. for MediaProfile */
  25. VENC_DRV_QUERY_TYPE_CHIP_VARIANT, /* /< Query chip variant */
  26. VENC_DRV_QUERY_TYPE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_QUERY_TYPE_T value */
  27. }
  28. VENC_DRV_QUERY_TYPE_T;
  29. /**
  30. * @par Enumeration
  31. * VENC_DRV_YUV_FORMAT_T
  32. * @par Description
  33. * This is the item used for input YUV buffer format
  34. */
  35. typedef enum __VENC_DRV_YUV_FORMAT_T {
  36. VENC_DRV_YUV_FORMAT_NONE, /* /< Default value (not used) */
  37. VENC_DRV_YUV_FORMAT_GRAY, /* /< GRAY YUV format */
  38. VENC_DRV_YUV_FORMAT_422, /* /< 422 YUV format */
  39. VENC_DRV_YUV_FORMAT_420, /* /< 420 YUV format */
  40. VENC_DRV_YUV_FORMAT_411, /* /< 411 YUV format */
  41. VENC_DRV_YUV_FORMAT_YV12, /* /< Android YV12 (16/16/16) YUV format */
  42. VENC_DRV_YUV_FORMAT_NV12, /* /< NV12 YUV format */
  43. VENC_DRV_YUV_FORMAT_NV21, /* /< NV21 YUV format */
  44. VENC_DRV_YUV_FORMAT_BLK16X32, /* /< Block 16x32 YUV format */
  45. VENC_DRV_YUV_FORMAT_BLK64X32, /* /< Block 64x32 YUV format */
  46. VENC_DRV_YUV_FORMAT_YV12_1688, /* /< YV12 YUV format */
  47. VENC_DRV_YUV_FORMAT_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_YUV_FORMAT_T value */
  48. } VENC_DRV_YUV_FORMAT_T;
  49. /**
  50. * @par Enumeration
  51. * VENC_DRV_VIDEO_FORMAT_T
  52. * @par Description
  53. * This is the item used for encode video format
  54. */
  55. typedef enum __VENC_DRV_VIDEO_FORMAT_T {
  56. VENC_DRV_VIDEO_FORMAT_NONE, /* /< Default value (not used) */
  57. VENC_DRV_VIDEO_FORMAT_MPEG4, /* /< MPEG4 video format */
  58. VENC_DRV_VIDEO_FORMAT_MPEG4_1080P, /* /< MPEG4 video format for 1080p */
  59. VENC_DRV_VIDEO_FORMAT_MPEG4_SHORT, /* /< MPEG4_SHORT (H.263 baseline profile) video format */
  60. VENC_DRV_VIDEO_FORMAT_H263, /* /< H.263 video format */
  61. VENC_DRV_VIDEO_FORMAT_H264, /* /< H.264 video format */
  62. VENC_DRV_VIDEO_FORMAT_H264_VGA, /* /< H.264 video format for VGA */
  63. VENC_DRV_VIDEO_FORMAT_WMV9, /* /< WMV9 video format */
  64. VENC_DRV_VIDEO_FORMAT_VC1, /* /< VC1 video format */
  65. VENC_DRV_VIDEO_FORMAT_VP8, /* /< VP8 video format */
  66. VENC_DRV_VIDEO_FORMAT_JPEG, /* /< JPEG picture format */
  67. VENC_DRV_VIDEO_FORMAT_HEVC, /* /< HEVC video format */
  68. VENC_DRV_VIDEO_FORMAT_H264SEC, /* /<: Secure H.264 */
  69. VENC_DRV_VIDEO_FORMAT_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_VIDEO_FORMAT_T value */
  70. } VENC_DRV_VIDEO_FORMAT_T;
  71. /**
  72. * @par Enumeration
  73. * VENC_DRV_FRAME_RATE_T
  74. * @par Description
  75. * This is the item used for encode frame rate
  76. */
  77. typedef enum __VENC_DRV_FRAME_RATE_T {
  78. VENC_DRV_FRAME_RATE_NONE = 0, /* /< Default value (not used) */
  79. VENC_DRV_FRAME_RATE_7_5 = 75, /* /< 7.5 */
  80. VENC_DRV_FRAME_RATE_10 = 10, /* /< 10 */
  81. VENC_DRV_FRAME_RATE_15 = 15, /* /< 15 */
  82. VENC_DRV_FRAME_RATE_20 = 20, /* /< 20 */
  83. VENC_DRV_FRAME_RATE_24 = 24, /* /< 24 */
  84. VENC_DRV_FRAME_RATE_25 = 25, /* /< 25 */
  85. VENC_DRV_FRAME_RATE_29_97 = 2997, /* /< 29.97 */
  86. VENC_DRV_FRAME_RATE_30 = 30, /* /< 30 */
  87. VENC_DRV_FRAME_RATE_60 = 60, /* /< 60 */
  88. VENC_DRV_FRAME_RATE_120 = 120, /* /< 120 */
  89. VENC_DRV_FRAME_RATE_180 = 180, /* /< 180 */
  90. VENC_DRV_FRAME_RATE_240 = 240, /* /< 240 */
  91. VENC_DRV_FRAME_RATE_480 = 480, /* /< 480 */
  92. VENC_DRV_FRAME_RATE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_FRAME_RATE_T value */
  93. } VENC_DRV_FRAME_RATE_T;
  94. /**
  95. * @par Enumeration
  96. * VENC_DRV_START_OPT_T
  97. * @par Description
  98. * This is the item used for encode frame type
  99. */
  100. typedef enum __VENC_DRV_START_OPT_T {
  101. VENC_DRV_START_OPT_NONE, /* /< Default value (not used) */
  102. VENC_DRV_START_OPT_ENCODE_SEQUENCE_HEADER, /* /< Encode a Sequence header */
  103. VENC_DRV_START_OPT_ENCODE_SEQUENCE_HEADER_H264_SPS, /* /< Encode a Sequence header H264 SPS */
  104. VENC_DRV_START_OPT_ENCODE_SEQUENCE_HEADER_H264_PPS, /* /< Encode a Sequence header H264 PPS */
  105. VENC_DRV_START_OPT_ENCODE_FRAME, /* /< Encode a frame */
  106. VENC_DRV_START_OPT_ENCODE_KEY_FRAME, /* /< Encode a key frame */
  107. VENC_DRV_START_OPT_ENCODE_FINAL, /* /< Final encode (Only use to encode final frame) */
  108. VENC_DRV_START_OPT_ENCODE_DUMMY_NAL, /* /< Encode a dummy NAL for WFD */
  109. VENC_DRV_START_OPT_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_START_OPT_T value */
  110. } VENC_DRV_START_OPT_T;
  111. /**
  112. * @par Enumeration
  113. * VENC_DRV_MESSAGE_T
  114. * @par Description
  115. * This is the item used for encode frame status
  116. */
  117. typedef enum __VENC_DRV_MESSAGE_T {
  118. VENC_DRV_MESSAGE_NONE, /* /< Default value (not used) */
  119. VENC_DRV_MESSAGE_OK, /* /< Encode ok */
  120. VENC_DRV_MESSAGE_ERR, /* /< Encode error */
  121. VENC_DRV_MESSAGE_TIMEOUT, /* /< Encode timeout */
  122. VENC_DRV_MESSAGE_PARTIAL, /* /< Encode partial frame (ok means EOF) */
  123. VENC_DRV_MESSAGE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_MESSAGE_T value */
  124. } VENC_DRV_MESSAGE_T;
  125. /**
  126. * @par Enumeration
  127. * VENC_DRV_H264_VIDEO_PROFILE_T
  128. * @par Description
  129. * This is the item used for h.264 encoder profile capability
  130. */
  131. typedef enum __VENC_DRV_H264_VIDEO_PROFILE_T {
  132. VENC_DRV_H264_VIDEO_PROFILE_UNKNOWN = 0, /* /< Default value (not used) */
  133. VENC_DRV_H264_VIDEO_PROFILE_BASELINE = (1 << 0), /* /< Baseline */
  134. VENC_DRV_H264_VIDEO_PROFILE_CONSTRAINED_BASELINE = (1 << 1), /* /< Constrained Baseline */
  135. VENC_DRV_H264_VIDEO_PROFILE_MAIN = (1 << 2), /* /< Main */
  136. VENC_DRV_H264_VIDEO_PROFILE_EXTENDED = (1 << 3), /* /< Extended */
  137. VENC_DRV_H264_VIDEO_PROFILE_HIGH = (1 << 4), /* /< High */
  138. VENC_DRV_H264_VIDEO_PROFILE_HIGH_10 = (1 << 5), /* /< High 10 */
  139. VENC_DRV_H264_VIDEO_PROFILE_HIGH422 = (1 << 6), /* /< High 422 */
  140. VENC_DRV_H264_VIDEO_PROFILE_HIGH444 = (1 << 7), /* /< High 444 */
  141. VENC_DRV_H264_VIDEO_PROFILE_HIGH_10_INTRA = (1 << 8), /* /< High 10 Intra (Amendment 2) */
  142. VENC_DRV_H264_VIDEO_PROFILE_HIGH422_INTRA = (1 << 9), /* /< High 422 Intra (Amendment 2) */
  143. VENC_DRV_H264_VIDEO_PROFILE_HIGH444_INTRA = (1 << 10), /* /< High 444 Intra (Amendment 2) */
  144. VENC_DRV_H264_VIDEO_PROFILE_CAVLC444_INTRA = (1 << 11), /* /< CAVLC 444 Intra (Amendment 2) */
  145. VENC_DRV_H264_VIDEO_PROFILE_HIGH444_PREDICTIVE = (1 << 12), /* /< High 444 Predictive (Amendment 2) */
  146. VENC_DRV_H264_VIDEO_PROFILE_SCALABLE_BASELINE = (1 << 13), /* /< Scalable Baseline (Amendment 3) */
  147. VENC_DRV_H264_VIDEO_PROFILE_SCALABLE_HIGH = (1 << 14), /* /< Scalable High (Amendment 3) */
  148. VENC_DRV_H264_VIDEO_PROFILE_SCALABLE_HIGH_INTRA = (1 << 15), /* /< Scalable High Intra (Amendment 3) */
  149. VENC_DRV_H264_VIDEO_PROFILE_MULTIVIEW_HIGH = (1 << 16), /* /< Multiview High (Corrigendum 1 (2009)) */
  150. VENC_DRV_H264_VIDEO_PROFILE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_H264_VIDEO_PROFILE_T value */
  151. } VENC_DRV_H264_VIDEO_PROFILE_T;
  152. /**
  153. * @par Enumeration
  154. * VENC_DRV_HEVC_VIDEO_PROFILE_T
  155. * @par Description
  156. * This is the item used for hevc encoder profile capability
  157. */
  158. typedef enum __VENC_DRV_HEVC_VIDEO_PROFILE_T {
  159. VENC_DRV_HEVC_VIDEO_PROFILE_UNKNOWN = 0, /* /< Default value (not used) */
  160. VENC_DRV_HEVC_VIDEO_PROFILE_BASELINE = (1 << 0), /* /< Baseline */
  161. VENC_DRV_HEVC_VIDEO_PROFILE_CONSTRAINED_BASELINE = (1 << 1), /* /< Constrained Baseline */
  162. VENC_DRV_HEVC_VIDEO_PROFILE_MAIN = (1 << 2), /* /< Main */
  163. VENC_DRV_HEVC_VIDEO_PROFILE_EXTENDED = (1 << 3), /* /< Extended */
  164. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH = (1 << 4), /* /< High */
  165. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH_10 = (1 << 5), /* /< High 10 */
  166. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH422 = (1 << 6), /* /< High 422 */
  167. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH444 = (1 << 7), /* /< High 444 */
  168. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH_10_INTRA = (1 << 8), /* /< High 10 Intra (Amendment 2) */
  169. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH422_INTRA = (1 << 9), /* /< High 422 Intra (Amendment 2) */
  170. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH444_INTRA = (1 << 10), /* /< High 444 Intra (Amendment 2) */
  171. VENC_DRV_HEVC_VIDEO_PROFILE_CAVLC444_INTRA = (1 << 11), /* /< CAVLC 444 Intra (Amendment 2) */
  172. VENC_DRV_HEVC_VIDEO_PROFILE_HIGH444_PREDICTIVE = (1 << 12), /* /< High 444 Predictive (Amendment 2) */
  173. VENC_DRV_HEVC_VIDEO_PROFILE_SCALABLE_BASELINE = (1 << 13), /* /< Scalable Baseline (Amendment 3) */
  174. VENC_DRV_HEVC_VIDEO_PROFILE_SCALABLE_HIGH = (1 << 14), /* /< Scalable High (Amendment 3) */
  175. VENC_DRV_HEVC_VIDEO_PROFILE_SCALABLE_HIGH_INTRA = (1 << 15), /* /< Scalable High Intra (Amendment 3) */
  176. VENC_DRV_HEVC_VIDEO_PROFILE_MULTIVIEW_HIGH = (1 << 16), /* /< Multiview High (Corrigendum 1 (2009)) */
  177. VENC_DRV_HEVC_VIDEO_PROFILE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_HEVC_VIDEO_PROFILE_T value */
  178. } VENC_DRV_HEVC_VIDEO_PROFILE_T;
  179. /**
  180. * @par Enumeration
  181. * VENC_DRV_MPEG_VIDEO_PROFILE_T
  182. * @par Description
  183. * This is the item used for h.263, mpeg2, mpeg4 encoder profile capability
  184. */
  185. typedef enum __VENC_DRV_MPEG_VIDEO_PROFILE_T {
  186. VENC_DRV_MPEG_VIDEO_PROFILE_UNKNOWN = 0, /* /< Default value (not used) */
  187. VENC_DRV_MPEG_VIDEO_PROFILE_H263_0 = (1 << 0), /* /< H.263 0 */
  188. VENC_DRV_MPEG_VIDEO_PROFILE_H263_1 = (1 << 1), /* /< H.263 1 */
  189. VENC_DRV_MPEG_VIDEO_PROFILE_H263_2 = (1 << 2), /* /< H.263 2 */
  190. VENC_DRV_MPEG_VIDEO_PROFILE_H263_3 = (1 << 3), /* /< H.263 3 */
  191. VENC_DRV_MPEG_VIDEO_PROFILE_H263_4 = (1 << 4), /* /< H.263 4 */
  192. VENC_DRV_MPEG_VIDEO_PROFILE_H263_5 = (1 << 5), /* /< H.263 5 */
  193. VENC_DRV_MPEG_VIDEO_PROFILE_H263_6 = (1 << 6), /* /< H.263 6 */
  194. VENC_DRV_MPEG_VIDEO_PROFILE_H263_7 = (1 << 7), /* /< H.263 7 */
  195. VENC_DRV_MPEG_VIDEO_PROFILE_H263_8 = (1 << 8), /* /< H.263 8 */
  196. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_SIMPLE = (1 << 9), /* /< MPEG2 Simple */
  197. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_MAIN = (1 << 10), /* /< MPEG2 Main */
  198. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_SNR = (1 << 11), /* /< MPEG2 SNR */
  199. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_SPATIAL = (1 << 12), /* /< MPEG2 Spatial */
  200. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG2_HIGH = (1 << 13), /* /< MPEG2 High */
  201. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG4_SIMPLE = (1 << 14), /* /< MPEG4 Simple */
  202. VENC_DRV_MPEG_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE = (1 << 15), /* /< MPEG4 Advanced Simple */
  203. VENC_DRV_MPEG_VIDEO_PROFILE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_MPEG_VIDEO_PROFILE_T value */
  204. } VENC_DRV_MPEG_VIDEO_PROFILE_T;
  205. /**
  206. * @par Enumeration
  207. * VENC_DRV_MS_VIDEO_PROFILE_T
  208. * @par Description
  209. * This is the item used for MS encoder profile capability
  210. */
  211. typedef enum __VENC_DRV_MS_VIDEO_PROFILE_T {
  212. VENC_DRV_MS_VIDEO_PROFILE_UNKNOWN = 0, /* /< Default value (not used) */
  213. VENC_DRV_MS_VIDEO_PROFILE_VC1_SIMPLE = (1 << 0), /* /< VC1 Simple */
  214. VENC_DRV_MS_VIDEO_PROFILE_VC1_MAIN = (1 << 1), /* /< VC1 Main */
  215. VENC_DRV_MS_VIDEO_PROFILE_VC1_ADVANCED = (1 << 2), /* /< VC1 Advanced */
  216. VENC_DRV_MS_VIDEO_PROFILE_WMV9_SIMPLE = (1 << 3), /* /< WMV9 Simple */
  217. VENC_DRV_MS_VIDEO_PROFILE_WMV9_MAIN = (1 << 4), /* /< WMV9 Main */
  218. VENC_DRV_MS_VIDEO_PROFILE_WMV9_COMPLEX = (1 << 5), /* /< WMV9 Complex */
  219. VENC_DRV_MS_VIDEO_PROFILE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_MS_VIDEO_PROFILE_T value */
  220. } VENC_DRV_MS_VIDEO_PROFILE_T;
  221. /**
  222. * @par Enumeration
  223. * VENC_DRV_VIDEO_LEVEL_T
  224. * @par Description
  225. * This is the item used for encoder level capability
  226. */
  227. typedef enum __VENC_DRV_VIDEO_LEVEL_T {
  228. VENC_DRV_VIDEO_LEVEL_UNKNOWN = 0, /* /< Default value (not used) */
  229. VENC_DRV_VIDEO_LEVEL_0, /* /< VC1 */
  230. VENC_DRV_VIDEO_LEVEL_1, /* /< H264, HEVC, VC1, MPEG4 */
  231. VENC_DRV_VIDEO_LEVEL_1b, /* /< H264, HEVC */
  232. VENC_DRV_VIDEO_LEVEL_1_1, /* /< H264, HEVC */
  233. VENC_DRV_VIDEO_LEVEL_1_2, /* /< H264, HEVC */
  234. VENC_DRV_VIDEO_LEVEL_1_3, /* /< H264, HEVC */
  235. VENC_DRV_VIDEO_LEVEL_2, /* /< H264, HEVC, VC1, MPEG4 */
  236. VENC_DRV_VIDEO_LEVEL_2_1, /* /< H264, HEVC */
  237. VENC_DRV_VIDEO_LEVEL_2_2, /* /< H264, HEVC */
  238. VENC_DRV_VIDEO_LEVEL_3, /* /< H264, HEVC, VC1, MPEG4 */
  239. VENC_DRV_VIDEO_LEVEL_3_1, /* /< H264, HEVC */
  240. VENC_DRV_VIDEO_LEVEL_3_2, /* /< H264, HEVC */
  241. VENC_DRV_VIDEO_LEVEL_4, /* /< H264, HEVC, VC1 */
  242. VENC_DRV_VIDEO_LEVEL_4_1, /* /< H264, HEVC */
  243. VENC_DRV_VIDEO_LEVEL_4_2, /* /< H264, HEVC */
  244. VENC_DRV_VIDEO_LEVEL_5, /* /< H264, HEVC, HEVC */
  245. VENC_DRV_VIDEO_LEVEL_5_1, /* /< H264, HEVC */
  246. VENC_DRV_VIDEO_LEVEL_LOW, /* /< VC1, MPEG2 */
  247. VENC_DRV_VIDEO_LEVEL_MEDIUM, /* /< VC1, MPEG2 */
  248. VENC_DRV_VIDEO_LEVEL_HIGH1440, /* /< MPEG2 */
  249. VENC_DRV_VIDEO_LEVEL_HIGH, /* /< VC1, MPEG2 */
  250. VENC_DRV_VIDEO_LEVEL_6, /* /< H263 */
  251. VENC_DRV_VIDEO_LEVEL_7, /* /< H263 */
  252. VENC_DRV_VIDEO_LEVEL_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_VIDEO_LEVEL_T value */
  253. } VENC_DRV_VIDEO_LEVEL_T;
  254. /**
  255. * @par Enumeration
  256. * VENC_DRV_RESOLUTION_T
  257. * @par Description
  258. * This is the item used for encoder resolution capability
  259. */
  260. typedef enum __VENC_DRV_RESOLUTION_T {
  261. VENC_DRV_RESOLUTION_UNKNOWN = 0, /* /< Default value (not used) */
  262. VENC_DRV_RESOLUTION_SUPPORT_QCIF, /* /< CIF */
  263. VENC_DRV_RESOLUTION_SUPPORT_QVGA, /* /< QVGA */
  264. VENC_DRV_RESOLUTION_SUPPORT_CIF, /* /< QCIF */
  265. VENC_DRV_RESOLUTION_SUPPORT_HVGA, /* /< HVGA: 480x320 */
  266. VENC_DRV_RESOLUTION_SUPPORT_VGA, /* /< VGA: 640x480 */
  267. VENC_DRV_RESOLUTION_SUPPORT_480I, /* /< 480I */
  268. VENC_DRV_RESOLUTION_SUPPORT_480P, /* /< 480P */
  269. VENC_DRV_RESOLUTION_SUPPORT_576I, /* /< 576I */
  270. VENC_DRV_RESOLUTION_SUPPORT_576P, /* /< 480P */
  271. VENC_DRV_RESOLUTION_SUPPORT_FWVGA, /* /< FWVGA: 864x480 */
  272. VENC_DRV_RESOLUTION_SUPPORT_720I, /* /< 720I */
  273. VENC_DRV_RESOLUTION_SUPPORT_720P, /* /< 720P */
  274. VENC_DRV_RESOLUTION_SUPPORT_1080I, /* /< 1080I */
  275. VENC_DRV_RESOLUTION_SUPPORT_1080P, /* /< 1080P */
  276. VENC_DRV_RESOLUTION_SUPPORT_2160P, /* /< 2160P */
  277. VENC_DRV_RESOLUTION_SUPPORT_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_RESOLUTION_T value */
  278. } VENC_DRV_RESOLUTION_T;
  279. /**
  280. * @par Enumeration
  281. * VENC_DRV_SET_TYPE_T
  282. * @par Description
  283. * This is the input parameter for eVEncDrvSetParam()
  284. */
  285. typedef enum __VENC_DRV_SET_TYPE_T {
  286. VENC_DRV_SET_TYPE_UNKONW = 0, /* /< Default value (not used) */
  287. VENC_DRV_SET_TYPE_RST, /* /< Set reset */
  288. VENC_DRV_SET_TYPE_CB, /* /< Set callback function */
  289. VENC_DRV_SET_TYPE_PARAM_RC, /* /< Set rate control parameter */
  290. VENC_DRV_SET_TYPE_PARAM_ME, /* /< Set motion estimation parameter */
  291. VENC_DRV_SET_TYPE_PARAM_EIS, /* /< Set EIS parameter */
  292. VENC_DRV_SET_TYPE_PARAM_ENC, /* /< Set encoder parameters such as I-frame period, etc. */
  293. VENC_DRV_SET_TYPE_STATISTIC_ON, /* /< Enable statistic function */
  294. VENC_DRV_SET_TYPE_STATISTIC_OFF, /* /< Disable statistic function */
  295. VENC_DRV_SET_TYPE_SET_OMX_TIDS, /* /< Set OMX thread IDs */
  296. VENC_DRV_SET_TYPE_MPEG4_SHORT, /* /< Set MPEG4 short header mode */
  297. VENC_DRV_SET_TYPE_FORCE_INTRA_ON, /* /< Set Force Intra Frame on */
  298. VENC_DRV_SET_TYPE_FORCE_INTRA_OFF, /* /< Set Force Intra Frame off */
  299. VENC_DRV_SET_TYPE_TIME_LAPSE, /* /< Set time lapse */
  300. VENC_DRV_SET_TYPE_ALLOC_WORK_BUF, /* /< Set to alloc working buffer */
  301. VENC_DRV_SET_TYPE_DUMP_WORK_BUF, /* /< Set to dump working buffer */
  302. VENC_DRV_SET_TYPE_FREE_WORK_BUF, /* /< Set to free working buffer */
  303. VENC_DRV_SET_TYPE_ADJUST_BITRATE, /* /< Set to adjust bitrate */
  304. VENC_DRV_SET_TYPE_I_FRAME_INTERVAL, /* /< Set I Frame interval */
  305. VENC_DRV_SET_TYPE_WFD_MODE, /* /< Set Wifi-Display Mode */
  306. VENC_DRV_SET_TYPE_RECORD_SIZE, /* /< Ser record size */
  307. VENC_DRV_SET_TYPE_USE_MCI_BUF, /* /< Set to use MCI buffer */
  308. VENC_DRV_SET_TYPE_ADJUST_FRAMERATE, /* /< Set frame rate */
  309. VENC_DRV_SET_TYPE_INIT_QP, /* /< Set init QP */
  310. VENC_DRV_SET_TYPE_SKIP_FRAME, /* /< Set skip one frame */
  311. VENC_DRV_SET_TYPE_SCENARIO, /* /< Set VENC Scenario */
  312. VENC_DRV_SET_TYPE_PREPEND_HEADER, /* /< Set prepend SPS/PPS before IDR */
  313. /* /< Set to Slow Motion Video Recording for header or frame */
  314. VENC_DRV_SET_TYPE_SLOW_MOTION_ENCODE,
  315. /* /< Set to Slow Motion Video Recording for encoded bs with post processing */
  316. VENC_DRV_SET_TYPE_SLOW_MOTION_POST_PROC,
  317. /* /< Set to Slow Motion Video Recording for Lock HW */
  318. VENC_DRV_SET_TYPE_SLOW_MOTION_LOCK_HW,
  319. /* /< Set to Slow Motion Video Recording for UnLock HW */
  320. VENC_DRV_SET_TYPE_SLOW_MOTION_UNLOCK_HW,
  321. VENC_DRV_SET_TYPE_NONREFP, /* /< Set Enable/Disable Non reference P frame */
  322. VENC_DRV_SET_TYPE_CONFIG_QP, /* /< Set init QP */
  323. VENC_DRV_SET_TYPE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_SET_TYPE_T value */
  324. } VENC_DRV_SET_TYPE_T;
  325. /**
  326. * @par Enumeration
  327. * VENC_DRV_GET_TYPE_T
  328. * @par Description
  329. * This is the input parameter for eVEncDrvGetParam()
  330. */
  331. typedef enum __VENC_DRV_GET_TYPE_T {
  332. VENC_DRV_GET_TYPE_UNKONW = 0, /* /< Default value (not used) */
  333. VENC_DRV_GET_TYPE_PARAM_RC, /* /< Get rate control parameter */
  334. VENC_DRV_GET_TYPE_PARAM_ME, /* /< Get motion estimation parameter */
  335. VENC_DRV_GET_TYPE_PARAM_EIS, /* /< Get EIS parameter */
  336. VENC_DRV_GET_TYPE_PARAM_ENC, /* /< Get encoder parameters such as I-frame period, etc. */
  337. VENC_DRV_GET_TYPE_STATISTIC, /* /< Get statistic. */
  338. VENC_DRV_GET_TYPE_GET_CPU_LOADING_INFO, /* /< query the cpu loading info from kernel driver */
  339. VENC_DRV_GET_TYPE_GET_YUV_FORMAT, /* /< Get YUV format */
  340. VENC_DRV_GET_TYPE_GET_CODEC_TIDS,
  341. /* for DirectLink Meta Mode + */
  342. VENC_DRV_GET_TYPE_ALLOC_META_HANDLE_LIST, /* /< Alloc a handle to store meta handle list */
  343. VENC_DRV_GET_TYPE_GET_BUF_INFO_FROM_META_HANDLE, /* /< Get buffer virtual address from meta buffer handle */
  344. /* /< free a handle allocated from VENC_DRV_GET_TYPE_ALLOC_META_HANDLE_LIST */
  345. VENC_DRV_GET_TYPE_FREE_META_HANDLE_LIST,
  346. /* for DirectLink Meta Mode - */
  347. VENC_DRV_GET_TYPE_MAX = 0xFFFFFFFF /* /< Max VENC_DRV_GET_TYPE_MAX value */
  348. } VENC_DRV_GET_TYPE_T;
  349. /**
  350. * @par Enumeration
  351. * VENC_DRV_MRESULT_T
  352. * @par Description
  353. * This is the return value for eVEncDrvXXX()
  354. */
  355. typedef enum __VENC_DRV_MRESULT_T {
  356. VENC_DRV_MRESULT_OK = 0, /* /< Return Success */
  357. VENC_DRV_MRESULT_FAIL, /* /< Return Fail */
  358. VENC_DRV_MRESULT_MAX = 0x0FFFFFFF /* /< Max VENC_DRV_MRESULT_T value */
  359. } VENC_DRV_MRESULT_T;
  360. /**
  361. * @par Enumeration
  362. * VENC_DRV_SCENARIO_T
  363. * @par Description
  364. * This is the scenario for VENC scenario
  365. */
  366. typedef enum __VENC_DRV_SCENARIO_T {
  367. VENC_DRV_SCENARIO_CAMERA_REC = 1, /* /< Camera recording */
  368. VENC_DRV_SCENARIO_LIVEPHOTO_CAPTURE = (1 << 1), /* /< LivePhoto recording */
  369. VENC_DRV_SCENARIO_LIVEPHOTO_EFFECT = (1 << 2), /* /< LivePhoto effect transcoding */
  370. VENC_DRV_SCENARIO_CAMERA_REC_SLOW_MOTION = (1 << 3), /* /< Camera recording with slow motion */
  371. VENC_DRV_SCENARIO_SCREEN_REC = (1 << 4), /* /< Screen recording */
  372. } VENC_DRV_SCENARIO_T;
  373. /**
  374. * @par Structure
  375. * VENC_DRV_QUERY_VIDEO_FORMAT_T
  376. * @par Description
  377. * This is a input parameter for eVEncDrvQueryCapability()
  378. */
  379. typedef struct __VENC_DRV_QUERY_VIDEO_FORMAT_T {
  380. VENC_DRV_VIDEO_FORMAT_T eVideoFormat; /* /< [OUT] video format capability */
  381. /* /< [OUT] video profile capability
  382. (VENC_DRV_H264_VIDEO_PROFILE_T, VENC_DRV_MPEG_VIDEO_PROFILE_T, VENC_DRV_MS_VIDEO_PROFILE_T) */
  383. VAL_UINT32_T u4Profile;
  384. VENC_DRV_VIDEO_LEVEL_T eLevel; /* /< [OUT] video level capability */
  385. VENC_DRV_RESOLUTION_T eResolution; /* /< [OUT] video resolution capability */
  386. VAL_UINT32_T u4Width; /* /< [OUT] video width capability */
  387. VAL_UINT32_T u4Height; /* /< [OUT] video height capability */
  388. VAL_UINT32_T u4Bitrate; /* /< [OUT] video bitrate capability */
  389. VAL_UINT32_T u4FrameRate; /* /< [OUT] video FrameRate capability, 15, 30,... */
  390. } VENC_DRV_QUERY_VIDEO_FORMAT_T;
  391. /**
  392. * @par Structure
  393. * P_VENC_DRV_QUERY_VIDEO_FORMAT_T
  394. * @par Description
  395. * This is the pointer of VENC_DRV_QUERY_VIDEO_FORMAT_T
  396. */
  397. typedef VENC_DRV_QUERY_VIDEO_FORMAT_T * P_VENC_DRV_QUERY_VIDEO_FORMAT_T;
  398. /**
  399. * @par Structure
  400. * VENC_DRV_QUERY_INPUT_BUF_LIMIT
  401. * @par Description
  402. * This is a input parameter for eVEncDrvQueryCapability()
  403. */
  404. typedef struct __VENC_DRV_QUERY_INPUT_BUF_LIMIT {
  405. VENC_DRV_VIDEO_FORMAT_T eVideoFormat; /* /< [IN] video format */
  406. VAL_UINT32_T u4Width; /* /< [IN] video width */
  407. VAL_UINT32_T u4Height; /* /< [IN] video height */
  408. VAL_UINT32_T u4Stride; /* /< [OUT] video stride */
  409. VAL_UINT32_T u4SliceHeight; /* /< [OUT] video sliceheight */
  410. VENC_DRV_SCENARIO_T eScenario; /* /< [IN] venc scenario */
  411. } VENC_DRV_QUERY_INPUT_BUF_LIMIT;
  412. /**
  413. * @par Structure
  414. * VENC_DRV_PARAM_ENC_T
  415. * @par Description
  416. * This is the encoder settings and used as input or output parameter for eVEncDrvSetParam() or eVEncDrvGetParam()
  417. */
  418. typedef struct __VENC_DRV_PARAM_ENC_T { /*union extend 64bits for TEE*/
  419. VENC_DRV_YUV_FORMAT_T eVEncFormat; /* /< [IN/OUT] YUV format */
  420. VAL_UINT32_T u4Profile; /* /< [IN/OUT] Profile */
  421. VAL_UINT32_T u4Level; /* /< [IN/OUT] Level */
  422. VAL_UINT32_T u4Width; /* /< [IN/OUT] Image Width */
  423. VAL_UINT32_T u4Height; /* /< [IN/OUT] Image Height */
  424. VAL_UINT32_T u4BufWidth; /* /< [IN/OUT] Buffer Width */
  425. VAL_UINT32_T u4BufHeight; /* /< [IN/OUT] Buffer Heigh */
  426. VAL_UINT32_T u4NumPFrm; /* /< [IN/OUT] The number of P frame between two I frame. */
  427. VAL_UINT32_T u4NumBFrm; /* /< [IN/OUT] The number of B frame between two reference frame. */
  428. VENC_DRV_FRAME_RATE_T eFrameRate; /* /< [IN/OUT] Frame rate */
  429. VAL_BOOL_T fgInterlace; /* /< [IN/OUT] Interlace coding. */
  430. union {
  431. VAL_VOID_T *pvExtraEnc;
  432. VAL_UINT64_T pvExtraEnc_ext64;
  433. };
  434. VAL_MEMORY_T rExtraEncMem; /* /< [IN/OUT] Extra Encoder Memory Info */
  435. VAL_BOOL_T fgUseMCI; /* /< [IN/OUT] Use MCI */
  436. VAL_BOOL_T fgMultiSlice; /* /< [IN/OUT] Is multi-slice bitstream ? */
  437. VAL_BOOL_T fgMBAFF;
  438. } VENC_DRV_PARAM_ENC_T;
  439. /**
  440. * @par Structure
  441. * P_VENC_DRV_PARAM_ENC_T
  442. * @par Description
  443. * This is the pointer of VENC_DRV_PARAM_ENC_T
  444. */
  445. typedef VENC_DRV_PARAM_ENC_T * P_VENC_DRV_PARAM_ENC_T;
  446. /**
  447. * @par Structure
  448. * VENC_DRV_PARAM_ENC_EXTRA_T
  449. * @par Description
  450. * This is the encoder settings and used as input or output parameter for eVEncDrvSetParam() or eVEncDrvGetParam()
  451. */
  452. typedef struct __VENC_DRV_PARAM_ENC_EXTRA_T {
  453. VAL_UINT32_T u4IntraFrameRate; /* /< [IN/OUT] Intra frame rate */
  454. VAL_UINT32_T u4BitRate; /* /< [IN/OUT] BitRate kbps */
  455. VAL_UINT32_T u4FrameRateQ16; /* /< [IN/OUT] Frame rate in Q16 format */
  456. VAL_UINT32_T u4UseMBAFF; /* /< [IN/OUT] Use MBAFF */
  457. } VENC_DRV_PARAM_ENC_EXTRA_T;
  458. /**
  459. * @par Structure
  460. * P_VENC_DRV_PARAM_ENC_EXTRA_T
  461. * @par Description
  462. * This is the pointer of VENC_DRV_PARAM_ENC_EXTRA_T
  463. */
  464. typedef VENC_DRV_PARAM_ENC_EXTRA_T * pVENC_DRV_PARAM_ENC_EXTRA_T;
  465. #define VENC_DRV_VDO_PROP_LIST_MAX (64)
  466. /**
  467. * @par Structure
  468. * VENC_DRV_VIDEO_PROPERTY_T
  469. * @par Description
  470. * This is used to get the "target bitrate" according to "resolution and frame rate"
  471. */
  472. typedef struct __VENC_DRV_VIDEO_PROPERTY_T {
  473. VENC_DRV_VIDEO_FORMAT_T eVideoFormat;
  474. VAL_UINT32_T u4Width;
  475. VAL_UINT32_T u4Height;
  476. VAL_UINT32_T u4FrameRate;
  477. VAL_UINT32_T u4BitRate; /* used for query table */
  478. VAL_BOOL_T fgPropIsValid;
  479. } VENC_DRV_VIDEO_PROPERTY_T;
  480. /**
  481. * @par Structure
  482. * P_VENC_DRV_VIDEO_PROPERTY_T
  483. * @par Description
  484. * This is the pointer of VENC_DRV_VIDEO_PROPERTY_T
  485. */
  486. typedef VENC_DRV_VIDEO_PROPERTY_T * P_VENC_DRV_VIDEO_PROPERTY_T;
  487. /**
  488. * @par Structure
  489. * VENC_DRV_TIMESTAMP_T
  490. * @par Description
  491. * This is timestamp information and used as items for VENC_DRV_PARAM_FRM_BUF_T and VENC_DRV_PARAM_BS_BUF_T
  492. */
  493. typedef struct __VENC_DRV_TIMESTAMP_T {
  494. VAL_UINT32_T u4TimeStamp[2]; /* /< [IN] Timestamp information */
  495. } VENC_DRV_TIMESTAMP_T;
  496. /**
  497. * @par Structure
  498. * P_VENC_DRV_TIMESTAMP_T
  499. * @par Description
  500. * This is the pointer of VENC_DRV_TIMESTAMP_T
  501. */
  502. typedef VENC_DRV_TIMESTAMP_T * P_VENC_DRV_TIMESTAMP_T;
  503. /**
  504. * @par Structure
  505. * VENC_DRV_EIS_INPUT_T
  506. * @par Description
  507. * This is EIS information and used as items for VENC_DRV_PARAM_FRM_BUF_T
  508. */
  509. typedef struct __VENC_DRV_EIS_INPUT_T {
  510. VAL_UINT32_T u4X; /* /< [IN] Start coordination X */
  511. VAL_UINT32_T u4Y; /* /< [IN] Start coordination Y */
  512. } VENC_DRV_EIS_INPUT_T;
  513. /**
  514. * @par Structure
  515. * P_VENC_DRV_EIS_INPUT_T
  516. * @par Description
  517. * This is the pointer of VENC_DRV_EIS_INPUT_T
  518. */
  519. typedef VENC_DRV_EIS_INPUT_T * P_VENC_DRV_EIS_INPUT_T;
  520. /**
  521. * @par Structure
  522. * VENC_DRV_PARAM_FRM_BUF_T
  523. * @par Description
  524. * This is frame buffer information and used as input parameter for eVEncDrvEncode()
  525. */
  526. typedef struct __VENC_DRV_PARAM_FRM_BUF_T {
  527. VAL_MEM_ADDR_T rFrmBufAddr; /* /< [IN] Frame buffer address */
  528. VAL_MEM_ADDR_T rCoarseAddr; /* /< [IN] Coarse address */
  529. VENC_DRV_TIMESTAMP_T rTimeStamp; /* /< [IN] Timestamp information */
  530. VENC_DRV_EIS_INPUT_T rEISInput; /* /< [IN] EIS information */
  531. VAL_UINT32_T rSecMemHandle; /* /< [IN/OUT] security memory handle for SVP */
  532. } VENC_DRV_PARAM_FRM_BUF_T;
  533. /**
  534. * @par Structure
  535. * P_VENC_DRV_PARAM_FRM_BUF_T
  536. * @par Description
  537. * This is the pointer of VENC_DRV_PARAM_FRM_BUF_T
  538. */
  539. typedef VENC_DRV_PARAM_FRM_BUF_T * P_VENC_DRV_PARAM_FRM_BUF_T;
  540. /**
  541. * @par Structure
  542. * VENC_DRV_PARAM_BS_BUF_T
  543. * @par Description
  544. * This is bitstream buffer information and used as input parameter for\n
  545. * eVEncDrvEncode()\n
  546. */
  547. typedef struct __VENC_DRV_PARAM_BS_BUF_T {/*union extend 64bits for TEE */
  548. VAL_MEM_ADDR_T rBSAddr; /* /< [IN] Bitstream buffer address */
  549. union {
  550. VAL_ULONG_T u4BSStartVA; /* /< [IN] Bitstream fill start address */
  551. VAL_UINT64_T u4BSStartVA_ext64;
  552. };
  553. union {
  554. VAL_ULONG_T u4BSSize; /* /< [IN] Bitstream size (filled bitstream in bytes) */
  555. VAL_UINT64_T u4BSSize_ext64;
  556. };
  557. VENC_DRV_TIMESTAMP_T rTimeStamp; /* /< [IN] Time stamp information */
  558. VAL_UINT32_T rSecMemHandle; /* /< [IN/OUT] security memory handle for SVP */
  559. } VENC_DRV_PARAM_BS_BUF_T;
  560. /**
  561. * @par Structure
  562. * P_VENC_DRV_PARAM_BS_BUF_T
  563. * @par Description
  564. * This is the pointer of VENC_DRV_PARAM_BS_BUF_T
  565. */
  566. typedef VENC_DRV_PARAM_BS_BUF_T *P_VENC_DRV_PARAM_BS_BUF_T;
  567. /**
  568. * @par Structure
  569. * VENC_DRV_DONE_RESULT_T
  570. * @par Description
  571. * This is callback and return information and used as output parameter for eVEncDrvEncode()
  572. */
  573. typedef struct __VENC_DRV_DONE_RESULT_T { /*union extend 64bits for TEE */
  574. VENC_DRV_MESSAGE_T eMessage; /* /< [OUT] Message, such as success or error code */
  575. union {
  576. P_VENC_DRV_PARAM_BS_BUF_T prBSBuf; /* /< [OUT] Bitstream information */
  577. VAL_UINT64_T prBSBuf_ext64;
  578. };
  579. union {
  580. P_VENC_DRV_PARAM_FRM_BUF_T prFrmBuf; /* /< [OUT] Input frame buffer information.*/
  581. /* if address is null, don't use this buffer, else reuse */
  582. VAL_UINT64_T prFrmBuf_ext64;
  583. };
  584. VAL_BOOL_T fgIsKeyFrm; /* /< [OUT] output is key frame or not */
  585. VAL_UINT32_T u4HWEncodeTime; /* /< [OUT] HW encode Time */
  586. } VENC_DRV_DONE_RESULT_T;
  587. /**
  588. * @par Structure
  589. * P_VENC_DRV_DONE_RESULT_T
  590. * @par Description
  591. * This is the pointer of VENC_DRV_DONE_RESULT_T
  592. */
  593. typedef VENC_DRV_DONE_RESULT_T * P_VENC_DRV_DONE_RESULT_T;
  594. /**
  595. * @par Structure
  596. * VENC_DRV_PROPERTY_T
  597. * @par Description
  598. * This is property information and used as output parameter for eVEncDrvQueryCapability()
  599. */
  600. typedef struct __VENC_DRV_PROPERTY_T {
  601. VAL_UINT32_T u4BufAlign; /* /< [OUT] Buffer alignment requirement */
  602. /* /< [OUT] Buffer unit size is N bytes (e.g., 8, 16, or 64 bytes per unit.) */
  603. VAL_UINT32_T u4BufUnitSize;
  604. VAL_UINT32_T u4ExtraBufSize; /* /< [OUT] Extra buffer size in initial stage */
  605. VAL_BOOL_T fgOutputRingBuf; /* /< [OUT] Output is ring buffer */
  606. VAL_BOOL_T fgCoarseMESupport; /* /< [OUT] Support ME coarse search */
  607. VAL_BOOL_T fgEISSupport; /* /< [OUT] Support EIS */
  608. } VENC_DRV_PROPERTY_T;
  609. /**
  610. * @par Structure
  611. * P_VENC_DRV_PROPERTY_T
  612. * @par Description
  613. * This is the pointer of VENC_DRV_PROPERTY_T
  614. */
  615. typedef VENC_DRV_PROPERTY_T * P_VENC_DRV_PROPERTY_T;
  616. /**
  617. * @par Structure
  618. * SEC_VENC_INIT_CONFIG
  619. * @par Description
  620. * This is the structure for initial Venc TLC
  621. */
  622. typedef struct sec_venc_init_config {
  623. int width;
  624. int height;
  625. void *pVencHandle;
  626. uint32_t uVencHandleLen;
  627. unsigned char *pRCCode;
  628. } SEC_VENC_INIT_CONFIG;
  629. /**
  630. * @par Structure
  631. * SEC_VENC_INIT_CONFIG
  632. * @par Description
  633. * This is the structure for setting Venc TLC
  634. */
  635. typedef struct sec_venc_enc_parameter {
  636. uint32_t bitstreamSecHandle;
  637. uint32_t uBitstreamBufSize;
  638. uint32_t uBitstreamDataLen;
  639. uint32_t frameSecHandle;
  640. uint32_t uFrameBufSize;
  641. uint32_t uFrameDataLen;
  642. } SEC_VENC_ENC_PARAM;
  643. /**
  644. * @par Function
  645. * eVEncDrvQueryCapability
  646. * @par Description
  647. * Query the driver capability
  648. * @param
  649. * a_eType [IN/OUT] The VENC_DRV_QUERY_TYPE_T structure
  650. * @param
  651. * a_pvInParam [IN] The input parameter
  652. * @param
  653. * a_pvOutParam [OUT] The output parameter
  654. * @par Returns
  655. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  656. */
  657. VENC_DRV_MRESULT_T eVEncDrvQueryCapability(
  658. VENC_DRV_QUERY_TYPE_T a_eType,
  659. VAL_VOID_T *a_pvInParam,
  660. VAL_VOID_T *a_pvOutParam
  661. );
  662. /**
  663. * @par Function
  664. * eVEncDrvCreate
  665. * @par Description
  666. * Create the driver handle
  667. * @param
  668. * a_phHandle [OUT] The driver handle
  669. * @param
  670. * a_eVideoFormat [IN] The VENC_DRV_VIDEO_FORMAT_T structure
  671. * @par Returns
  672. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  673. */
  674. VENC_DRV_MRESULT_T eVEncDrvCreate(
  675. VAL_HANDLE_T *a_phHandle,
  676. VENC_DRV_VIDEO_FORMAT_T a_eVideoFormat
  677. );
  678. /**
  679. * @par Function
  680. * eVEncDrvRelease
  681. * @par Description
  682. * Release the driver handle
  683. * @param
  684. * a_hHandle [IN] The driver handle
  685. * @param
  686. * a_eVideoFormat [IN] The VENC_DRV_VIDEO_FORMAT_T structure
  687. * @par Returns
  688. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  689. */
  690. VENC_DRV_MRESULT_T eVEncDrvRelease(
  691. VAL_HANDLE_T a_hHandle,
  692. VENC_DRV_VIDEO_FORMAT_T a_eVideoFormat
  693. );
  694. /**
  695. * @par Function
  696. * eVEncDrvInit
  697. * @par Description
  698. * Init the driver setting, alloc working memory ... etc.
  699. * @param
  700. * a_hHandle [IN] The driver handle
  701. * @par Returns
  702. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  703. */
  704. VENC_DRV_MRESULT_T eVEncDrvInit(
  705. VAL_HANDLE_T a_hHandle
  706. );
  707. /**
  708. * @par Function
  709. * eVEncDrvDeInit
  710. * @par Description
  711. * DeInit the driver setting, free working memory ... etc.
  712. * @param
  713. * a_hHandle [IN] The driver handle
  714. * @par Returns
  715. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  716. */
  717. VENC_DRV_MRESULT_T eVEncDrvDeInit(
  718. VAL_HANDLE_T a_hHandle
  719. );
  720. /**
  721. * @par Function
  722. * eVEncDrvSetParam
  723. * @par Description
  724. * Set parameter to driver
  725. * @param
  726. * a_hHandle [IN] The driver handle
  727. * @param
  728. * a_eType [IN] The VENC_DRV_SET_TYPE_T structure
  729. * @param
  730. * a_pvInParam [IN] The input parameter
  731. * @param
  732. * a_pvOutParam [OUT] The output parameter
  733. * @par Returns
  734. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  735. */
  736. VENC_DRV_MRESULT_T eVEncDrvSetParam(
  737. VAL_HANDLE_T a_hHandle,
  738. VENC_DRV_SET_TYPE_T a_eType,
  739. VAL_VOID_T *a_pvInParam,
  740. VAL_VOID_T *a_pvOutParam
  741. );
  742. /**
  743. * @par Function
  744. * eVEncDrvGetParam
  745. * @par Description
  746. * Get parameter from driver
  747. * @param
  748. * a_hHandle [IN] The driver handle
  749. * @param
  750. * a_eType [IN] The VENC_DRV_SET_TYPE_T structure
  751. * @param
  752. * a_pvInParam [IN] The input parameter
  753. * @param
  754. * a_pvOutParam [OUT] The output parameter
  755. * @par Returns
  756. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  757. */
  758. VENC_DRV_MRESULT_T eVEncDrvGetParam(
  759. VAL_HANDLE_T a_hHandle,
  760. VENC_DRV_GET_TYPE_T a_eType,
  761. VAL_VOID_T *a_pvInParam,
  762. VAL_VOID_T *a_pvOutParam
  763. );
  764. /**
  765. * @par Function
  766. * eVEncDrvEncode
  767. * @par Description
  768. * Encode frame
  769. * @param
  770. * a_hHandle [IN] The driver handle
  771. * @param
  772. * a_eOpt [IN] The VENC_DRV_START_OPT_T structure
  773. * @param
  774. * a_prFrmBuf [IN] The input frame buffer with VENC_DRV_PARAM_FRM_BUF_T structure
  775. * @param
  776. * a_prBSBuf [IN] The input bitstream buffer with VENC_DRV_PARAM_BS_BUF_T structure
  777. * @param
  778. * a_prResult [OUT] The output result with VENC_DRV_DONE_RESULT_T structure
  779. * @par Returns
  780. * VENC_DRV_MRESULT_T [OUT] VENC_DRV_MRESULT_OK for success, VENC_DRV_MRESULT_FAIL for fail
  781. */
  782. VENC_DRV_MRESULT_T eVEncDrvEncode(
  783. VAL_HANDLE_T a_hHandle,
  784. VENC_DRV_START_OPT_T a_eOpt,
  785. VENC_DRV_PARAM_FRM_BUF_T *a_prFrmBuf,
  786. VENC_DRV_PARAM_BS_BUF_T *a_prBSBuf,
  787. VENC_DRV_DONE_RESULT_T * a_prResult
  788. );
  789. #ifdef __cplusplus
  790. }
  791. #endif
  792. #endif /* #ifndef _VENC_DRV_IF_PUBLIC_H_ */