Alpha test on iMX6Q

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Alpha test on iMX6Q

5,158 Views
hongdong_chu
NXP Employee
NXP Employee

There are some test cases used to show alpha effect in previous unit_tests, but it is not found in latest Linux BSP release. So I prepare a simple test code to perform colorkey, global alpha, local alpha or alpha in pixel option for video combining, it could be useful when customer wants to see the effect.

I have checked test code on MX6Q ARM2 board and Linux release package is L3.0.15_12.05.01_ER_source.tar.gz.

Test based on the following assumptions:

1. Video combining is performed by the DP, BG video --> /dev/fb0, FG UI --> /dev/fb1

2. Panel resolution is 1024x768

 

Here are test steps:

1. Play a video or a picture on /dev/fb0.

2. Use fb_setup to setup fb1.

./fb_setup

It will fill pixel value in frame buffer and alpha value in alpha buffer as below.

Frame buffer in RGBA mode:

for (i = 0; i < fb_var.yres; i++)

{

     for (j = 0; j < fb_var.xres; j++)

     {

          if (i < fb_var.yres / 4)

               pbuf[i * screen_width + j] = 0xFF000080;       //Red pixel with alpha value 0x80 in first region

          else if (i < fb_var.yres / 2)

               pbuf[i * screen_width + j] = 0x00FF00FF;       //Green pixel opaque in second region

          else if (i < fb_var.yres * 3 / 4)

               pbuf[i * screen_width + j] = 0x0000FF00;       //Blue pixel transparent in third region

          else

               pbuf[i * screen_width + j] = 0xFFFFFFFF;     //White pixel opaque in fourth region

     }

}

Alpha buffer:

{

     memset(alpbuf, 0xFF, alp_size/4);                          //Alpha value is 0xFF in first region

     memset(alpbuf+alp_size/4, 0xAA, alp_size/4);         //Alpha value is 0xAA in second region

     memset(alpbuf+alp_size/2, 0x80, alp_size/4);          //Alpha value is 0x80 in third region

     memset(alpbuf+alp_size*3/4, 0x55, alp_size/4);       //Alpha value is 0x55 in fourth region

}

3. Use alpha_test to check colorkey, global alpha, local alpha and alpha in pixel effect.

colorkey on:      ./alpha_test colorkey_on <colorkey value>     //colorkey value, such as 0xFF0000 for red

colorkey off:      ./alpha_test colorkey_off

global alpha:     ./alpha_test alpha_global <alpha value>          //alpha value, such as 0x80

local alpha:      ./alpha_test alpha_local         //alpha effect is accordant with alpha buffer set in step 2

alpha in pixel:  ./alpha_test alpha_pixel         //alpha effect is accordant with alpha value in pixel set in step 2

alpha off:         ./alpha_test alpha_off

Original Attachment has been moved to: fb_setup.zip

Original Attachment has been moved to: alpha_test.zip

Labels (2)
6 Replies

1,987 Views
ericbeaudoin
Contributor II

Hi,

     I do some testing on the " buffer and alpha value in alpha buffer" feature. There is a strange behavior, it look like the content of the buffer is not a ALPHA coefficent, when we set all the content of the Alpha buffer to 0xff, it look like the background is merged with a blue color, when the alpha value is set to a value near of 0, I saw my backgorund, but it look like the background is modulated with a yellow color????

I also try the local alpha (alpha included in the frame buffer buffer image) everything work properly on this way.

0 Kudos
Reply

1,987 Views
Tarek
Senior Contributor I

Can you please provide the source code for the examples?

Thanks,

Tarek

0 Kudos
Reply

1,987 Views
hongdong_chu
NXP Employee
NXP Employee

Attached

0 Kudos
Reply

1,987 Views
Tarek
Senior Contributor I

Thanks for the source code. But this example is not using the IPU device /dev/mxc_ipu.

Can you please provide an example that uses the IPU overlay feature?

I need to do scaling and overlaying at the same time.

Thanks,

Tarek

0 Kudos
Reply

1,987 Views
hongdong_chu
NXP Employee
NXP Employee

You can check unit tests in realease code.

./ltib -m prep -p imx-test

ltib/rpm/BUILD/imx-test-xx.xx.xx/test/mxc_ipudev_test shows how to use IPU for overlay.

0 Kudos
Reply

1,987 Views
Tarek
Senior Contributor I

Yes, I've seen the example. when I enabled the overlay by setting overlay_en=1 in ipudev_config_file it doesn't work!

The IPU_CHECK_TASK returns IPU_CHECK_ERR_OV_OUT_NO_FIT !

In my application I need to control the BG and FG dimensions independently. For example I need to display video form 4 different cameras to the same screen at the same time each will be displayed in a separate window. In this situation the FG GUI dimensions shouldn't change.

Thanks,

Tarek

0 Kudos
Reply