hfi_property.h 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2012-2021, The Linux Foundation. All rights reserved.
  4. */
  5. #ifndef __H_HFI_PROPERTY_H__
  6. #define __H_HFI_PROPERTY_H__
  7. #define HFI_PROP_BEGIN 0x03000000
  8. #define HFI_PROP_IMAGE_VERSION 0x03000001
  9. #define HFI_PROP_INTRA_FRAME_POWER_COLLAPSE 0x03000002
  10. #define HFI_PROP_UBWC_MAX_CHANNELS 0x03000003
  11. #define HFI_PROP_UBWC_MAL_LENGTH 0x03000004
  12. #define HFI_PROP_UBWC_HBB 0x03000005
  13. #define HFI_PROP_UBWC_BANK_SWZL_LEVEL1 0x03000006
  14. #define HFI_PROP_UBWC_BANK_SWZL_LEVEL2 0x03000007
  15. #define HFI_PROP_UBWC_BANK_SWZL_LEVEL3 0x03000008
  16. #define HFI_PROP_UBWC_BANK_SPREADING 0x03000009
  17. enum hfi_debug_config {
  18. HFI_DEBUG_CONFIG_DEFAULT = 0,
  19. HFI_DEBUG_CONFIG_CLRDBGQ = BIT(0),
  20. HFI_DEBUG_CONFIG_WFI = BIT(1),
  21. HFI_DEBUG_CONFIG_ARM9WD = BIT(2),
  22. };
  23. #define HFI_PROP_DEBUG_CONFIG 0x0300000a
  24. enum hfi_debug_log_level {
  25. HFI_DEBUG_LOG_NONE = 0,
  26. HFI_DEBUG_LOG_ERROR = BIT(0),
  27. HFI_DEBUG_LOG_FATAL = BIT(1),
  28. HFI_DEBUG_LOG_PERF = BIT(2),
  29. HFI_DEBUG_LOG_HIGH = BIT(3),
  30. HFI_DEBUG_LOG_MEDIUM = BIT(4),
  31. HFI_DEBUG_LOG_LOW = BIT(5),
  32. };
  33. #define HFI_PROP_DEBUG_LOG_LEVEL 0x0300000b
  34. enum hfi_codec_type {
  35. HFI_CODEC_DECODE_AVC = 1,
  36. HFI_CODEC_ENCODE_AVC = 2,
  37. HFI_CODEC_DECODE_HEVC = 3,
  38. HFI_CODEC_ENCODE_HEVC = 4,
  39. HFI_CODEC_DECODE_VP9 = 5,
  40. HFI_CODEC_DECODE_MPEG2 = 6,
  41. };
  42. #define HFI_PROP_CODEC 0x03000100
  43. enum hfi_color_format {
  44. HFI_COLOR_FMT_OPAQUE = 0,
  45. HFI_COLOR_FMT_NV12 = 1,
  46. HFI_COLOR_FMT_NV12_UBWC = 2,
  47. HFI_COLOR_FMT_P010 = 3,
  48. HFI_COLOR_FMT_TP10_UBWC = 4,
  49. HFI_COLOR_FMT_RGBA8888 = 5,
  50. HFI_COLOR_FMT_RGBA8888_UBWC = 6,
  51. HFI_COLOR_FMT_NV21 = 7,
  52. };
  53. #define HFI_PROP_COLOR_FORMAT 0x03000101
  54. #define HFI_PROP_SECURE 0x03000102
  55. #define HFI_BITMASK_ALIGN_WIDTH 0xffff0000
  56. #define HFI_BITMASK_ALIGN_HEIGHT 0x0000ffff
  57. #define HFI_PROP_ALIGN_RESOLUTION 0x03000103
  58. #define HFI_BITMASK_CROP_WIDTH 0xffff0000
  59. #define HFI_BITMASK_CROP_HEIGHT 0x0000ffff
  60. #define HFI_PROP_CROP_RESOLUTION 0x03000104
  61. #define HFI_BITMASK_FRAME_COORDINATE_TOP 0xffff0000
  62. #define HFI_BITMASK_FRAME_COORDINATE_LEFT 0x0000ffff
  63. #define HFI_PROP_CROP_COORDINATE_TOP_LEFT 0x03000105
  64. #define HFI_PROP_REALTIME 0x03000106
  65. enum hfi_avc_profile_type {
  66. HFI_AVC_PROFILE_BASELINE = 0,
  67. HFI_AVC_PROFILE_CONSTRAINED_BASELINE = 1,
  68. HFI_AVC_PROFILE_MAIN = 2,
  69. HFI_AVC_PROFILE_HIGH = 4,
  70. HFI_AVC_PROFILE_CONSTRAINED_HIGH = 17
  71. };
  72. enum hfi_hevc_profile_type {
  73. HFI_HEVC_HEVC_PROFILE_MAIN = 0,
  74. HFI_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
  75. HFI_HEVC_PROFILE_MAIN_10 = 2,
  76. };
  77. enum hfi_vp9_profile_type {
  78. HFI_VP9_PROFILE_0 = 0,
  79. HFI_VP9_PROFILE_1 = 1,
  80. HFI_VP9_PROFILE_2 = 2,
  81. HFI_VP9_PROFILE_3 = 3,
  82. };
  83. enum hfi_mpeg2_profile_type {
  84. HFI_MPEG2_PROFILE_SIMPLE = 0,
  85. HFI_MPEG2_PROFILE_MAIN = 1,
  86. };
  87. #define HFI_PROP_PROFILE 0x03000107
  88. enum hfi_avc_level_type {
  89. HFI_AVC_LEVEL_1_0 = 0,
  90. HFI_AVC_LEVEL_1B = 1,
  91. HFI_AVC_LEVEL_1_1 = 2,
  92. HFI_AVC_LEVEL_1_2 = 3,
  93. HFI_AVC_LEVEL_1_3 = 4,
  94. HFI_AVC_LEVEL_2_0 = 5,
  95. HFI_AVC_LEVEL_2_1 = 6,
  96. HFI_AVC_LEVEL_2_2 = 7,
  97. HFI_AVC_LEVEL_3_0 = 8,
  98. HFI_AVC_LEVEL_3_1 = 9,
  99. HFI_AVC_LEVEL_3_2 = 10,
  100. HFI_AVC_LEVEL_4_0 = 11,
  101. HFI_AVC_LEVEL_4_1 = 12,
  102. HFI_AVC_LEVEL_4_2 = 13,
  103. HFI_AVC_LEVEL_5_0 = 14,
  104. HFI_AVC_LEVEL_5_1 = 15,
  105. HFI_AVC_LEVEL_5_2 = 16,
  106. HFI_AVC_LEVEL_6_0 = 17,
  107. HFI_AVC_LEVEL_6_1 = 18,
  108. HFI_AVC_LEVEL_6_2 = 19,
  109. };
  110. enum hfi_hevc_level_type {
  111. HFI_HEVC_LEVEL_1 = 0,
  112. HFI_HEVC_LEVEL_2 = 1,
  113. HFI_HEVC_LEVEL_2_1 = 2,
  114. HFI_HEVC_LEVEL_3 = 3,
  115. HFI_HEVC_LEVEL_3_1 = 4,
  116. HFI_HEVC_LEVEL_4 = 5,
  117. HFI_HEVC_LEVEL_4_1 = 6,
  118. HFI_HEVC_LEVEL_5 = 7,
  119. HFI_HEVC_LEVEL_5_1 = 8,
  120. HFI_HEVC_LEVEL_5_2 = 9,
  121. HFI_HEVC_LEVEL_6 = 10,
  122. HFI_HEVC_LEVEL_6_1 = 11,
  123. HFI_HEVC_LEVEL_6_2 = 12,
  124. };
  125. enum hfi_vp9_level_type {
  126. HFI_VP9_LEVEL_1 = 0,
  127. HFI_VP9_LEVEL_11 = 1,
  128. HFI_VP9_LEVEL_2 = 2,
  129. HFI_VP9_LEVEL_21 = 3,
  130. HFI_VP9_LEVEL_3 = 4,
  131. HFI_VP9_LEVEL_31 = 5,
  132. HFI_VP9_LEVEL_4 = 6,
  133. HFI_VP9_LEVEL_41 = 7,
  134. HFI_VP9_LEVEL_5 = 8,
  135. HFI_VP9_LEVEL_51 = 9,
  136. HFI_VP9_LEVEL_6 = 10,
  137. HFI_VP9_LEVEL_61 = 11,
  138. };
  139. enum hfi_mpeg2_level_type {
  140. HFI_MPEG2_LEVEL_LOW = 0,
  141. HFI_MPEG2_LEVEL_MAIN = 1,
  142. HFI_MPEG2_LEVEL_HIGH_1440 = 2,
  143. HFI_MPEG2_LEVEL_HIGH = 3,
  144. };
  145. enum hfi_codec_level_type {
  146. HFI_LEVEL_UNKNOWN = 0xFFFFFFFF,
  147. };
  148. #define HFI_PROP_LEVEL 0x03000108
  149. enum hfi_hevc_tier_type {
  150. HFI_HEVC_TIER_MAIN = 0,
  151. HFI_HEVC_TIER_HIGH = 1,
  152. };
  153. #define HFI_PROP_TIER 0x03000109
  154. #define HFI_PROP_STAGE 0x0300010a
  155. #define HFI_PROP_PIPE 0x0300010b
  156. #define HFI_PROP_FRAME_RATE 0x0300010c
  157. #define HFI_BITMASK_CONCEAL_LUMA 0x000003ff
  158. #define HFI_BITMASK_CONCEAL_CB 0x000ffC00
  159. #define HFI_BITMASK_CONCEAL_CR 0x3ff00000
  160. #define HFI_PROP_CONCEAL_COLOR_8BIT 0x0300010d
  161. #define HFI_BITMASK_CONCEAL_LUMA 0x000003ff
  162. #define HFI_BITMASK_CONCEAL_CB 0x000ffC00
  163. #define HFI_BITMASK_CONCEAL_CR 0x3ff00000
  164. #define HFI_PROP_CONCEAL_COLOR_10BIT 0x0300010e
  165. #define HFI_BITMASK_LUMA_BIT_DEPTH 0xffff0000
  166. #define HFI_BITMASK_CHROMA_BIT_DEPTH 0x0000ffff
  167. #define HFI_PROP_LUMA_CHROMA_BIT_DEPTH 0x0300010f
  168. #define HFI_BITMASK_FRAME_MBS_ONLY_FLAG 0x00000001
  169. #define HFI_BITMASK_MB_ADAPTIVE_FRAME_FIELD_FLAG 0x00000002
  170. #define HFI_PROP_CODED_FRAMES 0x03000120
  171. #define HFI_PROP_CABAC_SESSION 0x03000121
  172. #define HFI_PROP_8X8_TRANSFORM 0x03000122
  173. #define HFI_PROP_BUFFER_HOST_MAX_COUNT 0x03000123
  174. #define HFI_PROP_BUFFER_FW_MIN_OUTPUT_COUNT 0x03000124
  175. #define HFI_PROP_BUFFER_MAXDPB_COUNT 0x03000125
  176. #define HFI_PROP_BUFFER_MAX_NUM_REFERENCE 0x03000126
  177. #define HFI_PROP_BUFFER_VUI_RESTRICTION 0x03000127
  178. #define HFI_PROP_PIC_ORDER_CNT_TYPE 0x03000128
  179. enum hfi_deblock_mode {
  180. HFI_DB_MODE_DISABLE = 0,
  181. HFI_DB_MODE_SKIP_SLICE_BOUNDARY = BIT(0),
  182. HFI_DB_MODE_ALL_BOUNDARY = BIT(1),
  183. };
  184. #define HFI_PROP_DEBLOCKING_MODE 0x03000129
  185. enum hfi_rate_control {
  186. HFI_RC_OFF = 0x00000000,
  187. HFI_RC_VBR_CFR = 0x00000001,
  188. HFI_RC_CBR_CFR = 0x00000002,
  189. HFI_RC_CBR_VFR = 0x00000003,
  190. HFI_RC_CQ = 0x00000004,
  191. HFI_RC_LOSSLESS = 0x00000005,
  192. };
  193. #define HFI_PROP_RATE_CONTROL 0x0300012a
  194. #define HFI_PROP_TIME_DELTA_BASED_RATE_CONTROL 0x0300012b
  195. #define HFI_PROP_CONTENT_ADAPTIVE_CODING 0x0300012c
  196. #define HFI_PROP_CONST_QUALITY_BITRATE_BOOST 0x0300012d
  197. #define HFI_BITMASK_QP_I 0x000000ff
  198. #define HFI_BITMASK_QP_P 0x0000ff00
  199. #define HFI_BITMASK_QP_B 0x00ff0000
  200. #define HFI_BITMASK_QP_ENABLE 0x0f000000
  201. #define HFI_BITMASK_QP_LAYERS 0xf0000000
  202. #define HFI_PROP_QP_PACKED 0x0300012e
  203. #define HFI_PROP_MIN_QP_PACKED 0x0300012f
  204. #define HFI_PROP_MAX_QP_PACKED 0x03000130
  205. #define HFI_PROP_IR_RANDOM_PERIOD 0x03000131
  206. #define HFI_PROP_MULTI_SLICE_MB_COUNT 0x03000132
  207. #define HFI_PROP_MULTI_SLICE_BYTES_COUNT 0x03000133
  208. #define HFI_PROP_LTR_COUNT 0x03000134
  209. #define HFI_PROP_LTR_MARK 0x03000135
  210. #define HFI_PROP_LTR_USE 0x03000136
  211. #define HFI_PROP_LTR_MARK_USE_DETAILS 0x03000137
  212. enum hfi_layer_encoding_type {
  213. HFI_HIER_P_SLIDING_WINDOW = 0x1,
  214. HFI_HIER_P_HYBRID_LTR = 0x2,
  215. HFI_HIER_B = 0x4,
  216. };
  217. #define HFI_PROP_LAYER_ENCODING_TYPE 0x03000138
  218. #define HFI_PROP_LAYER_COUNT 0x03000139
  219. #define HFI_BITMASK_CHROMA_CB_OFFSET 0x0000ffff
  220. #define HFI_BITMASK_CHROMA_CR_OFFSET 0xffff0000
  221. #define HFI_PROP_CHROMA_QP_OFFSET 0x0300013a
  222. #define HFI_PROP_TOTAL_BITRATE 0x0300013b
  223. #define HFI_PROP_BITRATE_LAYER1 0x0300013c
  224. #define HFI_PROP_BITRATE_LAYER2 0x0300013d
  225. #define HFI_PROP_BITRATE_LAYER3 0x0300013e
  226. #define HFI_PROP_BITRATE_LAYER4 0x0300013f
  227. #define HFI_PROP_BITRATE_LAYER5 0x03000140
  228. #define HFI_PROP_BITRATE_LAYER6 0x03000141
  229. #define HFI_PROP_BASELAYER_PRIORITYID 0x03000142
  230. #define HFI_PROP_CONSTANT_QUALITY 0x03000143
  231. #define HFI_PROP_HEIC_GRID_ENABLE 0x03000144
  232. #define HFI_PROP_REQUEST_SYNC_FRAME 0x03000145
  233. #define HFI_PROP_MAX_GOP_FRAMES 0x03000146
  234. #define HFI_PROP_MAX_B_FRAMES 0x03000147
  235. enum hfi_quality_mode {
  236. HFI_MODE_MAX_QUALITY = BIT(0),
  237. HFI_MODE_POWER_SAVE = BIT(1),
  238. };
  239. #define HFI_PROP_QUALITY_MODE 0x03000148
  240. enum hfi_seq_header_mode {
  241. HFI_SEQ_HEADER_SEPERATE_FRAME = BIT(0),
  242. HFI_SEQ_HEADER_JOINED_WITH_1ST_FRAME = BIT(1),
  243. HFI_SEQ_HEADER_PREFIX_WITH_SYNC_FRAME = BIT(2),
  244. HFI_SEQ_HEADER_METADATA = BIT(3),
  245. };
  246. #define HFI_PROP_SEQ_HEADER_MODE 0x03000149
  247. #define HFI_PROP_METADATA_SEQ_HEADER_NAL 0x0300014a
  248. enum hfi_rotation {
  249. HFI_ROTATION_NONE = 0x00000000,
  250. HFI_ROTATION_90 = 0x00000001,
  251. HFI_ROTATION_180 = 0x00000002,
  252. HFI_ROTATION_270 = 0x00000003,
  253. };
  254. #define HFI_PROP_ROTATION 0x0300014b
  255. enum hfi_flip {
  256. HFI_FLIP_NONE = 0,
  257. HFI_FLIP_HORIZONTAL = BIT(0),
  258. HFI_FLIP_VERTICAL = BIT(1),
  259. };
  260. #define HFI_PROP_FLIP 0x0300014c
  261. #define HFI_PROP_SCALAR 0x0300014d
  262. enum hfi_blur_types {
  263. HFI_BLUR_NONE = 0,
  264. HFI_BLUR_EXTERNAL = BIT(0),
  265. HFI_BLUR_ADAPTIVE = BIT(1),
  266. };
  267. #define HFI_PROP_BLUR_TYPES 0x0300014e
  268. #define HFI_BITMASK_BLUR_WIDTH 0xffff0000
  269. #define HFI_BITMASK_BLUR_HEIGHT 0x0000ffff
  270. #define HFI_PROP_BLUR_RESOLUTION 0x0300014f
  271. #define HFI_BITMASK_SPS_ID 0x000000ff
  272. #define HFI_BITMASK_PPS_ID 0x0000ff00
  273. #define HFI_BITMASK_VPS_ID 0x00ff0000
  274. #define HFI_PROP_SEQUENCE_HEADER_IDS 0x03000150
  275. #define HFI_PROP_AUD 0x03000151
  276. #define HFI_PROP_VUI_TIMING_INFO 0x03000152
  277. #define HFI_PROP_DPB_LUMA_CHROMA_MISR 0x03000153
  278. #define HFI_PROP_OPB_LUMA_CHROMA_MISR 0x03000154
  279. #define HFI_BITMASK_QP_I 0x000000ff
  280. #define HFI_BITMASK_QP_P 0x0000ff00
  281. #define HFI_BITMASK_QP_B 0x00ff0000
  282. #define HFI_BITMASK_QP_ENABLE 0x0f000000
  283. #define HFI_BITMASK_QP_LAYERS 0xf0000000
  284. #define HFI_PROP_SIGNAL_COLOR_INFO 0x03000155
  285. enum hfi_interlace_info {
  286. HFI_INTERLACE_INFO_NONE = 0,
  287. HFI_FRAME_PROGRESSIVE = BIT(0),
  288. HFI_FRAME_MBAFF = BIT(1),
  289. HFI_FRAME_INTERLEAVE_TOPFIELD_FIRST = BIT(2),
  290. HFI_FRAME_INTERLEAVE_BOTTOMFIELD_FIRST = BIT(3),
  291. HFI_FRAME_INTERLACE_TOPFIELD_FIRST = BIT(4),
  292. HFI_FRAME_INTERLACE_BOTTOMFIELD_FIRST = BIT(5),
  293. };
  294. #define HFI_PROP_INTERLACE_INFO 0x03000156
  295. #define HFI_PROP_CSC 0x03000157
  296. #define HFI_PROP_CSC_MATRIX 0x03000158
  297. #define HFI_PROP_CSC_BIAS 0x03000159
  298. #define HFI_PROP_CSC_LIMIT 0x0300015a
  299. #define HFI_PROP_DECODE_ORDER_OUTPUT 0x0300015b
  300. #define HFI_PROP_TIMESTAMP 0x0300015c
  301. #define HFI_PROP_FRAMERATE_FROM_BITSTREAM 0x0300015d
  302. #define HFI_PROP_SEI_RECOVERY_POINT 0x0300015e
  303. #define HFI_PROP_CONEALED_MB_COUNT 0x0300015f
  304. #define HFI_BITMASK_SAR_WIDTH 0xffff0000
  305. #define HFI_BITMASK_SAR_HEIGHT 0x0000ffff
  306. #define HFI_PROP_SAR_RESOLUTION 0x03000160
  307. #define HFI_PROP_HISTOGRAM_INFO 0x03000161
  308. enum hfi_picture_type {
  309. HFI_PICTURE_TYPE_IDR = BIT(0),
  310. HFI_PICTURE_TYPE_P = BIT(1),
  311. HFI_PICTURE_TYPE_B = BIT(2),
  312. HFI_PICTURE_TYPE_I = BIT(3),
  313. HFI_PICTURE_TYPE_CRA = BIT(4),
  314. HFI_PICTURE_TYPE_BLA = BIT(5),
  315. };
  316. #define HFI_PROP_PICTURE_TYPE 0x03000162
  317. #define HFI_PROP_SEI_MASTERING_DISPLAY_COLOUR 0x03000163
  318. #define HFI_PROP_SEI_CONTENT_LIGHT_LEVEL 0x03000164
  319. #define HFI_PROP_SEI_HDR10PLUS_USERDATA 0x03000165
  320. #define HFI_PROP_SEI_STREAM_USERDATA 0x03000166
  321. #define HFI_PROP_CVP_STAT_INFO 0x03000167
  322. #define HFI_PROP_DEC_DEFAULT_HEADER 0x03000168
  323. #define HFI_PROP_DEC_START_FROM_RAP_FRAME 0x03000169
  324. #define HFI_PROP_TAG_NOT_PROPAGATED_TO_OUTPUT 0x0300016a
  325. #define HFI_PROP_BUFFER_TAG 0x0300016b
  326. #define HFI_PROP_BUFFER_MARK 0x0300016c
  327. #define HFI_PROP_SUBFRAME_OUTPUT 0x0300016d
  328. #define HFI_PROP_ENC_QP_METADATA 0x0300016e
  329. #define HFI_PROP_DEC_QP_METADATA 0x0300016f
  330. #define HFI_PROP_SEI_FRAME_PACKING_ARRANGEMENT 0x03000170
  331. #define HFI_PROP_SEI_PAN_SCAN_RECT 0x03000171
  332. #define HFI_PROP_THUMBNAIL_MODE 0x03000172
  333. #define HFI_PROP_ROI_INFO 0x03000173
  334. #define HFI_PROP_END 0x03FFFFFF
  335. #define HFI_SESSION_ERROR_BEGIN 0x04000000
  336. #define HFI_ERROR_UNKNOWN_SESSION 0x04000001
  337. #define HFI_ERROR_MAX_SESSIONS 0x04000002
  338. #define HFI_ERROR_UNSUPPORTED 0x04000003
  339. #define HFI_SESSION_ERROR_END 0x04FFFFFF
  340. #define HFI_SYSTEM_ERROR_BEGIN 0x05000000
  341. #define HFI_SYS_ERROR_WD_TIMEOUT 0x05000001
  342. #define HFI_SYS_ERROR_NOC 0x05000002
  343. #define HFI_SYSTEM_ERROR_END 0x05FFFFFF
  344. #define HFI_INFORMATION_BEGIN 0x06000000
  345. #define HFI_INFO_UNSUPPORTED 0x06000001
  346. #define HFI_INFO_BITSTREAM_CORRUPT 0x06000002
  347. #define HFI_INFORMATION_END 0x06FFFFFF
  348. #endif //__H_HFI_PROPERTY_H__