跳到主要内容

Linux_Display_DevelopmentGuide-08

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;

• 成员

变量说明
addrframebuffer 的内容地址,对于interleaved 类型,只有addr[0] 有效;planar 类型,三个都有;UV combined 的类型addr[0],addr[1]有效
sizesize of framebuffer, 单位为pixel
align对齐位宽,为2 的指数
formatpixel format, 详见disp_pixel_format
color_spacecolor space mode, 详见disp_cs_mode
b_trd_src1:3D source; 0:2D source
trd_modesource 3D mode, 详见disp_3d_src_mode
trd_right_addrused 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
zorderlayer zorder, 优先级高的图层可能会覆盖优先级低的图层
alpha_mode0:pixel alpha, 1:global alpha, 2:global pixel alpha
alpha_valuelayer global alpha value,valid while alpha_mode(1/2)
screenn_winscreen window,图层在屏幕上显示的矩形窗口
fbframebuffer 的属性,详见disp_fb_info,valid when BUFFER_MODE
colordisplay color, valid when COLOR_MODE
b_trd_outif output in 3d mode,used for scaler layer
out_trd_modeoutput 3d mode, 详见disp_3d_out_mode
idframe 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/1/2/3)
layer_id图层的id,此id 是在通道内的图层id。即(channel,layer_id)=(0,0) 表示通道0 中的图层0 之意

• 描述

disp_layer_config 用于描述一个图层配置的属性信息。

9.4 disp_color_info

• 原型

typedef struct
{
u8 alpha;
u8 red;
u8 green;
u8 blue;
}disp_color_info;

• 成员

变量说明
alpha颜色的透明度
red
green绿
blue

• 描述

disp_color_info 用于描述一个颜色的信息。

9.5 disp_rect

• 原型

typedef struct
{
s32 x;
s32 y;
u32 width;
u32 height;
}disp_rect;

• 成员

变量参数
起点x 值
y起点y 值
width
height

• 描述

disp_rect 用于描述一个矩形窗口的信息。

9.6 disp_rect64

• 原型

typedef struct
{
long long x;
long long y;
long long width;
long long height;
}disp_rect64;

• 成员

变量说明
x起点x 值, 定点小数,高32bit 为整数,低32bit 为小数
y起点y 值, 定点小数,高32bit 为整数,低32bit 为小数
width宽, 定点小数,高32bit 为整数,低32bit 为小数
height高, 定点小数,高32bit 为整数,低32bit 为小数

• 描述

disp_rect64 用于描述一个矩形窗口的信息。

9.7 disp_position

• 原型

typedef struct
{
s32 x;
s32 y;
}disp_posistion;

• 成员

变量说明
xx
yy

• 描述

disp_position 用于描述一个坐标的信息。

9.8 disp_rectsz

• 原型

typedef struct
{
u32 width;
u32 height;
}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_888832bpp, A 在最高位,B 在最低位
DISP_FORMAT_YUV420_Pplanar yuv 格式,分三块存放,需三个地址,P3在最高位
DISP_FORMAT_YUV422_SP_UVUVsemi-planar yuv 格式,分两块存放,需两个地址,U 在低位
DISP_FORMAT_YUV422_SP_VUVUsemi-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
&#125;disp_buffer_flags;

• 成员

变量说明
DISP_BF_NORMAL2d
DISP_BF_STEREO_TB top bottom模式
DISP_BF_STEREO_FPframepacking
DISP_BF_STEREO_SSFside by side full, 左右全景
DISP_BF_STEREO_SSHside by side half, 左右半景
DISP_BF_STEREO_LIline interleaved, 行交错模式

• 描述

disp_buffer_flags 用于描述3D 源模式。

9.11 disp_3d_out_mode

• 原型

typedef enum
&#123;
//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
&#125;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_FPframepacking
DISP_3D_OUT_MODE_SSFside by side full, 左右全景
DISP_3D_OUT_MODE_SSHside by side half, 左右半景
DISP_3D_OUT_MODE_LIline interleaved, 行交织
DISP_3D_OUT_MODE_FAfield alternate 场交错

• 描述

disp_3d_out_mode 用于描述3D 输出模式。

9.12 disp_color_space

• 原型

typedef enum
&#123;
DISP_BT601 = 0,
DISP_BT709 = 1,
DISP_YCC = 2,
&#125;disp_color_mode;

• 成员

变量说明
DISP_BT601用于标清视频
DISP_BT709用于高清视频
DISP_YCC用于图片

• 描述

disp_color_space 用于描述颜色空间类型。

9.13 disp_output_type

• 原型

typedef enum
&#123;
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,
&#125;disp_output_type;

• 成员

变量说明
DISP_OUTPUT_TYPE_NONE无显示输出
DISP_OUTPUT_TYPE_LCDLCD 输出
DISP_OUTPUT_TYPE_TVTV 输出
DISP_OUTPUT_TYPE_HDMIHDMI 输出
DISP_OUTPUT_TYPE_VGAVGA 输出

• 描述

disp_output_type 用于描述显示输出类型。

9.14 disp_tv_mode

• 原型

typedef enum
&#123;
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,
&#125;disp_tv_mode;

• 成员

• 描述

disp_tv_mode 用于描述TV 输出模式。

9.15 disp_output

• 原型

typedef struct
&#123;
unsigned int type;
unsigned int mode;
&#125;disp_output;

• 成员

变量说明
Type输出类型
Mode输出模式,480P/576P, etc

• 描述

disp_output 用于描述显示输出类型,模式。

9.16 disp_layer_mode

• 原型

typedef enum
&#123;
LAYER_MODE_BUFFER = 0,
LAYER_MODE_COLOR = 1,
&#125;disp_layer_mode;

• 成员

变量说明
LAYER_MODE_BUFFERbuffer 模式,带buffer 的图层
LAYER_MODE_COLOR单色模式,无buffer 的图层,只需要一个颜色值表示图像内容

• 描述

disp_layer_mode 用于描述图层模式。

9.17 disp_scan_flags

• 原型

typedef enum
&#123;
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
&#125;disp_scan_flags;

• 成员

变量说明
DISP_SCAN_PROGRESSIVE逐行模式
DISP_SCAN_INTERLACED_ODD_FLD_FIRST隔行模式,奇数行优先
DISP_SCAN_INTERLACED_EVEN_FLD_FIRST隔行模式,偶数行优先

• 描述 disp_scan_flags 用于描述显示Buffer 的扫描方式。