Hello,
We are trying to use the IPU.IC for combining BG and FG.
We assume UYVY(BT.601) from BG and RGB565 from FG combined in the IC then output YUY2(BT.601).
The colorkey and global alpha value set to blend FG and BG but output looks corrupt.
We can see vertical stripe on screen and every odd(2nd) Y seemed always having wrong value.
For instance, in the data, we can see:
BG(UYVY): 80h 10h 80h 10h
FG(RGB565): 00h 00h 00h 00h
alpha is 0xff
result(YUY2): 10h 80h 00h 80h (our expectation is 0x10801080)
Do you have any ideas to fix this(2nd Y)?
Thanks.
Hi torus1000,
This option is configurable on the DP Common Configuration Sync Flow Register (Section 37 of the i.MX 6Dual/6Quad Applications Processor Reference Manual) on bit 11. You can actually change from using the full 0-255 range or using the 16-235 standard as you may see fit.
Each IPU can combine 40Mpixel/second so we have 80Mpixels/second tops when combining using both IPUs. Vivante GPU 2D engine can handle up to 117Mpixels/second. Also supports conversions in YUV to RGB Conversion:
YUV data can be converted into 8-bit per component RGB format at the output of the cache only. Once converted, there is no way back to YUV format. GPU supports BT.
601 and BT. 709 YUV to RGB color conversion standards.
In BT. 601, the YUV to RGB conversion is done using the following approximation:
16 ≤ Y ≤ 235
16 ≤ U ≤ 240
16 ≤ V ≤ 240
A = Y – 16
B = U – 128
C = V – 128
R = clip(( 298*A + 410*C + 128) >> 8)
G = clip((298*A – 101*B – 209*C + 128) >> 8)
B = clip((298*A + 519*B + 128) >> 8)
The Y, U and V components are clamped prior to the conversion.
Y is clamped between 16 and 235, inclusively.
U and V are clamped between 16 and 240, inclusively.
Regards