The predecimation process consists of downscaling an image by fetching only the necessary pixels out of the memory. Vertical and horizontal predecimation are possible:
- Vertical predecimation: The picture stored in memory can be predecimated vertically by skipping lines. Burst mode is used to fetch the data when skipping lines. Only the lines that will be used by the DISPC are fetched from memory; the other lines are skipped. The DMA engine sends requests only for the useful lines using 1D burst. The base address indicates the first valid pixel to fetch from memory. The number of lines to skip is set in the ROW_INC and ROW_INC_UV registers (see Section 12.6.3.6.1, DISPC DMA Addressing and Bursts).
- Horizontal predecimation: When fetching data from memory, it is possible to skip 1 out of 2 pixels, up to 1 of ouf 2047 pixels, by setting the PIXEL_INC register (see Section 12.6.3.6.1, DISPC DMA Addressing and Bursts) to the number of pixels to skip (n), multiplied by the size of a pixel (in bytes), +1. The condition to generate a burst is that there is at least one useful pixel per 128-bit OCP request. Therefore, when the pixels are 16/32-bit, the maximum number of pixels that can be skipped is 8/4. If PixelWidthInBytes + BytesToSkip is greater than 16, then the programmed burst is changed into single request.
No decimation is supported when the input format is 1, 2, 4, or 8-bit BITMAP.
For RGB and YUV420 data formats, each pixel data container in memory holds 1 pixel. Thus, when configuring the PIXEL_INC register, the value of n equals the number of pixels to skip:
- For RGB format, one pixel data container = 32 bits = 1 pixel
- For YUV format:
- One Y pixel data container = 8 bits = 1 pixel
- One UV pixel data container = 16 bits = 1 pixel
For YUV422 format, each 32-bit pixel data container holds the Luma components for 2 pixels, and the Chrominance component of 1 pixel (see Figure 12-313). Therefore, for the valid values of the PIXELINC bit field in the case of the following YUV422 format, caution must be taken because n equals the number of pixel data containers to skip, and not the number of pixels:
- For n = 1, PIXELINC = 5
- For n = 2, PIXELINC = 9
- For n = 3, PIXELINC = 13
- For n = 4, PIXELINC = 17, etc.