openWF display解析xml配置文件流程

MDSS: multimedia Display sub system 多媒体显示子系统

1. xml解析函数流程

​​​​在这里插入图片描述

2. 相关函数分析

1)MDSS_DrvConfig_Install()

实例化MDSS_DrvConfig_FunctionTableType结构体中的函数指着

typedef struct
{
   MDSS_Status (*pMDSS_DrvConfig_Init)        (void);
   MDSS_Status (*pMDSS_DrvConfig_Term)        (void);
   MDSS_Status (*pMDSS_DrvConfig_GetProperty) (MDSS_DrvConfig_PropertyType ePropertyType,
                                                                               void *pPropertyInfo);

} MDSS_DrvConfig_FunctionTableType;
psFunctionTable->pMDSS_DrvConfig_Init        = _MDSS_DrvConfig_Init;
psFunctionTable->pMDSS_DrvConfig_Term        = _MDSS_DrvConfig_Term;
psFunctionTable->pMDSS_DrvConfig_GetProperty = _MDSS_DrvConfig_GetProperty;

2)_MDSS_DrvConfig_Init()

MDSS_INTERNAL_API MDSS_Status _MDSS_DrvConfig_Init(void)

初始化qcdisplay*.xml的相关信息:校验路径,打开文件,读取文件信息等

3)MDSS_DrvConfig_GetConfigFilePath()

static void MDSS_DrvConfig_GetConfigFilePath(MDSS_DrvConfig_ParserCtxType  *pParserCtx)

确认xml文件是否存在

MDSS_DrvConfig_ParserCtxType结构体:

typedef struct _DrvConfig_ParserCtxType
{
   MDSS_CharType  *pBuffer;   //读取文件后数据存放buffer
   MDSS_CharType  pConfigFilePath[MDSS_DRVCONFIG_MAX_PATH_SIZE];  //文件路径
   uint32         uFileSize;  //文件大小
   bool32         bFileExists;  //文件是否存在
   bool32         bParserInit;  //解析是否完成标志
   uint32         uCurrentlyProcessingDisplayID; /* ID of the current display being processed */
                                                                        /* 0 if not processing any display */

//物理通道的id号
   XML_Parser     XMLParser;  //xml解析器句柄
   uint32         uVersionID;  //使用的配置版本

} MDSS_DrvConfig_ParserCtxType;

4)MDSS_DrvConfig_ReadConfigFile()

static MDSS_Status MDSS_DrvConfig_ReadConfigFile(MDSS_DrvConfig_ParserCtxType  *pParserCtx)

打开xml文件,并将文件内容读取到pBuffer中

5)MDSS_DrvConfig_XMLParse()

static MDSS_Status MDSS_DrvConfig_XMLParse(MDSS_DrvConfig_ParserCtxType *pParserCtx)

解析xml内容

·XML_SetElementHandler() 串联需要执行的函数,并指定其执行的先后顺序。

·XML_Parse() 按照xml规则解析xml文件,根据函数的调用顺序依次解析

相关解析函数:

MDSS_DrvConfig_ProcessVersionTag()	获取版本号
MDSS_DrvConfig_ProcessGlobalConfigTag()	获取config信息
MDSS_DrvConfig_ProcessHdmiModeBoundsTag()	获取hdmi模式信息
MDSS_DrvConfig_ProcessSplitDSIConfigTag()	获取dsi split信息
MDSS_DrvConfig_ProcessWFDClientTag()	获取wfd client id
MDSS_DrvConfig_ProcessWFDPortTag()	获取wfd port id
MDSS_DrvConfig_ProcessPortAttribsTag()	获取wfd port信息,包含display id,display node,port type,zorder base
MDSS_DrvConfig_ProcessWFDPipelineTag()	获取pipeline和z-order
MDSS_DrvConfig_ProcessDisplayTag()	获取物理通道号
MDSS_DrvConfig_ProcessPanelLibraryNameTag()	获取调用的库路径名
MDSS_DrvConfig_ProcessPanelVideoTimingTag()	获取屏的相关参数配置
MDSS_DrvConfig_ProcessLVDSConfigTag()	获取dsi的相关配置,包括bridgechip id, 数据格式,dsi lanes
MDSS_DrvConfig_ProcessVideoModeTag()	获取HDMI/DP通道上的屏参数配置
MDSS_DrvConfig_ProcessDispNodeTag()	获取display node模式的id
MDSS_DrvConfig_ProcessDispNodeAttributesTag()	获取node模式下的偏移配置
MDSS_DrvConfig_ProcessExtendedAttribsTag()	获取扩展属性配置

6)MDSS_DrvConfig_Term

MDSS_INTERNAL_API MDSS_Status _MDSS_DrvConfig_Term(void)

释放display config的信息

7)MDSS_DrvConfig_GetProperty

MDSS_INTERNAL_API MDSS_Status _MDSS_DrvConfig_GetProperty(
                                                                                      MDSS_DrvConfig_PropertyType ePropertyType,
                                                                                      void *pPropertyInfo)

根据ePropertyType获取配置的相关信息

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OpenWF Display规范是一种供嵌入式系统使用的显示接口标准。该规范由Khedron公司于2010年发布,旨在为嵌入式系统提供统一的显示功能支持。 OpenWF Display规范定义了一套API和架构,允许嵌入式系统操作和管理多个显示设备和显示资源。它提供了一种统一的方式来控制和管理图形渲染、窗口管理、硬件加速以及显示配置等操作。 OpenWF Display规范与其他显示接口标准相比具有以下优势: 1. 跨平台兼容性:OpenWF Display规范设计灵活,支持多个操作系统和图形引擎。这使得开发人员可以在不同的平台和系统上实现一致的显示功能。 2. 硬件加速支持:该规范提供硬件加速功能,可以提升图形渲染的性能和效率,使得嵌入式系统能够更好地处理复杂的图形任务。 3. 窗口管理灵活性:OpenWF Display规范允许嵌入式系统管理多个窗口,并进行灵活的窗口控制和操作。这使得用户可以实现多任务处理、快速切换和资源共享等功能。 4. 多显示设备支持:OpenWF Display规范允许嵌入式系统同时管理多个显示设备,例如LCD屏幕、投影仪、HDMI接口等。这使得用户可以在不同的显示设备上实现统一的图形输出。 总而言之,OpenWF Display规范为嵌入式系统提供了一个统一而灵活的显示接口,使得开发人员能够更好地控制和管理显示资源,提高图形渲染性能,并支持多任务处理和多显示设备输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值