CN1293777C - 手机相机芯片的封装系统及封装方法 - Google Patents
手机相机芯片的封装系统及封装方法 Download PDFInfo
- Publication number
- CN1293777C CN1293777C CNB2004100060780A CN200410006078A CN1293777C CN 1293777 C CN1293777 C CN 1293777C CN B2004100060780 A CNB2004100060780 A CN B2004100060780A CN 200410006078 A CN200410006078 A CN 200410006078A CN 1293777 C CN1293777 C CN 1293777C
- Authority
- CN
- China
- Prior art keywords
- module
- mobile phone
- attribute
- phone camera
- camera chip
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Telephone Function (AREA)
- Studio Devices (AREA)
Abstract
一种手机相机芯片的封装系统及封装方法,其中该封装系统包括用于驱动手机相机芯片的若干驱动模块及执行应用操作的应用层模块,所述封装系统还包括设置在驱动模块和应用层模块之间并向应用层模块提供稳定的应用程序接口的接口模块,所述接口模块根据应用层模块的调用来调用相应驱动模块完相应的应用操作。相应封装方法将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口给应用层模块。本手机相机芯片的封装系统及封装方法,由于应用程序接口不会发生很大的变化,可以支持不同手机相机芯片的变动;工程师可以重复利用常用的功能模块;可以通过属性操作来扩展支持新增加的手机相机芯片及新的属性。
Description
技术领域
本发明涉及图像处理芯片的封装系统及封装方法,尤指一种手机相机芯片的封装系统及封装方法。
背景技术
随着手机的多媒体应用越来越广泛,对于手机的相机(Camera)功能也将成为高端手机的一种标准配置。请参照图1所示,目前开发手机的相机功能,主要是下面这种方法:根据手机相机芯片3(以JPEG IC,即图像编解码处理器为例)的详细设计书(Data Sheet)中对寄存器(Register)的描述设置驱动模块2,应用层模块1根据驱动模块2提供的API(应用程序接口)编写相应的应用程序。这种解决方案,在手机相机芯片3变动不大的情况下,相应的API不会发生很大的变化,工程师可以比较顺利的完成各种功能,但是如果手机相机芯片3变动频繁,例如JPEG IC性能升级,和换用不同JPEG IC,驱动模块2提供的API和应用层模块1的都会跟着频繁变动,而且在一个手机系统中,往往JPEG IC还是液晶显示器(LCD)的控制器,因此相应的工程师工作量将会越来越不堪重负。
发明内容
本发明解决的问题是手机相机芯片的封装系统及封装方法,用于支持手机相机芯片的频繁变化,有效的重复利用应用程序接口。
为解决上述问题,本发明手机相机芯片的封装系统包括用于驱动手机相机芯片的若干驱动模块及执行应用操作的应用层模块,所述封装系统还包括设置在驱动模块和应用层模块之间并向应用层模块提供稳定的应用程序接口的接口模块,所述接口模块根据应用层模块的调用来调用相应驱动模块完相应的应用操作。
所述接口模块进一步包括:属性模块,存放属性,并向应用层模块提供应用程序接口用于属性操作,且通过驱动模块对手机相机芯片产生作用的原子操作;功能模块,存放功能,并向应用层模块提供应用程序接口用于功能操作,且所述功能是由若干个属性共同影响而对手机相机芯片产生原始功能操作。
所述属性模块包括若干用于存储属性的哈希链表,且每个哈希链表对应一个手机相机芯片的驱动模块。每个哈希链表设置一个宏标志用于标识对应的手机相机芯片的驱动模块。所述哈希链表包括若干属性节点,每个属性节点对应一个具体属性。
相应地,本发明该封装方法将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口给应用层模块。在封装开始之前进行封装初始化;在封装结束时回收内存。
该封装方法用于增加新的属性时,进一步包括如下步骤:应用层模块进行注册属性的属性操作;接口模块在哈希链表中增加新的属性节点;调用功能模块,属性模块根据新的属性节点的属性值,调用驱动模块对寄存器进行置位;重新封装,将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口给应用层模块。
该封装方法用于更换手机相机芯片时,进一步包括如下步骤:属性模块链接到对应手机相机芯片的哈希链表;初始化该哈希链表;根据新的手机相机芯片,对新的驱动模块进行封装;调用功能模块,属性模块根据新的属性节点的属性值,调用驱动模块对寄存器进行置位。
与现有技术相比,本发明具有以下优点:
通过增设接口模块,向应用层模块提供相应的API不会发生很大的变化,可以支持不同手机相机芯片的变动;工程师可以重复利用常用的功能模块;由于具有稳定的API,可以通过属性操作来扩展支持新增加的手机相机芯片及新的属性。
附图说明
图1是现有技术中手机相机芯片的封装系统框图。
图2是本发明手机相机芯片的封装系统整体框图。
图3是图2的细化框图。
图4是图3的细化框图。
图5是哈希链表的示意图。
图6是查询相应哈希链表的流程图。
图7是属性注册的流程图。
图8是属性取消的流程图。
图9是得到属性值的流程图。
图10是设置属性值的流程图。
图11是调用图像预览功能的流程图。
具体实施方式
请参照图2所示,本发明手机相机芯片的封装系统包括用于驱动手机相机芯片3的若干驱动模块2及执行应用操作的应用层模块1,所述封装系统还包括设置在驱动模块2和应用层模块1之间并向应用层模块1提供稳定的应用程序接口的接口模块4,所述接口模块4根据应用层模块1的调用来调用相应驱动模块2完相应的应用操作。手机相机芯片3例如,JPEG IC会经常变化,驱动模块2也必须随着变化,但是对于应用层模块1来说,往往是希望驱动模块2提供给应用层模块1的应用程序接口尽量不变化并能够衔接多种JPEGIC。
手机相机芯片3有其自身独有的特点:控制功能的属性越来越多,如旋转、OSD(On Screen Display,用户可以通过画中画菜单来调节所有的视象特性,而且有自动调节功能,在不同的显示模式下自由切换)、特殊效果、数字变焦、帧率等等,而且属性值随时会有变化;相对功能却比较固定,包括图像预览、图像抓拍、图像回放等,所以将功能和控制功能的属性分开。
请参照图3所示,所述接口模块4进一步包括:功能模块41和属性模块42,与外部通信。所述属性模块42,用于存放属性,并向应用层模块1提供应用程序接口以进行属性操作,且通过驱动模块2对手机相机芯片3产生作用的原子操作;功能模块41,存放功能,并向应用层模块1提供应用程序接口用于功能操作,且所述功能是由若干个属性共同影响而对手机相机芯片3产生原始功能操作。所述原始功能操作是指常见的图像预览、图像抓拍及图像回放等操作,与应用层模块1的功能操作一致。
请结合参照图4所示,所述应用层模块1的功能操作11包括图像预览、图像抓拍及图像回放;而应用层模块1的属性操作12包括得到属性值、设置属性值、注册属性及取消属性。以预览为例:功能模块41提供预览功能,预览模块(未图示)在驱动模块2驱动手机相机芯片3进行图像预览前,执行属性模块42中的影响图像预览的各个属性的属性操作函数模块21,比如,定义影响预览的属性有放大缩小(Zoom)和旋转(Rotation),那么,图像预览就会先执行Zoom,Rotation属性的属性操作函数模块21,而属性操作函数模块21就会驱动手机相机芯片将zoom,Rotation设置成用户需要的值。那么预览+zoom+Rotation就成为用户所要达到的效果。
请参照图5所示,所述属性模块42包括若干用于存储属性的哈希链表(Hash链表),且每个哈希链表对应一个手机相机芯片3的驱动模块2。每个哈希链表设置一个宏标志用于标识对应的手机相机芯片3的驱动模块2。多个哈希链表构成一个数组。
所述哈希链表包括若干属性节点,每个属性节点对应一个具体属性。本实施例中所述哈希链表中的属性节点按照属性名称的开头字母排列,依A、B、C、D...Z的顺序排列。
Hash链表的结构如下
typedef struct Tag_AttrOperation
{
U8 ucUsed;
U8 ucName[20];
T_CAM_ATTRIBUTE* ptCamAttr[26];
}T_CAM_ATTR_OPERA;
1)U8 ucUsed----设置链表标志,表示该哈希链表有没有被使用;
2)U8 ucName[20]------表示哈希链表名字的字符串;
3)T_CAM_ATTRIBUTE* ptCamAttr[26]------表示Hash链表,由属性节点的属性名称首字母为特征值的链表
哈希链表中每个属性节点数据结构:
typedef struct tagAttr
{
U16 usValue; /*属性值*/
U16 usCamFunFlag; /*功能标志,属性可用于哪种功能*/
U8 AttrName[20]; /*属性名称*/
U16 (*MmiOperation)(U16 us Value);
struct tagAttr* next;
}T_CAM_ATTRIBUTE,T_CAM_PATTRIBUTE;
属性值,由接口模块定义用于约束应用层模块1的调用和驱动模块2的设置;
功能标志,用于标识该属性影响的哪些功能;
属性名称,用于属性节点在哈希链表中的定位排列;
属性操作函数模块(*MmiOperation)(U16 usValue),由驱动模块2提供,根据属性值对手机相机芯片3的寄存器进行置位;不同的手机相机芯片3,寄存器不同,所以该属性操作函数模块21由驱动模块2提供后,注册到该属性节点中,一旦属性会影响到的功能的应用程序接口被调用时,则该属性操作函数模块就会被执行。
链接节点(struct tagAttr* next),与自身链接的下一个属性节点。该链接节点用于属性节点查找。
任何属性节点可以在初始化之前加入这个哈希链表,也可以随后进行新的注册,一旦注册成功,新的属性节点就可以供应用层模块1来控制相机功能。
例如浏览时的旋转功能,可以创建一个哈希链表中的属性节点的数据结构:
“Rotation”赋值给属性名称,然后定义该属性将影响浏览功能(设置功能标志),然后将控制手机相机芯片3旋转的寄存器的函数模块,赋值给属性操作函数模块21,最后就调用属性模块进行属性节点注册,增加新的属性节点。下面详细描述各种属性操作:注册属性、取消属性、得到属性值及设置属性值的流程。
请参照图6所示,属性节点注册首先找到相应的哈希链表(设置链表标志,表示该哈希链表有没有被使用,找到这个标志位被置位的链表),步骤61遍历哈希链表数组;步骤62哈希链表的链表标志是否置位(例如,设置链表标志为1,表示该哈希链表被使用);如果没置位则返回步骤61查询下一个哈希链表;若置位则返回哈希链表,表示找到相应的哈希链表。
请参照图7所示,找到相应的哈希链表后,找出“Rotation”中首字母“R”,然后在该哈希链表中得的第18个头节点,因为在26个字母表中“R”排第18位;判断该属性节点是否为空(步骤71);如果头节点没有属性值,则该属性定位在该节点(步骤72);如果有属性值,则首先比较属性名称是否一样(步骤73),如果一样,则返回告知属性置已注册(步骤74);如果不一样,得到该属性节点得下一个链接节点(步骤75),并返回步骤71,直到找到合适属性节点并调用属性操作函数模块21完成Rotation的注册。
请参照图8所示,如何取消某个属性的注册,首先,找到相应哈希链表(图6),然后具体哈希链表的流程包括以下步骤:
步骤81,判断节点是否为空;如果为空则返回,告知属性值已取消注册(步骤82);
步骤83,若该节点不为空,则判断属性名称是否一样;
步骤84,若属性名称同,则删除该属性节点,回收内存,并告知取消注册;步骤85,若属性名称不同,则找到下一个链接节点,并返回步骤81,直到找到合适的属性节点并调用属性操作函数模块21完成该属性节点取消注册。
继续参照图4所示,在应用中,继续以图像预览的功能操作11为例。在调用图像预览时,要确定哪些属性影响该功能,比如:旋转(Rotation)和放大缩小(Zoom)。其中放大缩小属性,在哈希链表中已经包括,而旋转属性没有。首先要调用属性操作12中的注册属性,执行注册流程,完成旋转属性在哈希链表中的注册(如前述);然后执行属性操作11中的得到属性值,取得这两个属性值。为了得到属性值,首先,找到相应的哈希链表(参照图6),然后从头节点开始,流程如下(参照图9):
步骤91,判断节点是否为空,若是空则执行步骤92返回告知无此属性;
步骤93,如果该节点不为空,则判断属性名称是否一样,如果一样则执行步骤94将属性值返回;
步骤95,若属性名称不一样,则找到下一个链接节点,并返回步骤91,直到找到所要的属性值。
请参照图10所示,完成得到属性值的属性操作后,按照用户的想法进行改变,例如放大2阶,旋转180度,然后执行属性操作12中的设置属性值。为完成设置属性值赋值,首先,找到相应的哈希链表(参照图6),然后从头节点开始,流程如下:
步骤101,判断节点是否为空,若为空,则执行步骤102返回告知无此属性;
步骤103,若该节点不为空,则判断属性名称是否一样,如果一样则执行步骤104,将来自应用层模块1(即用户设置的)赋值给属性值并返回;
步骤105,若名称不一样则找到下一个链接节点并返回步骤101,直到完成属性值设置。
请参照图11所示,调用图像预览功能,调用之前会执行如下流程:首先,找到相应哈希链表(参图6),然后确定属性模块哪些功能标志是图像预览,从“A”的头节点开始,具体流程如下:
步骤111,判断节点是否为空,如为空则执行步骤112判断属性名称是否为“Z”即是否为末节点,如果是末节点则遍历完该哈希链表,若不是末节点则返回该哈希链表中的下一个头节点,返回步骤111;
步骤113,如果节点不为空,则判断功能标志是否为图像预览;如果是则执行属性操作函数模块21;
步骤114,如果功能标志不是图像预览,则找到下一个链接节点并返回步骤111。这样完成预览图像比原来放大了两倍,旋转了180度。
本发明手机相机芯片的封装方法,将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口(API)给应用层模块。在封装开始之前进行封装初始化;在封装结束时回收内存。
可以将接口模块看成一个OOP(面向对象的程序设计)中的类的定义,每一个手机相机芯片可以将其定义成一个新的实体。如果换成另外一个手机相机芯片,只需对接口模块的属性模块中的属性函数操作模块进行重新执行和应用程序接口重新封装即可,而对应用层模块的应用程序接口维持不变。或者如果同一系列的手机相机芯片升级后,也只需要新的属性来对应相应的功能即可。
该封装方法用于增加新的属性时,进一步包括如下步骤:
应用层模块进行注册属性的属性操作,包括定义该属性将要影响的功能、属性的初始值及驱动模块对寄存器进行置位的回调函数;
接口模块在哈希链表中增加新的属性节点;
调用功能模块,属性模块根据新的属性节点的属性值,调用驱动模块对寄存器进行置位;
重新封装,将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口(API)给应用层模块。
该封装方法用于更换手机相机芯片时,进一步包括如下步骤:
根据宏标志,属性模块链接到对应手机相机芯片的哈希链表,初始化该哈希链表,包括初始化新的手机相机芯片的常用属性,如增加新的属性描述;
应用程序接口不变,会根据新的手机相机芯片,对新的驱动模块进行封装;
功能模块被调用时则属性模块根据新的属性节点的属性值,驱动模块对寄存器进行置位。
综上所述,本发明手机相机芯片的封装系统及封装方法,通过增设接口模块使向应用层模块提供相应的API不会发生很大的变化,可以支持不同手机相机芯片的变动;工程师可以重复利用常用的功能模块;由于具有稳定的API,可以通过属性操作来扩展支持新增加的手机相机芯片及新的属性。
Claims (11)
1.一种手机相机芯片的封装系统,该封装系统包括用于驱动手机相机芯片的若干驱动模块及执行应用操作的应用层模块,其特征在于,所述封装系统还包括设置在驱动模块和应用层模块之间并向应用层模块提供稳定的应用程序接口的接口模块,所述接口模块根据应用层模块的调用来调用相应驱动模块完成相应的应用操作,所述接口模块进一步包括:属性模块,存放属性,并向应用层模块提供应用程序接口用于属性操作,且通过驱动模块对手机相机芯片产生作用的原子操作;功能模块,存放功能,并向应用层模块提供应用程序接口用于功能操作,且所述功能是由若干个属性共同影响而对手机相机芯片产生原始功能操作。
2.如权利要求1所述的手机相机芯片的封装系统,其特征在于,所述应用层模块的功能操作包括图像预览、图像抓拍及图像回放;而应用层模块的属性操作包括得到属性值、设置属性值、注册属性及取消属性。
3.如权利要求1所述的手机相机芯片的封装系统,其特征在于,所述属性模块包括若干用于存储属性的哈希链表,且每个哈希链表对应一个手机相机芯片的驱动模块。
4.如权利要求3所述的手机相机芯片的封装系统,其特征在于,每个哈希链表设置一个宏标志用于标识对应的手机相机芯片的驱动模块。
5.如权利要求3所述的手机相机芯片的封装系统,其特征在于,所述哈希链表包括若干属性节点,每个属性节点对应一个具体属性。
6.如权利要求5所述的手机相机芯片的封装系统,其特征在于,每个属性节点数据结构:
属性值,由接口模块定义用于约束应用层模块的调用和驱动模块的设置;
功能标志,用于标识该属性影响的功能;
属性名称,用于属性节点在哈希链表中的定位;
属性操作函数模块,由驱动模块提供,根据属性值对手机相机芯片的寄存器进行置位;
链接节点,与自身链接的下一个属性节点。
7.如权利要求6所述的手机相机芯片的封装系统,其特征在于,所述哈希链表中的属性节点按照属性名称的开头字母排列。
8.一种手机相机芯片的封装方法,其特征在于,该封装方法将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口给应用层模块,所述接口模块进一步包括:属性模块,存放属性,并向应用层模块提供应用程序接口用于属性操作,且通过驱动模块对手机相机芯片产生作用的原子操作;功能模块,存放功能,并向应用层模块提供应用程序接口用于功能操作,且所述功能是由若干个属性共同影响而对手机相机芯片产生原始功能操作。
9.如权利要求8所述的手机相机芯片的封装方法,其特征在于,在封装结束时回收内存。
10.如权利要求8所述的手机相机芯片的封装方法,其特征在于,该封装方法用于增加新的属性时,进一步包括如下步骤:
应用层模块进行注册属性的属性操作;
接口模块在哈希链表中增加新的属性节点;
调用功能模块,属性模块根据新的属性节点的属性值,调用驱动模块对寄存器进行置位;
重新封装,将接口模块和若干个手机相机芯片的驱动模块进行集成,仅提供应用程序接口给应用层模块。
11.如权利要求8所述的手机相机芯片的封装方法,其特征在于,该封装方法用于更换手机相机芯片时,进一步包括如下步骤:
属性模块链接到对应手机相机芯片的哈希链表;
初始化该哈希链表;
根据新的手机相机芯片,对新的驱动模块进行封装;
调用功能模块,属性模块根据新的属性节点的属性值,调用驱动模块对寄存器进行置位。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100060780A CN1293777C (zh) | 2004-02-27 | 2004-02-27 | 手机相机芯片的封装系统及封装方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100060780A CN1293777C (zh) | 2004-02-27 | 2004-02-27 | 手机相机芯片的封装系统及封装方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1662082A CN1662082A (zh) | 2005-08-31 |
CN1293777C true CN1293777C (zh) | 2007-01-03 |
Family
ID=35011110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100060780A Expired - Fee Related CN1293777C (zh) | 2004-02-27 | 2004-02-27 | 手机相机芯片的封装系统及封装方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1293777C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101287012B (zh) * | 2008-05-26 | 2011-03-30 | 德信智能手机技术(北京)有限公司 | 一种无线接口层网络服务的方法及装置 |
CN101882186A (zh) * | 2010-06-13 | 2010-11-10 | 深圳市紫云鑫软件技术有限公司 | 古兰经应用方法及系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999019797A1 (en) * | 1997-10-09 | 1999-04-22 | Ericsson Inc. | Application wrapper methods and systems |
US20030101445A1 (en) * | 2001-10-31 | 2003-05-29 | Seiko Epson Corporation | Dynamic class packaging |
-
2004
- 2004-02-27 CN CNB2004100060780A patent/CN1293777C/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999019797A1 (en) * | 1997-10-09 | 1999-04-22 | Ericsson Inc. | Application wrapper methods and systems |
US20030101445A1 (en) * | 2001-10-31 | 2003-05-29 | Seiko Epson Corporation | Dynamic class packaging |
Also Published As
Publication number | Publication date |
---|---|
CN1662082A (zh) | 2005-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100337235C (zh) | 访问数据库的方法及装置 | |
CN1253831C (zh) | 用于产生图形数据的直观表示和数字文件处理的系统和方法 | |
CN1142482C (zh) | 控制普及计算设备应用程序/优选的方法和系统 | |
CN1801124A (zh) | 采用照相手机作为计算机摄像头获取视频数据的方法 | |
CN102054285A (zh) | 在线动态图像编辑系统 | |
CN1670708A (zh) | 一种计算机日志的管理方法 | |
CN1298503A (zh) | 分布式系统中的动态查找服务 | |
CN1933425A (zh) | 实现设备访问接口的模块和方法、设备访问系统和方法 | |
CN1881189A (zh) | 一种电脑接收带摄像头手机输入视频数据的方法及系统 | |
CN1257455C (zh) | 进程间调用门技术 | |
CN1617496A (zh) | 下一代网络终端自动升级配置的方法 | |
CN1940845A (zh) | 内容编辑器及使用该内容编辑器编辑内容的方法 | |
CN1293777C (zh) | 手机相机芯片的封装系统及封装方法 | |
CN1764187A (zh) | 用于在操作系统中的应用之间的套接字通信的设备和方法 | |
CN1949732A (zh) | 网络社区与搜索的结合的方法以及系统 | |
CN1633640A (zh) | 移动多媒体引擎 | |
CN1786902A (zh) | 一种图形用户界面及其生成方法 | |
CN1878278A (zh) | 进行视频处理的装置和方法 | |
CN1252995C (zh) | 图像处理设备及其方法 | |
CN1300981C (zh) | 一种移动数据业务的内容管理系统及其实现方法 | |
CN1808369A (zh) | 打印方法和设备、打印控制方法和多媒体设备 | |
CN101075200A (zh) | 执行任务的设备和方法 | |
CN1913518A (zh) | 网络显示设备及其控制方法 | |
CN1741018A (zh) | Http网页动态输出的方法和系统 | |
CN1142476C (zh) | 一种功能键自行设定的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070103 Termination date: 20210227 |