缩放模块增加采样和减少采样,范围是在0.25倍到4倍之间。输入的来源可以是preview engine/CCD controller或者是SDRAM/ddram并且输出到SDRAM/ddram。缩放模块横向和纵向缩放是相互独立的。在两者之间有一个可选的边缘增强功能。处理流程如下图所示。 4.3.4.1输入输出接口 由(RSZ_CNT.INPSRC)控制输入来源。输入宽度(IN_SIZE.HORZ)至少为32个像素。
4.3.4.1.1 Preview Engine/CCD Controller输入模式 在Preview Engine/CCD Controller模式下,硬件信号被定义为输入帧。水平起始字节(IN_START.HORZ_ST)和垂直起始线(IN_START.VERT_ST) 定义为输入图像的左上角的起始像素(通过水平和垂直同步信号)。在in_size寄存器输入宽度和高度指定确切的输入范围(相对于起始像素)需要生成指定的宽度/高度输出帧。必须确保由in_start和in_size寄存器中指定的输入大小小于或等于输出的预览引擎或CCD控制;否则不正确的硬件操作可能会发生。sdr_inadd和sdr_inoff必须设定为0。两个输入源只能有一个是使能的。如果两个同时使能,CCD控制器将优先控制其接口。如果输入的是从CCD控制器,然后对CCD控制器的输出必须在YUV422格式(resizer不支持调整原始数据从CCD控制器)。
4.3.4.1.2 SDRAM输入模式 在这个模式下,SDR_INADD指向有像素的32位对齐的SDRAM的地址。水平起始像素(IN_START.HORZ_ST)定义为一个32位对齐的起始像素内。IN_START.HORZ_ST在YUV422模式下被限制在0-15个像素,RGB模式限制在0-31个像素。SDR_INOFF寄存器指定的输入数据行之间的偏移地址。在in_size寄存器输入宽度和高度指定确切的输入范围(相对于起始像素)需要生成指定的宽度/高度输出帧。
4.3.4.1.3 输入格式
当输入源来自SDRAM/DDRAM,缩放模块能够被配置为色分离(8位/像素)由rsz_cnt.inptyp参数设置。在色分离模式只有一个颜色分量的大小可以改变一次。例如为了调整所有的色彩(Y, Cb, and Cr) 在内存中的一个颜色分开的图像,三个单独的调整大小操作必须设置和执行。当输入源不是从SDRAM /驱动器,然后rsz_cnt.inptyp参数必须被设置为YUV422颜色交错(16位/像素)。
4.3.4.1.4 输出接口
在输入模式,该out_size寄存器指定输出的宽度/高度,sdr_outadd寄存器指向输出像素(左上角)SDRAM的地址,和sdr_outoff寄存器指定SDRAM地址偏移输出行的开始之间。缩放的输出总是SDRAM。
注意,sdr_inadd,sdr_outadd,sdr_inoff,和sdr_outoff都需要32字节对齐;的字节地址下5位假设为零。 输出宽度限制:输出宽度(OUT_SIZE.HORZ)至少为16个像素,由于内存大小的限制,如果缩放比率在0.5倍-4倍(RSZ_CNT.VRSZ ≤ 512)输出宽度(OUT_SIZE.HORZ)不能超过1280个像素,和在25× to 0.5× (RSZ_CNT.VRSZ > 512)输出像素不能超过640个像素。
4.3.4.2 水平和垂直缩放 缩放模块在增样或减采样在水平方向和垂直方向的采样图像数据的能力相互独立Z和vrsz)。HRSZ (RSZ_CNT.HRSZ) and VRSZ (RSZ_CNT.VRSZ)参数范围为64-1024来给定重采样的范围从0.25× to 4× (256/RSZ). 缩放模块采用相同的重采样算法在水平和垂直方向上。调整大小/重采样算法使用一个可编程的多采样率转换器(重采样)。 一个典型的多相实现,L被使用。在缩放模块 ,然而固定相数8个阶段的调整范围为0.5倍~ 4倍(RSZ = 64 ~512)或4个阶段的调整范围为0.25倍~ 0.5倍(RSZ = 513 ~ 1024)。在这种方式下,增采样值L被固定为4,减采样值M等于(P × RSZ)/256,P是相数。缩放功能被描述为如图所示 为了解决非整数抽样比例,这可以更好的模式为下图。这里的插值输出滤波器上采样和复制256 / P次才能降采样得到的因素。 这执行以为这缩放比例在256/RSZ次可获得输入大小尺寸。然而,每个输出的像素和周围最近插入的输出1/P输入像素的精度(这什么鬼看不懂)更多细节看下面4.3.4.4的重采样算法。多相滤波器系数可编程比任何用户指定的滤波器可以实现。建议系数集被选择来实现一个采样率转换器,低通滤波器被用于以下截止频率:
如果这种多相重采样方法被使用,那么所有的采样因子可以共享同一组系数。然而,不同的系数设置时需要改变之间的相位和相模式8-phase and 4-phase,并有在减采样中。因素也不同。
有32个可编程系数可用于水平方向(HFILT10–HFILT3130registers)和另一个32个可编程系数为垂直方向(VFILT10–VFILT3130 registers). 32可编程系数设置为4-taps和8-phases的缩放范围为0.5× ~4× (RSZ = 64 ~ 512)或者7-taps and 4-phases缩放范围为0.25× ~ 0.5× (RSZ = 513 ~ 1024).下表显示32个滤波系数的排列。 系数的索引方案是面向dot-product(or inner product),而不是脉冲响应。换句话说,第一个数据点是促进一个特定的输出与tap0相关的系数相乘,最后数据点乘以tap3的系数或用tap6(取决于4-tap或7-tap模式)。正常光栅扫描顺序是使用左上角得到的(0,0)坐标。像素0是最左边的列像素水平的大小,和最上面的行像素垂直缩放。图36显示的输入像素的排列例抽头系数用一个简单的1:1大小的情况下(4模式)。在这个例子中,只有一个相位的输出是必要的。 上图同时也介绍了当所有的taps与实际的像素对齐如何去计算首次输出为了计算每一行/列的最后几个像素,过滤器需要更多的输入像素比下面的公式计算:
例如,在输入大小为X和输出大小为Y,,需要三个额外的输入像素来生成正确的输出像素数:X = Y × 256/256 + 3(为过滤所需的额外像素)
实际的输入尺寸计算也取决于算法中的起始相位和周围的因素。表25列出了实际输入大小的计算,是从第4.3.4.4算法描述。输入的宽度和高度参数必须严格按照这些方程进行编程,否则,可能会出现错误的硬件操作。
水平和垂直的起始阶段可以进行编程,在RSZ_CNT.HSTPH和RSZ_CNT.VSTPH域,分别。色度数据的大小可以用双线性插值,或相同的算法(RSZ_CNT.CBILIN)。在这些领域中使用的算法的更多信息,请参见第4.3.4.4。 |