csi_frame_ex.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. /**
  2. * Copyright (C) 2021 Alibaba Group Holding Limited
  3. **/
  4. #ifndef _CSI_FRAME_EX_H
  5. #define _CSI_FRAME_EX_H
  6. #include <csi_common.h>
  7. #define MAX_PLANE_COUNT 3
  8. typedef enum {
  9. CSI_PIXEL_FORMAT_RGB_444 = 0,
  10. CSI_PIXEL_FORMAT_RGB_555,
  11. CSI_PIXEL_FORMAT_RGB_565,
  12. CSI_PIXEL_FORMAT_RGB_888,
  13. CSI_PIXEL_FORMAT_BGR_444,
  14. CSI_PIXEL_FORMAT_BGR_555,
  15. CSI_PIXEL_FORMAT_BGR_565,
  16. CSI_PIXEL_FORMAT_BGR_888,
  17. CSI_PIXEL_FORMAT_ARGB_1555,
  18. CSI_PIXEL_FORMAT_ARGB_4444,
  19. CSI_PIXEL_FORMAT_ARGB_8565,
  20. CSI_PIXEL_FORMAT_ARGB_8888,
  21. CSI_PIXEL_FORMAT_ARGB_2BPP,
  22. CSI_PIXEL_FORMAT_ABGR_1555,
  23. CSI_PIXEL_FORMAT_ABGR_4444,
  24. CSI_PIXEL_FORMAT_ABGR_8565,
  25. CSI_PIXEL_FORMAT_ABGR_8888,
  26. CSI_PIXEL_FORMAT_RGB_BAYER_8BPP,
  27. CSI_PIXEL_FORMAT_RGB_BAYER_10BPP,
  28. CSI_PIXEL_FORMAT_RGB_BAYER_12BPP,
  29. CSI_PIXEL_FORMAT_RGB_BAYER_14BPP,
  30. CSI_PIXEL_FORMAT_RGB_BAYER_16BPP,
  31. CSI_PIXEL_FORMAT_YVU_PLANAR_422,
  32. CSI_PIXEL_FORMAT_YVU_PLANAR_420,
  33. CSI_PIXEL_FORMAT_YVU_PLANAR_444,
  34. CSI_PIXEL_FORMAT_YVU_SEMIPLANAR_422,
  35. CSI_PIXEL_FORMAT_YVU_SEMIPLANAR_420,
  36. CSI_PIXEL_FORMAT_YVU_SEMIPLANAR_444,
  37. CSI_PIXEL_FORMAT_YUV_SEMIPLANAR_422,
  38. CSI_PIXEL_FORMAT_YUV_SEMIPLANAR_420,
  39. CSI_PIXEL_FORMAT_YUV_SEMIPLANAR_444,
  40. CSI_PIXEL_FORMAT_YUYV_PACKAGE_422,
  41. CSI_PIXEL_FORMAT_YVYU_PACKAGE_422,
  42. CSI_PIXEL_FORMAT_UYVY_PACKAGE_422,
  43. CSI_PIXEL_FORMAT_VYUY_PACKAGE_422,
  44. CSI_PIXEL_FORMAT_YYUV_PACKAGE_422,
  45. CSI_PIXEL_FORMAT_YYVU_PACKAGE_422,
  46. CSI_PIXEL_FORMAT_UVYY_PACKAGE_422,
  47. CSI_PIXEL_FORMAT_VUYY_PACKAGE_422,
  48. CSI_PIXEL_FORMAT_VY1UY0_PACKAGE_422,
  49. CSI_PIXEL_FORMAT_YUV_400,
  50. CSI_PIXEL_FORMAT_UV_420,
  51. CSI_PIXEL_FORMAT_MAX
  52. } csi_pixel_format_e;
  53. #if 0
  54. typedef enum {
  55. CSI_PICTURE_TYPE_NONE = 0, /* undefined */
  56. CSI_PICTURE_TYPE_I, /* intra */
  57. CSI_PICTURE_TYPE_P, /* predicted */
  58. CSI_PICTURE_TYPE_B, /* BI-dir predictd */
  59. CSI_PICTURE_TYPE_S, /* S(GMC)-VOP MPEG-4 */
  60. CSI_PICTURE_TYPE_SI, /* Switching intra */
  61. CSI_PICTURE_TYPE_SP, /* Switching Predicted */
  62. CSI_PICTURE_TYPE_BI, /* BI Type */
  63. } csi_picture_type_e;
  64. #endif
  65. typedef enum {
  66. CSI_CHROMA_LOCATION_LEFT,
  67. CSI_CHROMA_LOCATION_CENTER,
  68. CSI_CHROMA_LOCATION_TOPLEFT,
  69. CSI_CHROMA_LOCATION_TOP,
  70. CSI_CHROMA_LOCATION_BOTTOMLEFT,
  71. CSI_CHROMA_LOCATION_BOTTOM,
  72. CSI_CHROMA_LOCATION_DV420
  73. } csi_chroma_location_e;
  74. #if 0
  75. typedef enum {
  76. CSI_FRAME_COMPRESS_MODE_NONE = 0, /* no compress */
  77. CSI_FRAME_COMPRESS_MODE_SEQ, /* compress unit is 256x1 bytes as a segment. */
  78. CSI_FRAME_COMPRESS_MODE_TILE, /* compress unit is a tile. */
  79. CSI_FRAME_COMPRESS_MODE_LINE, /* compress unit is the whole line. raw for VI */
  80. CSI_FRAME_COMPRESS_MODE_FRAME, /* compress unit is the whole frame. YUV for VI(3DNR), RGB for TDE(write)/VO(read) */
  81. CSI_FRAME_COMPRESS_MAX
  82. } csi_frame_compress_mode;
  83. #endif
  84. typedef enum {
  85. CSI_COLORSPACE_ACES, /* RGB color space ACES standardized as SMPTE ST 2065-1:2012. */
  86. CSI_COLORSPACE_ACESCG, /* RGB color space ACEScg standardized as Academy S-2014-004. */
  87. CSI_COLORSPACE_RGB, /* RGB color space Adobe RGB (1998). */
  88. CSI_COLORSPACE_BT2020, /* RGB color space BT.2020 standardized as Rec. */
  89. CSI_COLORSPACE_BT709, /* RGB color space BT.709 standardized as Rec. */
  90. CSI_COLORSPACE_CIE_LAB, /* Lab color space CIE L*a*b*. */
  91. CSI_COLORSPACE_CIE_XYZ, /* XYZ color space CIE XYZ. */
  92. CSI_COLORSPACE_DCI_P3, /* RGB color space DCI-P3 standardized as SMPTE RP 431-2-2007. */
  93. CSI_COLORSPACE_DISPLAY_p3, /* RGB color space Display P3 based on SMPTE RP 431-2-2007 and IEC 61966-2.1:1999. */
  94. CSI_COLORSPACE_EXTENDED_SRGB, /* RGB color space scRGB-nl standardized as IEC 61966-2-2:2003. */
  95. CSI_COLORSPACE_LINEAR_EXTENDED_SRGB, /* RGB color space scRGB standardized as IEC 61966-2-2:2003. */
  96. CSI_COLORSPACE_LINEAR_SRGB, /* RGB color space sRGB standardized as IEC 61966-2.1:1999. */
  97. CSI_COLORSPACE_NTSC_1953, /* RGB color space NTSC, 1953 standard. */
  98. CSI_COLORSPACE_PRO_PHOTO_RGB, /* RGB color space NTSC, 1953 standard. */
  99. CSI_COLORSPACE_SMPTE_C, /* RGB color space SMPTE C. */
  100. CSI_COLORSPACE_SRGB /* RGB color space sRGB standardized as IEC 61966-2.1:1999. */
  101. } csi_color_space_e;
  102. typedef enum {
  103. CSI_VIDEO_FORMAT_UNDEFINED,
  104. CSI_VIDEO_FORMAT_COMPONENT,
  105. CSI_VIDEO_FORMAT_PAL,
  106. CSI_VIDEO_FORMAT_NTSC,
  107. CSI_VIDEO_FORMAT_SECAM,
  108. CSI_VIDEO_FORMAT_MAC
  109. } csi_video_format_e;
  110. typedef struct csi_frame_info {
  111. int32_t width;
  112. int32_t height;
  113. /* the region of interest of the frame */
  114. //csi_rect_s roi;
  115. csi_pixel_format_e pixel_format;
  116. //csi_frame_compress_mode compress_mode;
  117. csi_color_space_e color_space;
  118. csi_chroma_location_e chroma_location;
  119. } csi_frame_info_s;
  120. typedef struct csi_frame_data {
  121. int64_t pts;
  122. int64_t dts;
  123. int64_t frame_num;
  124. int8_t is_key_frame;
  125. int8_t is_eos; /* last frame */
  126. int32_t offset[MAX_PLANE_COUNT];
  127. int32_t stride[MAX_PLANE_COUNT];
  128. int32_t num_plane;
  129. void *vir_addr[MAX_PLANE_COUNT];
  130. union {
  131. int fd[MAX_PLANE_COUNT]; /* -1 means invalid */
  132. int64_t phy_addr[MAX_PLANE_COUNT]; /* 0 means invalid */
  133. };
  134. } csi_frame_data_s;
  135. typedef struct csi_frame_ex {
  136. csi_frame_info_s frame_info;
  137. csi_frame_data_s frame_data;
  138. void *opaque; /* not for user, DO NOT use or modify it */
  139. } csi_frame_ex_s;
  140. #if 0
  141. typedef struct csi_bitstream {
  142. void *buf;
  143. uint32_t len;
  144. uint8_t is_eos; //is the end of stream
  145. uint8_t is_frame; //is whole compress frame data
  146. } csi_bitstream_s;
  147. #endif
  148. #endif