
1.本发明涉及数字图像处理技术领域,尤其涉及一种图像旋转数据处理装置及显示终端。
背景技术:2.在车载多媒体系统以及医疗监控摄像等领域中,数字图像的应用越来越广泛。现今图像显示中,显示屏往往需要横屏竖用或竖屏横用,这要求显示驱动芯片中必须支持旋转功能。
3.现有的技术方案中,在低成本的单显示芯片中,通常不带帧缓存,没有集成高性能的中央处理器cpu,一般仅内置mcu内核,这类芯片很少支持旋转等功能。因此,只能在高成本的大系统中利用高性能的cpu进行软件的旋转或利用专门的gpu进行旋转,且gpu等功能模块通常都是挂在axi等总线上,调用gpu等进行此类旋转处理必然会带来较大的功耗、较高的数据传输量、并带来成本的不可承受。
4.在低成本的单显示芯片的小系统上实现高效的图像旋转操作是当前亟待解决的问题。
技术实现要素:5.有鉴于此,本发明所要解决的技术问题是提供一种图像旋转数据处理装置及显示终端用于解决现有技术的不足。
6.为达到上述目的,本发明采用如下技术方案:
7.本发明实施例提供了一种图像旋转数据处理装置,包括:图像前处理单元、图像旋转数据处理单元、存储控制单元、存储器以及图像旋转数据还原单元;
8.所述图像前处理单元用于将源图像解码出带行场有效时序信号的ycbcr444格式数据;
9.所述图像旋转数据处理单元根据工作模式将接收到的ycbcr444格式图像数据按照预设格式进行行缓存,并将处理后的数据发送到所述存储控制单元进行帧缓存以实现旋转处理;所述工作模式包括:ycbcr422正常模式、ycbcr422旋转模式、ycbcr420正常模式以及ycbcr420旋转模式;
10.所述存储控制单元,用于接收所述图像旋转数据处理单元的图像数据,根据相应的工作模式,将旋转模式或正常模式的数据写到存储器中,同时进行帧率转换,将存储器中旋转或非旋转的数据读出,写到所述图像旋转数据还原单元,
11.存储器,用于缓存实时处理后的旋转或正常模式的每帧图像数据;
12.图像旋转数据还原单元,用于接收存储控制单元从帧存储器中读出的图像数据,并将之还原为通用的图像后处理单元能接收的ycbcr422数据格式。
13.进一步地,所述图像旋转数据处理单元包括:第一控制单元、图像旋转数据输入缓存处理单元、n行缓存单元和输出接口单元;
14.所述第一控制单元用于接收输入的行场有效时序信号,根据输入时序产生将输入的图像数据y、cb、cr写到n行缓存单元的控制信号,同时根据输入时序控制输出接口单元向存储控制单元发出写帧缓存的请求信号;控制单元产生的像素计数器和行计数器用于控制数据的处理和存储以及与存储控制单元的数据通信;
15.图像旋转数据输入缓存处理单元,用于根据工作模式将接收的ycbcr444格式的图像数据转化为ycbcr422或ycbcr420格式;
16.n行缓存单元,用于缓存旋转处理后写到帧缓存前的图像数据;
17.输出接口单元,根据第一控制单元的时序信息,判断n行缓存单元的状态,当有处理好的旋转数据,则向存储控制单元发出写帧缓存的请求,当存储控制单元回应请求后,将n行缓存单元的图像数据取出并传送到存储控制单元。
18.进一步地,当工作模式为ycbcr422正常模式时,所述n行缓存单元缓存的数据按y分量都放在高字节,cb分量放在奇数列的低字节,cr放在偶数列的低字节排列;
19.当工作模式为ycbcr422旋转模式时,所述n行缓存单元缓存的数据按y分量都放在高字节,cr分量放在奇数列的低字节,cb放在偶数列的低字节排列;
20.当工作模式为ycbcr420正常模式时,所述n行缓存单元缓存的数据按每3列一个编组进行重复;y分量放在第1列的高字节、第2列的高低字节以及第3列的低字节,cb分量放在第1列奇数列的低字节以及第3列奇数列的高字节,cr分量放在第1列偶数列的低字节以及第3列奇偶数列的高字节;
21.当工作模式为ycbcr420旋转模式时,所述n行缓存单元缓存的数据按每3列一个编组进行重复;y分量放在第1列的高字节、第2列的高低字节以及第3列的低字节,cr分量放在第1列奇数列的低字节以及第3列奇数列的高字节,cb分量放在第1列偶数列的低字节以及第3列奇偶数列的高字节。
22.进一步地,所述n行缓存的行缓存选通由控制单元的行计数器wlcnt决定,设n=2
n
,n为自然数,则当wlcnt[n-1:0]等于0时,将处理后的数据写入第1条行缓存,当wlcnt[n-1:0]等于1时写入第2条,依此类推,当wlcnt[n-1:0]等于n-1时则写入第n条。
[0023]
进一步地,所述工作模式为正常模式时,取所述n行缓存单元的前4行,每2行缓存拼接成一个新的行缓存从而构成2条长度增大的缓存分别用于读数据和写数据;所述n行缓存单元的第5至第n行缓存时钟用门控关闭进入低功耗状态。
[0024]
进一步地,所述图像旋转数据还原单元包括:第二控制单元,输入接口单元、4行缓存单元以及图像旋转数据格式还原单元;
[0025]
所述第二控制单元用于根据显示屏所需的时序,产生读取存储器中帧图像数据的信号,并根据时序控制将输入接口单元接收到的数据写入到4行缓存单元中;
[0026]
所述输入接口单元,用于根据第二控制单元的控制将输入数据写到4行缓存单元中;
[0027]
4行缓存单元,用于缓存存储器中读出的每行的图像数据以便给图像旋转数据格式还原单元应用;
[0028]
图像旋转数据格式还原单元,用于将4行缓存单元中的图像数据还原处理成图像后处理单元可以处理的ycbcr422格式。
[0029]
进一步地,所述图像旋转数据格式还原单元将ycbcr420数据格式拼接转换为
ycbcr422格式如下:
[0030]
当工作模式为ycbcr420正常模式时,每次选取两行数据,将第一行的y分量与第一行和第二行的cb、cr分量按照ycbcr422格式拼接作为待输出数据的一行数据;将第二行的y分量与所述第一行和第二行的cb、cr分量按照ycbcr422格式拼接作为待输出数据的另一行数据;
[0031]
当工作模式为ycbcr420旋转模式时,每次选取三行数据,将第一行的数据作为待输出数据的第1行数据;将第二行的数据高字节的y分量与将第一行的数据低字节的cb、cr分量按照ycbcr422格式拼接作为待输出数据的第2行数据;将第二行的数据低字节的y分量与将第三行的数据高字节的cb、cr分量按照ycbcr422格式拼接作为待输出数据的第3行数据;将第三行的数据的高低字节互换作为待输出数据的第4行数据。
[0032]
进一步地,所述存储控制单元向所述存储器写入或读出每行数据时,每一行的读地址和写地址都是按照存储器的页的倍数进行递加。
[0033]
进一步地,还包括:图像后处理单元,所述图像后处理单元用于将接收所述图像旋转数据还原单元发送的数据进行图像的缩放处理以及图像增强处理,并将处理好的数据发送至终端显示。
[0034]
本发明实施例还提供一种显示装置,包括以上所述的图像旋转数据处理装置。
[0035]
与现有技术相比,本发明具有如下有益效果:本发明提供的图像旋转数据处理装置不需要高成本的集成arm cpu大系统,成本低廉。
附图说明
[0036]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]
图1是本发明一种高性能图像旋转数据处理装置的总体结构图;
[0038]
图2是本发明图像旋转数据处理单元结构图;
[0039]
图3是本发明图像旋转数据还原单元结构图;
[0040]
图4是ycbcr422正常模式下n行缓存单元数据存储示意图;
[0041]
图5是ycbcr422正常模式下4行缓存单元数据存储示意图;
[0042]
图6是ycbcr422旋转90度时n行缓存单元数据存储示意图;
[0043]
图7是ycbcr422旋转90度时帧缓存中数据存储示意图;
[0044]
图8是ycbcr422旋转90度时4行缓存单元中数据存储示意图;
[0045]
图9是ycbcr420正常模式下n行缓存单元数据存储示意图;
[0046]
图10是ycbcr420正常模式下4行缓存单元输出数据示意图;
[0047]
图11是ycbcr420旋转90度时n行缓存单元数据存储示意图;
[0048]
图12是ycbcr420旋转90度时帧缓存中数据存储示意图;
[0049]
图13是ycbcr420旋转90度时4行缓存单元输出数据示意图。
具体实施方式
[0050]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0051]
如图1所示,为本发明实施例提供一种图像旋转数据处理装置的结构图。本装置主要包括:图像前处理单元101、图像旋转数据处理单元102、存储控制单元103、存储器104、图像旋转数据还原单元105。
[0052]
图像前处理单元101用于将源图像解码出带行场有效时序信号的ycbcr444格式数据。行场有效时序信号用于作为图像旋转数据处理单元的时序控制信号。
[0053]
图像前处理单元101接收各种输入格式的图像数据,例如itu656、itu601、以及bt1120等,进行图像解码得到带行场有效时序信号的ycbcr444格式数据。图像前处理单元101还用于将源图像进行缩放处理。例如:将源图像缩放到显示屏的尺寸或显示屏旋转前的尺寸大小。图像前处理单元101还用于进行降噪、锐化、亮度、对比度调整等图像增强处理。最终统一输出ycbcr444格式的数据给图像旋转数据处理单元。
[0054]
图像旋转数据处理单元102根据工作模式将接收到的ycbcr444格式图像数据按照预设格式进行行缓存,并将处理后的数据发送到所述存储控制单元进行帧缓存以实现旋转处理;所述工作模式包括:ycbcr422正常模式、ycbcr422旋转模式、ycbcr420正常模式以及ycbcr420旋转模式。
[0055]
如图2所示,图像旋转数据处理单元102包括:第一控制单元1021、图像旋转数据输入缓存处理单元1022、n行缓存单元1023和输出接口单元1024。
[0056]
第一控制单元1021用于接收输入的行场有效时序信号hs行和vs场,根据输入时序产生将输入的图像数据y、cb、cr写到n行缓存单元的控制信号,同时根据输入时序控制输出接口单元向存储控制单元发出写帧缓存的请求信号。具体地,控制单元根据hs产生一个像素计数器wpcnt,初始时wpcnt为0,当hs为1后,wpcnt每个像素时钟自动加1,当hs由1变为0时,wpcnt清零0。同时,控制单元根据vs和hs产生一个行计数器wlcnt,初始时wlcnt为0,当vs为1时,wlcnt在每个hs由1变为0时自动加1,当vs由1变为0时,wlcnt清零0。控制单元产生的两个计数器能用于控制数据的处理和存储以及与存储控制单元的数据通信。
[0057]
图像旋转数据输入缓存处理单元1022,本单元实施例中接收的是ycbcr444格式的图像数据,而在小系统中为了减轻帧存储的传输带宽以及减小行缓存单元的资源,可设计经图像处理后的数据格式为ycbcr422或ycbcr420,这样不必三个分量的颜色数据全部都进行存储,因为人眼对色度信息不如亮度信息敏感,图像质量在经过本单元处理后并不会降低。图像旋转数据输入缓存处理单元1022所要处理的工作模式分为4种,可用一变量rotate_mode区分不同工作模式,rotate_mode为2比特软件可配控制信号,rotate_mode值为0到3,所代表数据处理模式如下:rotate_mode值为0、1、2、3时分别对应ycbcr422正常模式、ycbcr422旋转模式、ycbcr420正常模式以及ycbcr420旋转模式。
[0058]
当rotate_mode为0时,工作模式为ycbcr422正常模式,n行缓存单元1023缓存的数据按y分量都放在高字节,cb分量放在奇数列的低字节,cr放在偶数列的低字节排列;如图4所示,是ycbcr422正常模式下n行缓存单元数据存储示意图,亮度存储于高字节din_h,色度
存储于低字节din_l。通过wpcnt最低位为0或者1来区分奇偶列。当wpcnt的比特0等于0时,将y存储于寄存器y_r中,将cb存储于寄存器cb_r中,同时将y_r选放到缓存器输入的高字节din_h,cr_r选放到低字节din_l中。当wpcnt的比特0等于1时,将y存储于寄存器y_r中,将cr存储于寄存器cr_r中,同时将y_r选放到缓存器输入的高字节din_h,cb_r选放到低字节din_l中。
[0059]
当rotate_mode等于1时,工作模式为ycbcr422旋转模式,n行缓存单元1023缓存的数据按y分量都放在高字节,cr分量放在奇数列的低字节,cb放在偶数列的低字节排列;如图6所示,是ycbcr422旋转90度时n行缓存单元数据存储示意图,亮度存储于高字节din_h,色度存储于低字节din_l。wlcnt最低位为0或者1来区分奇偶行。当wlcnt的比特0等于0时,将y存储于寄存器y_r中,将cr存储于寄存器cr_r中,同时将y_r选放到缓存器输入的高字节din_h,cr_r选放到低字节din_l中。当wlcnt的比特0等于1时,将y存储于寄存器y_r中,将cb存储于寄存器cb_r中,同时将y_r选放到缓存器输入的高字节din_h,cb_r选放到低字节din_l中。旋转270度时,方法与90度类似,不同之处在于将cb和cr互换即可。
[0060]
当rotate_mode等于2时,工作模式为ycbcr420正常模式,n行缓存单元缓存1023的数据按每3列一个编组进行重复;y分量放在第1列的高字节、第2列的高低字节以及第3列的低字节,cb分量放在第1列奇数列的低字节以及第3列奇数列的高字节,cr分量放在第1列偶数列的低字节以及第3列奇偶数列的高字节。如图9所示,是ycbcr420正常模式时n行缓存单元数据存储示意图,可以看出与ycbcr422的存储方式很明显不一样,不再是固定的亮度存储在高字节,色度存储于字节。为了节省存储空间以及提高数据的传输效率,本发明采用了特殊的ycbcr420数据存储方式,具体实现如下:
[0061]
当wpcnt[1:0]等于0时,将y存储到寄存器y_r中,cb存储到寄存器cb_r中,cr存储到寄存器cr_r中,当前拍写使能置为无效。
[0062]
当wpcnt[1:0]等于1时,将y存储到寄存器y_r中,同时将y_r中的值选通到din_h。若wlcnt[0]等于0,则将cb_r选通到din_l,若wlcnt[0]等于1,则将cr_r选通到din_l,当前拍写使能置为有效。
[0063]
当wpcnt[1:0]等于2时,将cb存储到寄存器cb_r中,cr存储到寄存器cr_r中。同时将y_r中的值选通到din_h,将当前输入y选通到din_l,当前拍写使能置为有效。
[0064]
当wpcnt[1:0]等于3时,若wlcnt[0]等于0,则将cb_r选通到din_h,若wlcnt[0]等于1,则将cr_r选通到din_h。将当前输入y选通到din_l,当前拍写使能置为有效。
[0065]
当rotate_mode等于3时,工作模式为ycbcr420旋转模式,n行缓存单元缓存1023缓存的数据按每3列一个编组进行重复;y分量放在第1列的高字节、第2列的高低字节以及第3列的低字节,cr分量放在第1列奇数列的低字节以及第3列奇数列的高字节,cb分量放在第1列偶数列的低字节以及第3列奇偶数列的高字节;如图11所示,是ycbcr420旋转90度时n行缓存单元数据存储示意图。可以看出,当为ycbcr420旋转90度时,n行缓存单元的数据存储与ycbcr420正常模式类似,不一样的地方在于只需要把cb和cr的处理交换即可。
[0066]
当wpcnt[1:0]等于0时,将y存储到寄存器y_r中,cb存储到寄存器cb_r中,cr存储到寄存器cr_r中,当前拍写使能置为无效。
[0067]
当wpcnt[1:0]等于1时,将y存储到寄存器y_r中,同时将y_r中的值选通到din_h。若wlcnt[0]等于0,则将cr_r选通到din_l,若wlcnt[0]等于1,则将cb_r选通到din_l,当前
拍写使能置为有效。
[0068]
当wpcnt[1:0]等于2时,将cb存储到寄存器cb_r中,cr存储到寄存器cr_r中。同时将y_r中的值选通到din_h,将当前输入y选通到din_l,当前拍写使能置为有效。
[0069]
当wpcnt[1:0]等于3时,若wlcnt[0]等于0,则将cr_r选通到din_h,若wlcnt[0]等于1,则将cb_r选通到din_h。将当前输入y选通到din_l,当前拍写使能置为有效。
[0070]
当为ycbcr420旋转270度时,将会用到行缓存镜像的功能,在rotate_mode等于2的基础上,把行缓存的存储进行镜像,同时din_h和din_l也进行互换即可。
[0071]
n行缓存的写地址nbufwaddr由hs延迟一拍的信号hs1触发产生,当hs1为0时,nbufwaddr等于addr_ini,当hs1为1时,nbufwaddr每个时钟自动加上步长step,其中addr_ini在非镜像操作时等于0,在镜像时和实际输入的水平图像大小hsize(例如,1280x720分辨率输入时,hsize等于1280)相关,当非镜像操作时进行正向存储,镜像操作处理时,进行反向存储。在镜像操作时具体关系为:当为ycbcr422处理时,addr_ini等于hsize-1;当为ycbcr420处理时,addr_ini等于hsize加上hsize左移1位,加完结果再右移2位,最后再减1,移位处理省掉了乘法运算,可节约逻辑资源。
[0072]
由于ycbcr420每4个像素点共有6个分量,而ycbcr422每4个像素点共有8个分量,ycbcr420为ycbcr422分量的3/4。移位运算中左移n位表示乘以2n。右移n位表示除以2n。3/4运算用移位表示为原数据加上原数数据左移1位后相加的结果再右移2位。
[0073]
n行缓存的行缓存选通由控制单元的行计数器wlcnt决定,设n=2
n
,n为自然数,则当wlcnt[n-1:0]等于0时,将处理后的数据写入第1条行缓存,当wlcnt[n-1:0]等于1时写入第2条
……
,依此类推,当wlcnt[n-1:0]等于n-1时则写入第n条,如此往复控制,即可简单有效地进行数据存储了。
[0074]
特别地,本发明n行缓存除了以上工作模式外,还针对非旋转的情况进行了改进,使得在非旋转的情况下可以支持更高的分辨率,同时又能降低n行缓存的功耗。当工作模式为正常模式时,例如:ycbcr422正常模式和ycbcr420正常模式;取n行缓存单元的前4行,每2行缓存拼接成一个新的行缓存从而构成2条长度增大的缓存分别用于读数据和写数据;n行缓存单元的第5至第n行缓存时钟用门控关闭进入低功耗状态。
[0075]
由于n条行缓存的长度设计好后都是固定的,而当n越大时,若每条缓存长度设计过大就会导致面积成倍地增加,这在注重成本的小系统显示芯片中是很难接受的。本发明的一个实施例中,行缓存的长度设计为1280,即旋转时的输入最大可以支持到1280x720的分辨率,如果不对行缓存进行改进,则正常模式时也只能支持1280x720的分辨率。由于正常模式时,只可能进行变帧等处理,不需要像旋转一样进行行列之间的转置处理,旋转数据处理单元只负责将连续输入的一行一行数据缓存后,通过输出接口单元发送到存储控制单元即可,这样在实现上其实只需要采用2行缓存的乒乓机制,一行写一行读,输出接口单元将读出的数据送到存储控制单元就能实现正常模式的数据处理了。鉴于本单元有n条行缓存,普通正常模式只需要乒乓的2行处理,为了改进装置,正常模式时本发明选用其中4条行缓存处理,具体实施为:选择第1、2条缓存拼接成新的一条缓存lbuf01,第3、4条缓存拼接成新的另一条缓存lbuf23,当wlcnt[0]等于0时,选通行缓存lbuf01,物理实现上,若写地址nbufwaddr小于1024时,写lbuf01中的lbuf0,而当nbufwaddr大于等于1024时写lbuf01中的lbuf1,实现上用nbufwaddr[10]判断即可,为0则写lbuf0,为1则写lbuf1,而lbuf0和lbuf1
的写地址都等于nbufwaddr的低10位,这样便可以用两条1280长度的行缓存拼成可以支持1920x1080分辨率的长度为2048的行缓存lbuf01了。同理,当wlcnt[0]等于1时,选通行缓存lbuf23,其具体实现过程与lbuf01原理一样,这样用lbuf01和lbuf23即可支持正常模式达到更高分辨率。同时,为了省电,正常模式时将第5条到第n条行缓存时钟用门控关掉进入低功耗状态。
[0076]
n行缓存单元1023,n行缓存单元由n条行缓存组成,n调行缓存都为单口的片上ram,用于缓存旋转处理后写到帧缓存前的图像数据。
[0077]
输出接口单元1024,根据第一控制单元1021的时序信息,判断n行缓存的状态,若有处理好的旋转数据,则向存储控制单元发出写帧缓存的请求,当存储控制单元回应请求后,将n行缓存单元的图像数据取出并传送到存储控制单元。
[0078]
具体地,旋转模式时,当wlcnt[n-2:0]等于0且hs由1变为0两个周期后,表明已有处理好的图像旋转数据,本单元发出写帧缓存的请求,请求响应后,若wlcnt[n-1]等于0,则读出第n/2+1到第n条缓存的内容,并进行行列转置拼成旋转的数据后,将数据rot_dat传输给存储控制单元,若wlcnt[n-1]等于1,则读出第1到第n/2条缓存的内容,并进行行列转置拼成旋转的数据后,将数据rot_dat传输给存储控制单元。
[0079]
正常模式时,当hs由1变为0两个周期后,表明已有处理好的一行图像数据,本单元发出写帧缓存的请求,请求响应后,若wlcnt[0]等于0,则读出行缓存lbuf23的内容,并将正常模式的数据nor_dat传输给存储控制单元;若wlcnt[0]等于1,则读出行缓存lbuf01的内容,并将数据nor_dat传输给存储控制单元。
[0080]
存储控制单元103,本单元接收图像旋转数据处理单元的图像数据,根据相应的工作模式,将旋转数据rot_dat或正常模式的数据nor_dat写到帧缓存的存储器104中,同时进行帧率转换,将帧存储器104中旋转或非旋转的数据读出,写到图像旋转数据还原单元,存储控制单元103往帧存储器104中写入或读出一行数据时,为了提高数据的传输效率,每一行的写地址和读地址都是按照存储器的页的倍数进行递加,具体地,假设当一帧存储的首地址设为0,存储器每一页占256个字地址,一个字为16比特,当输入一行长度为720的ycbcr422格式时,由于720个像素占据了2.8125个页,所以进位取整计算得每一行占3个页空间,这样计算地址的好处在于,每一行都是从新的一页首地址开始,可以最大限度地减小跨页访问存储器时的连续访问操作的切换,减少了切换控制信号的时间,能极大提高数据传输效率。
[0081]
存储器104,用于缓存实时处理后的旋转或正常模式的每帧图像数据。
[0082]
图像旋转数据还原单元105,接收存储控制单元从帧存储器104中读出的图像数据,并将之还原为通用的图像后处理单元能接收的ycbcr422数据格式。
[0083]
如图3所示,为图像旋转数据还原单元105的结构图,包括第二控制单元1051,输入接口单元1052、4行缓存单元1053以及图像旋转数据格式还原单元1054。
[0084]
第二控制单元1051,根据显示屏所需的时序hs_a和vs_a,产生读取存储器中帧图像数据的信号,并根据时序控制将输入接口单元接收到的数据rot_dat_a写入到4行缓存单元1053中。
[0085]
输入接口单元1052,接收rot_dat_a,并根据第二控制单元1051的控制将数据写到4行缓存单元1053中。
[0086]
4行缓存单元1053,用于缓存帧存储器104中读出的一行一行的图像数据以便给图像旋转数据格式还原单元1054应用。
[0087]
4行缓存单元输入的数据为从存储器104中读出的数据。4行缓存单元输出的数据为图像旋转数据格式还原单元1054进行ycbcr422格式处理后的数据。
[0088]
如图5所示,是ycbcr422正常模式下4行缓存单元数据存储示意图,可以看到正常模式时,由于只作帧率转换等功能,不作旋转,图像数据都是一行一行地存储在4行缓存单元中,数据排列与输入端类似,不同的是在一帧图像开始前要先进行图像的预取,填充行缓存待有效的hs_a和vs_a到来之后再连续输出。
[0089]
如图7、图8所示,分别是ycbcr422旋转90度时帧缓存中数据存储示意图以及4行缓存单元数据存储示意图,可以看出,第一条行缓存中的最后一个点其实为旋转前图像的第一个点,色度cb和cr分量经过旋转后已经是正常的ycbcr422的排列方式,由于不需要图像旋转数据格式还原单元1054对4行缓存单元存储的数据进行拼接转化处理,可以直接输出给后续的图像后处理模块使用。
[0090]
如图9所示,是ycbcr420正常模式下n行缓存单元数据存储示意图,而正常模式下,4行缓存单元的输入的数据存储格式与n行缓存单元数据存储一样。
[0091]
如图12所示,是ycbcr420旋转90度时帧缓存中数据存储示意图,实际上4行缓存单元的存储内容与之一样,只不过每4行会循环地写行缓存单元。
[0092]
图像旋转数据格式还原单元1054,主要负责将4行缓存单元中的图像数据还原处理成图像后处理单元可以处理的格式。如图4和图8所示,ycbcr422正常模式和旋转时4行缓存单元存储的数据已经是图像后处理单元可以接收的ycbcr422格式的图像数据,所示本单元只需要按照显示时序将4行缓存中的数据读出连续发送到图像后处理单元即可。
[0093]
当工作模式为ycbcr422正常模式时,所述4行缓存单元缓存输出的数据与所述n行缓存单元数据存储的数据排列方式相同;当工作模式为ycbcr422旋转模式时,所述4行缓存单元缓存输出的数据与所述n行缓存单元数据存储的数据进行90度旋转行列转置的数据排列方式相同。
[0094]
由于ycbcr420时,旋转数据的处理都是按照特殊的格式进行,所以要针对ycbcr420的情况作特殊的处理以满足图像后处理的格式需求。当工作模式为ycbcr420正常模式时,4行缓存单元缓存输出的数据的排列方式如下:每次选取所述n行缓存单元数据存储数据的两行,将第一行的y分量与所述第一行和第二行的cb、cr分量按照ycbcr422格式拼接作为所述4行缓存单元缓存的一行数据;将第二行的y分量与所述第一行和第二行的cb、cr分量按照ycbcr422格式拼接作为所述4行缓存单元缓存的另一行数据;如图10所示,是ycbcr420正常模式下4行缓存单元输出数据示意图,由图9和图10可知,4行缓存单元中,需要同时读出两行缓存的内容,将两行图像数据中的y和cb、cr按照ycbcr422的通用格式拼接,最后在连续输出。例如,y00和cb00本身组成一个字,将y01和下一行的cr10拼成一个字,y02和同一行后一个字的cb02拼成新的一个字,y03和下一行的cr12拼成新的一个字,4行缓存的第4个字开始处理方式和从第1个字开始相同,每4个字重复一样的处理方式直到一行结束,这样就完成了图像旋转数据还原单元第一行旋转后数据的还原。第二行数据的输出仍然用到4行缓存单元中的第一行和第二行的数据,y10和第一行的cb00拼成一个字,y11和当前行的cr10拼成新的一个字,y12和第一行的cb02拼成新的一个字,y13和当前行的cr12
拼成新的一个字,同第一个输出行一样,每4个字重复一样的处理方式直到一行结束。第三行、第四行的处理方式与第一行和第二行的相同,每两行进行一次循环直到一帧图像处理完成,这样便实现了图像旋转数据格式的还原。
[0095]
如图12和图13所示,分别是ycbcr420旋转时,4行缓存存储的内容以及还原单元需要输出的数据示意图。当工作模式为ycbcr420旋转模式时,所述4行缓存单元缓存输出的数据的排列方式如下:将所述n行缓存单元数据存储的数据进行90度旋转行列转置的数据;每次选取所述转置后数据存储数据的三行,将第一行的数据作为所述4行缓存单元缓存的第1行数据;将第二行的数据高字节的y分量与将第一行的数据低字节的cb、cr分量按照ycbcr422格式拼接作为所述4行缓存单元缓存的第2行数据;将第二行的数据低字节的y分量与将第三行的数据高字节的cb、cr分量按照ycbcr422格式拼接作为所述4行缓存单元缓存的第3行数据;将第三行的数据的高低字节互换作为所述4行缓存单元缓存的第4行数据。下面以4个点为例,可以看出,输出的第一行和存储的第一行内容完全一致,符合ycbcr422通用的格式,输出第二行时,将第二行的y31和第一行的cb30,y21和第一行的cr20,y11和第一行的cb10,y01和第一行的cr00分别拼成一个字输出第二行。输出第三行时,将第二行的y32和第三行的cb32,第二行的y22和第三行的cr22,第二行的y12和第三行的cb12,第二行的y02和第三行的cr02分别拼成一个字输出第三行。输出第四行时,实际上是输出行缓存单元中的第三行,并将第三行的数据高低字节交替后再组成新的一个字即可。可见,每三行存储的内容可以输出四行连续的还原格式后的数据,每三行进行一次循环,直到一帧结束即可实现旋转数据的格式还原处理了。
[0096]
图像旋转数据还原单元105配合前述的图像旋转数据处理单元102,可以很好地解决ycbcr420格式下数据存储带来的存储器带宽问题,可以提高图像数据的传输效率,在实时显示的小系统中具有重大意义。
[0097]
图像旋转数据处理装置还包括图像后处理单元106,图像后处理单元106接收图像旋转数据还原的数据,可以进行图像的缩放以及一些通常的图像增强处理,包括gamma校正以及抖动等,最后将处理好的数据送终端显示。
[0098]
本发明提供的图像旋转数据处理装置,使得在支持旋转显示处理的芯片中,能降低图像旋转过程中频繁地读写帧存储器的请求次数,从而提高存储带宽的利用率,显著提高数据传输的效率,从而能支持更高分辨率、更高刷新率的视频处理。通过n条行缓存的灵活控制,能降低旋转转置的处理对行缓存资源的大量消耗,提供正常模式时更大分辨率的支持能力和更低的功耗。存储控制单元根据页的倍数产生新的一行地址,提高了帧存储器的传输效率。本发明装置图像旋转数据格式还原单元,使得经过本发明处理的数据格式,可以输出适应后续图像处理模块的各种处理,兼容性较好。
[0099]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
[0100]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-only memory,rom)或随机存储记忆体(random access memory,ram)等。
[0101]
以上举较佳实施例,对本发明的目的、技术方案和优点进行了进一步详细说明,所应理解的是,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内,本发明所主张的权利范围应以发明申请范围所述为准,而非仅限于上述实施例。