Mstar OSD 详解
一、OSD 基本概念
UI 语言:指 OSD 内容中的文字部分使用的语言类型;
UI 模式:指 OSD 内容适用的环境,例如不同的信号源(TV、DVD、PC)带来的模式化其作
用主要区分不同的环境下 OSD 的不同表现;
UI 场景:特定语言模式下及较多信息页面情况下,当前 OSD 适用的特定页面;
UI 事件:用户利用输入设备向 UI 系统提供的操作命令;
UI 动作表:指在特定 UI 场景中,对于 UI 输入的命令进行对应处理的索引表;
OSD 画布:指整个 OSD 呈现的区域,通常为一个矩形区域;
OSD 位置:通常指在 OSD 画布中,相较左上角原点的相对位置;
OSD 物件:呈现在画布上,表达特定信息,具有特定属性的像素组合。
二、MST OSD 流程图
Mstar 的 OSD 方案,感觉主要是在 msosd.c(底层部分),menu.c, menutbl.c 这里,主要有
MenuPageType 、 MenuItemType 、 DrawSubMenuGroupType 、 MenuItemFuncType 等 几 个
Stucture,菜单位置、大小及相应操作方法都在结构体里;在 Main 循环程序中通过不断的
调用 keyDetectHander()、irDecodeCommand()和 OsdHandler()来达到 OSD 的各种功能与目的。
三、模块说明
1、User Command
这部分指的是用户利用 Keypad、Ir 或 Visual Key 进行操作,产生中断触发激活 KeyEvent;
主要功能是在 Irfunc.c、keyPad.c 里完成的,在 keyDetectHandler()、irDecodeCommand()中
获得相关按键信息,而后通过 MenuProcessKey()、ExecuteKeyEvent()执行相应的操作(包
括画 OSD 以及执行按键功能等)。
这里比较重要的是如何将某状态下的按键(如某一按键连续按两次或者一直按下)转化成
正确的 MenuItemActionType,因为所有的按键最终都会被转到 ExecuteKeyEvent()进行处理,
而 ExecuteKeyEvent()正是根据不同的 MenuItemActionType 实现不同的功能;实现此功能的
关键在于所使用的 Menu Structure 上,详细内容请参考 Menu Table 模块。
2、Draw OSD
评论0