数据结构
9 Data Structure
9.1 disp_fb_info
• 原型
typedef struct
{
unsigned long long addr[3]; /* address of frame buffer,
single addr for interleaved fomart,
double addr for semi-planar fomart
triple addr for planar format */
disp_rectsz size[3]; //size for 3 component,unit: pixels
unsigned int align[3]; //align for 3 comonent,unit: bytes(align=2^n,i.e
.1/2/4/8/16/32..
disp_pixel_format format;
disp_color_space color_space; //color space
unsigned int trd_right_addr[3];/* right address of 3d fb,
used when in frame packing 3d mode */
bool pre_multiply; //true: pre-multiply fb
disp_rect64 crop; //crop rectangle boundaries
disp_buffer_flags flags; //indicate stereo or non-stereo buffer
disp_scan_flags scan; //scan type & scan order
}disp_fb_info;
• 成员
变量 | 说明 |
---|---|
addr | framebuffer 的内容地址,对于interleaved 类型,只有addr[0] 有效;planar 类型,三个都有;UV combined 的类型addr[0],addr[1]有效 |
size | size of framebuffer, 单位为pixel |
align | 对齐位宽,为2 的指数 |
format | pixel format, 详见disp_pixel_format |
color_space | color space mode, 详见disp_cs_mode |
b_trd_src | 1:3D source; 0:2D source |
trd_mode | source 3D mode, 详见disp_3d_src_mode |
trd_right_addr | used when in frame packing 3d mode |
crop | 用于显示的buffer 裁减区 |
flags | 标识2D 或3D 的buffer |
scan | 标识描述类型,progress, interleaved |
• 描述
disp_fb_info 用于描述一个display frambuffer 的属性信息。
9.2 disp_layer_info
• 原型
typedef struct
{
disp_layer_mode mode;
unsigned char zorder; /*specifies the front-to-back ordering of the layers on
the screen,
the top layer having the highest Z value
can't set zorder, but can get */
unsigned char alpha_mode; //0: pixel alpha; 1: global alpha; 2: global
pixel alpha
unsigned char alpha_value; //global alpha value
disp_rect screen_win; //display window on the screen
bool b_trd_out; //3d display
disp_3d_out_mode out_trd_mode;//3d display mode
union {
unsigned int color; //valid when LAYER_MODE_COLOR
disp_fb_info fb; //framebuffer, valid when LAYER_MODE_BUFFER
};
unsigned int id; /* frame id, can get the id of frame display currently
by DISP_LAYER_GET_FRAME_ID */
}disp_layer_info;
• 成员
变量 | 说明 |
---|---|
mode | 图层的模式,详见disp_layer_mode |
zorder | layer zorder, 优先级高的图层可能会覆盖优先级低的图层 |
alpha_mode | 0:pixel alpha, 1:global alpha, 2:global pixel alpha |
alpha_value | layer global alpha value,valid while alpha_mode(½) |
screenn_win | screen window,图层在屏幕上显示的矩形窗口 |
fb | framebuffer 的属性,详见disp_fb_info,valid when BUFFER_MODE |
color | display color, valid when COLOR_MODE |
b_trd_out | if output in 3d mode,used for scaler layer |
out_trd_mode | output 3d mode, 详见disp_3d_out_mode |
id | frame id, 设置给驱动的图像帧号,可以通过DISP_LAYER_GET_FRAME_ID 获取当前显示的帧号,以做一下特定的处理,比如释放掉已经显示完成的图像帧buffer。 |
• 描述
disp_layer_info 用于描述一个图层的属性信息。
9.3 disp_layer_config
• 原型
typedef struct
{
disp_layer_info info;
bool enable;
unsigned int channel;
unsigned int layer_id;
}disp_layer_config;
• 成员
变量 | 说明 |
---|---|
info | 图像的信息属性 |
enable | 使能标志 |
channel | 图层所在的通道id(0/½/3) |
layer_id | 图层的id,此id 是在通道内的图层id。即(channel,layer_id)=(0,0) 表示通道0 中的图层0 之意 |
• 描述
disp_layer_config 用于描述一个图层配置的属性信息。
9.4 disp_color_info
• 原型
• 成员
变量说明 | |
---|---|
alpha | 颜色的透明度 |
red | 红 |
green | 绿 |
blue | 蓝 |
• 描述
disp_color_info 用于描述一个颜色的信息。
9.5 disp_rect
• 原型
• 成员
变量 | 参数 |
---|---|
x | 起点x 值 |
y | 起点y 值 |
width | 宽 |
height | 高 |
• 描述
disp_rect 用于描述一个矩形窗口的信息。
9.6 disp_rect64
• 原型
• 成员
变量 | 说明 |
---|---|
x | 起点x 值, 定点小数,高32bit 为整数,低32bit 为小数 |
y | 起点y 值, 定点小数,高32bit 为整数,低32bit 为小数 |
width | 宽, 定点小数,高32bit 为整数,低32bit 为小数 |
height | 高, 定点小数,高32bit 为整数,低32bit 为小数 |
• 描述
disp_rect64 用于描述一个矩形窗口的信息。
9.7 disp_position
• 原型
• 成员
变量 | 说明 |
---|---|
x | x |
y | y |
• 描述
disp_position 用于描述一个坐标的信息。
9.8 disp_rectsz
• 原型
• 成员
变量 | 说明 |
---|---|
width | 宽 |
height | 高 |
• 描述
disp_rectsz 用于描述一个矩形尺寸的信息。
9.9 disp_pixel_format
• 原型
typedef enum
{
DISP_FORMAT_ARGB_8888 = 0x00,//MSB A-R-G-B LSB
DISP_FORMAT_ABGR_8888 = 0x01,
DISP_FORMAT_RGBA_8888 = 0x02,
DISP_FORMAT_BGRA_8888 = 0x03,
DISP_FORMAT_XRGB_8888 = 0x04,
DISP_FORMAT_XBGR_8888 = 0x05,
DISP_FORMAT_RGBX_8888 = 0x06,
DISP_FORMAT_BGRX_8888 = 0x07,
DISP_FORMAT_RGB_888 = 0x08,
DISP_FORMAT_BGR_888 = 0x09,
DISP_FORMAT_RGB_565 = 0x0a,
DISP_FORMAT_BGR_565 = 0x0b,
DISP_FORMAT_ARGB_4444 = 0x0c,
DISP_FORMAT_ABGR_4444 = 0x0d,
DISP_FORMAT_RGBA_4444 = 0x0e,
DISP_FORMAT_BGRA_4444 = 0x0f,
DISP_FORMAT_ARGB_1555 = 0x10,
DISP_FORMAT_ABGR_1555 = 0x11,
DISP_FORMAT_RGBA_5551 = 0x12,
DISP_FORMAT_BGRA_5551 = 0x13,
/* SP: semi-planar, P:planar, I:interleaved
* UVUV: U in the LSBs; VUVU: V in the LSBs */
DISP_FORMAT_YUV444_I_AYUV = 0x40,//MSB A-Y-U-V LSB
DISP_FORMAT_YUV444_I_VUYA = 0x41,//MSB V-U-Y-A LSB
DISP_FORMAT_YUV422_I_YVYU = 0x42,//MSB Y-V-Y-U LSB
DISP_FORMAT_YUV422_I_YUYV = 0x43,//MSB Y-U-Y-V LSB
DISP_FORMAT_YUV422_I_UYVY = 0x44,//MSB U-Y-V-Y LSB
DISP_FORMAT_YUV422_I_VYUY = 0x45,//MSB V-Y-U-Y LSB
DISP_FORMAT_YUV444_P = 0x46,//MSB P3-2-1-0 LSB, YYYY UUUU VVVV
DISP_FORMAT_YUV422_P = 0x47,//MSB P3-2-1-0 LSB YYYY UU VV
DISP_FORMAT_YUV420_P = 0x48,//MSB P3-2-1-0 LSB YYYY U V
DISP_FORMAT_YUV411_P = 0x49,//MSB P3-2-1-0 LSB YYYY U V
DISP_FORMAT_YUV422_SP_UVUV = 0x4a,//MSB V-U-V-U LSB
DISP_FORMAT_YUV422_SP_VUVU = 0x4b,//MSB U-V-U-V LSB
DISP_FORMAT_YUV420_SP_UVUV = 0x4c,
DISP_FORMAT_YUV420_SP_VUVU = 0x4d,
DISP_FORMAT_YUV411_SP_UVUV = 0x4e,
DISP_FORMAT_YUV411_SP_VUVU = 0x4f,
}disp_pixel_format;
• 成员
变量 | 说明 |
---|---|
DISP_FORMAT_ARGB_8888 | 32bpp, A 在最高位,B 在最低位 |
DISP_FORMAT_YUV420_P | planar yuv 格式,分三块存放,需三个地址,P3在最高位 |
DISP_FORMAT_YUV422_SP_UVUV | semi-planar yuv 格式,分两块存放,需两个地址,U 在低位 |
DISP_FORMAT_YUV422_SP_VUVU | semi-planar yuv 格式,分两块存放,需两个地址,V 在低位 |
• 描述
disp_pixel_format 用于描述像素格式。
9.10 disp_buffer_flags
• 原型
typedef enum
{
DISP_BF_NORMAL = 0,//non-stereo
DISP_BF_STEREO_TB = 1 << 0,//stereo top-bottom
DISP_BF_STEREO_FP = 1 << 1,//stereo frame packing
DISP_BF_STEREO_SSH = 1 << 2,//stereo side by side half
DISP_BF_STEREO_SSF = 1 << 3,//stereo side by side full
DISP_BF_STEREO_LI = 1 << 4,//stereo line interlace
}disp_buffer_flags;
• 成员
变量 | 说明 |
---|---|
DISP_BF_NORMAL | 2d |
DISP_BF_STEREO_TB top bottom | 模式 |
DISP_BF_STEREO_FP | framepacking |
DISP_BF_STEREO_SSF | side by side full, 左右全景 |
DISP_BF_STEREO_SSH | side by side half, 左右半景 |
DISP_BF_STEREO_LI | line interleaved, 行交错模式 |
• 描述
disp_buffer_flags 用于描述3D 源模式。
9.11 disp_3d_out_mode
• 原型
typedef enum
{
//for lcd
DISP_3D_OUT_MODE_CI_1 = 0x5,//column interlaved 1
DISP_3D_OUT_MODE_CI_2 = 0x6,//column interlaved 2
DISP_3D_OUT_MODE_CI_3 = 0x7,//column interlaved 3
DISP_3D_OUT_MODE_CI_4 = 0x8,//column interlaved 4
DISP_3D_OUT_MODE_LIRGB = 0x9,//line interleaved rgb
//for hdmi
DISP_3D_OUT_MODE_TB = 0x0,//top bottom
DISP_3D_OUT_MODE_FP = 0x1,//frame packing
DISP_3D_OUT_MODE_SSF = 0x2,//side by side full
DISP_3D_OUT_MODE_SSH = 0x3,//side by side half
DISP_3D_OUT_MODE_LI = 0x4,//line interleaved
DISP_3D_OUT_MODE_FA = 0xa,//field alternative
}disp_3d_out_mode;
• 成员
for lcd:
变量 | 说明 |
---|---|
DISP_3D_OUT_MODE_CI_1 | 列交织 |
DISP_3D_OUT_MODE_CI_2 | 列交织 |
DISP_3D_OUT_MODE_CI_3 | 列交织 |
DISP_3D_OUT_MODE_CI_4 | 列交织 |
DISP_3D_OUT_MODE_LIRGB | 行交织 |
for hdmi:
变量 | 说明 |
---|---|
DISP_3D_OUT_MODE_TB top bottom | 上下模式 |
DISP_3D_OUT_MODE_FP | framepacking |
DISP_3D_OUT_MODE_SSF | side by side full, 左右全景 |
DISP_3D_OUT_MODE_SSH | side by side half, 左右半景 |
DISP_3D_OUT_MODE_LI | line interleaved, 行交织 |
DISP_3D_OUT_MODE_FA | field alternate 场交错 |
• 描述
disp_3d_out_mode 用于描述3D 输出模式。
9.12 disp_color_space
• 原型
• 成员
变量 | 说明 |
---|---|
DISP_BT601 | 用于标清视频 |
DISP_BT709 | 用于高清视频 |
DISP_YCC | 用于图片 |
• 描述
disp_color_space 用于描述颜色空间类型。
9.13 disp_output_type
• 原型
typedef enum
{
DISP_OUTPUT_TYPE_NONE = 0,
DISP_OUTPUT_TYPE_LCD = 1,
DISP_OUTPUT_TYPE_TV = 2,
DISP_OUTPUT_TYPE_HDMI = 4,
DISP_OUTPUT_TYPE_VGA = 8,
}disp_output_type;
• 成员
变量 | 说明 |
---|---|
DISP_OUTPUT_TYPE_NONE | 无显示输出 |
DISP_OUTPUT_TYPE_LCD | LCD 输出 |
DISP_OUTPUT_TYPE_TV | TV 输出 |
DISP_OUTPUT_TYPE_HDMI | HDMI 输出 |
DISP_OUTPUT_TYPE_VGA | VGA 输出 |
• 描述
disp_output_type 用于描述显示输出类型。
9.14 disp_tv_mode
• 原型
typedef enum
{
DISP_TV_MOD_480I = 0,
DISP_TV_MOD_576I = 1,
DISP_TV_MOD_480P = 2,
DISP_TV_MOD_576P = 3,
DISP_TV_MOD_720P_50HZ = 4,
DISP_TV_MOD_720P_60HZ = 5,
DISP_TV_MOD_1080I_50HZ = 6,
DISP_TV_MOD_1080I_60HZ = 7,
DISP_TV_MOD_1080P_24HZ = 8,
DISP_TV_MOD_1080P_50HZ = 9,
DISP_TV_MOD_1080P_60HZ = 0xa,
DISP_TV_MOD_1080P_24HZ_3D_FP = 0x17,
DISP_TV_MOD_720P_50HZ_3D_FP = 0x18,
DISP_TV_MOD_720P_60HZ_3D_FP = 0x19,
DISP_TV_MOD_1080P_25HZ = 0x1a,
DISP_TV_MOD_1080P_30HZ = 0x1b,
DISP_TV_MOD_PAL = 0xb,
DISP_TV_MOD_PAL_SVIDEO = 0xc,
DISP_TV_MOD_NTSC = 0xe,
DISP_TV_MOD_NTSC_SVIDEO = 0xf,
DISP_TV_MOD_PAL_M = 0x11,
DISP_TV_MOD_PAL_M_SVIDEO = 0x12,
DISP_TV_MOD_PAL_NC = 0x14,
DISP_TV_MOD_PAL_NC_SVIDEO = 0x15,
DISP_TV_MOD_3840_2160P_30HZ = 0x1c,
DISP_TV_MOD_3840_2160P_25HZ = 0x1d,
DISP_TV_MOD_3840_2160P_24HZ = 0x1e,
DISP_TV_MODE_NUM = 0x1f,
}disp_tv_mode;
• 成员
• 描述
disp_tv_mode 用于描述TV 输出模式。
9.15 disp_output
• 原型
• 成员
变量 | 说明 |
---|---|
Type | 输出类型 |
Mode | 输出模式,480P/576P, etc |
• 描述
disp_output 用于描述显示输出类型,模式。
9.16 disp_layer_mode
• 原型
• 成员
变量 | 说明 |
---|---|
LAYER_MODE_BUFFER | buffer 模式,带buffer 的图层 |
LAYER_MODE_COLOR | 单色模式,无buffer 的图层,只需要一个颜色值表示图像内容 |
• 描述
disp_layer_mode 用于描述图层模式。
9.17 disp_scan_flags
• 原型
typedef enum
{
DISP_SCAN_PROGRESSIVE = 0,//non interlace
DISP_SCAN_INTERLACED_ODD_FLD_FIRST = 1 << 0,//interlace ,odd field first
DISP_SCAN_INTERLACED_EVEN_FLD_FIRST = 1 << 1,//interlace,even field first
}disp_scan_flags;
• 成员
变量 | 说明 |
---|---|
DISP_SCAN_PROGRESSIVE | 逐行模式 |
DISP_SCAN_INTERLACED_ODD_FLD_FIRST | 隔行模式,奇数行优先 |
DISP_SCAN_INTERLACED_EVEN_FLD_FIRST | 隔行模式,偶数行优先 |
• 描述 disp_scan_flags 用于描述显示Buffer 的扫描方式。