mpp_sys_cfg.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. /* SPDX-License-Identifier: Apache-2.0 OR MIT */
  2. /*
  3. * Copyright (c) 2024 Rockchip Electronics Co., Ltd.
  4. */
  5. #ifndef __MPP_SYS_CFG_H__
  6. #define __MPP_SYS_CFG_H__
  7. #include "mpp_frame.h"
  8. #include "mpp_list.h"
  9. typedef enum MppSysDecBufCkhCfgChange_e {
  10. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_ENABLE = (1 << 0),
  11. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_TYPE = (1 << 1),
  12. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_FMT_CODEC = (1 << 2),
  13. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_FMT_FBC = (1 << 3),
  14. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_FMT_HDR = (1 << 4),
  15. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_WIDTH = (1 << 5),
  16. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_HEIGHT = (1 << 6),
  17. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_CROP_TOP = (1 << 7),
  18. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_CROP_BOTTOM = (1 << 8),
  19. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_CROP_LEFT = (1 << 9),
  20. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_CROP_RIGHT = (1 << 10),
  21. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_FLAG_METADATA = (1 << 11),
  22. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_FLAG_THUMBNAIL = (1 << 12),
  23. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_H_STRIDE_BYTE = (1 << 13),
  24. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_V_STRIDE = (1 << 14),
  25. MPP_SYS_DEC_BUF_CHK_CFG_CHANGE_ALL = (0xFFFFFFFF),
  26. } MppSysDecBufCkhChange;
  27. typedef struct MppSysBaseCfg_t {
  28. RK_U64 change;
  29. RK_U32 enable;
  30. /* input args start */
  31. MppCodingType type;
  32. MppFrameFormat fmt_codec;
  33. RK_U32 fmt_fbc;
  34. RK_U32 fmt_hdr;
  35. /* video codec width and height */
  36. RK_U32 width;
  37. RK_U32 height;
  38. /* display crop info */
  39. RK_U32 crop_top;
  40. RK_U32 crop_bottom;
  41. RK_U32 crop_left;
  42. RK_U32 crop_right;
  43. /* bit mask for metadata and thumbnail config */
  44. RK_U32 has_metadata;
  45. RK_U32 has_thumbnail;
  46. /* extra protocol config */
  47. /* H.265 ctu size, VP9/Av1 super block size */
  48. RK_U32 unit_size;
  49. /* output args start */
  50. /* system support capability */
  51. RK_U32 cap_fbc;
  52. RK_U32 cap_tile;
  53. /* 2 horizontal stride for 2 planes like Y/UV */
  54. RK_U32 h_stride_by_pixel;
  55. RK_U32 h_stride_by_byte;
  56. RK_U32 v_stride;
  57. RK_U32 buf_total_size;
  58. /* fbc display offset config for some fbc version */
  59. RK_U32 offset_y;
  60. RK_U32 size_total;
  61. RK_U32 size_fbc_hdr;
  62. RK_U32 size_fbc_bdy;
  63. /* extra buffer size */
  64. RK_U32 size_metadata;
  65. RK_U32 size_thumbnail;
  66. } MppSysDecBufChkCfg;
  67. typedef struct MppSysCfgSet_t {
  68. RK_U32 change;
  69. MppSysDecBufChkCfg dec_buf_chk;
  70. } MppSysCfgSet;
  71. #ifdef __cplusplus
  72. extern "C" {
  73. #endif
  74. MPP_RET mpp_sys_dec_buf_chk_proc(MppSysDecBufChkCfg *cfg);
  75. #ifdef __cplusplus
  76. }
  77. #endif
  78. #endif /* __MPP_SYS_CFG_H__ */