Gstreamer and Xorg

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

Gstreamer and Xorg

Jump to solution
1,709 Views
williamtung
Contributor III

Hi,

My configuration is to output 2 LVDS on a solo board which means

                          +--------> IPU0 DP-BG : /dev/fb0 <----> /dev/video16

LVDS #0  -------+

                          +--------> IPU0 DP-FG : /dev/fb1 <-----> /dev/video17


LVDS #1      --------- IPU0 DC : /dev/fb2 <-----> /dev/video18

I'm running LXDE as my desktop on /dev/fb0. When I play video on /dev/vido17, it just overlaid on top of video16. There's no problem to get back to the desktop after video playback is done. However, if I put the video playback on either video16 or video18, the xwindow just lost the control of /dev/fb0 that results in no desktop after video playback. The link between fb0 and xwindow is broken. I can't get the xwindow unless I stop/start xserver again. I wonder if there is a way to prevent this happen. Any comments will be appreciated. Thanks.

Labels (4)
1 Solution
1,093 Views
juangutierrez
NXP Employee
NXP Employee

Hi

I debugged a little bit further the issue

I observed that when using Display 1, the blanking signal is followed inmediatelly by an unblanking one.

The above was only true for Display 1. for display 2 the unblanking signal was never sent.

Inspecting the code I found that the unblanking message was only sent when using channel23 (MEM_BG_SYNC) which is used for background plane in display1.

So what I did was to enable the unblankig for the display 2 which uses channel 27 (MEM_DC_SYNC)

This is the patch and it seems to be working

diff --git a/drivers/media/video/mxc/output/mxc_vout.c b/drivers/media/video/mxc/output/mxc_vout.c

index ec789ec..c3ec188 100644

--- a/drivers/media/video/mxc/output/mxc_vout.c

+++ b/drivers/media/video/mxc/output/mxc_vout.c

@@ -1759,7 +1759,7 @@ static void release_disp_output(struct mxc_vout_output *vout)

        pos.y = 0;

set_window_position(vout, &pos);

-       if (get_ipu_channel(fbi) == MEM_BG_SYNC) {

+       if (get_ipu_channel(fbi) == MEM_BG_SYNC || get_ipu_channel(fbi) == MEM_DC_SYNC) {

console_lock();

fbi->fix.smem_start = vout->disp_bufs[0];

fbi->flags |= FBINFO_MISC_USEREVENT;

View solution in original post

2 Replies
1,094 Views
juangutierrez
NXP Employee
NXP Employee

Hi

I debugged a little bit further the issue

I observed that when using Display 1, the blanking signal is followed inmediatelly by an unblanking one.

The above was only true for Display 1. for display 2 the unblanking signal was never sent.

Inspecting the code I found that the unblanking message was only sent when using channel23 (MEM_BG_SYNC) which is used for background plane in display1.

So what I did was to enable the unblankig for the display 2 which uses channel 27 (MEM_DC_SYNC)

This is the patch and it seems to be working

diff --git a/drivers/media/video/mxc/output/mxc_vout.c b/drivers/media/video/mxc/output/mxc_vout.c

index ec789ec..c3ec188 100644

--- a/drivers/media/video/mxc/output/mxc_vout.c

+++ b/drivers/media/video/mxc/output/mxc_vout.c

@@ -1759,7 +1759,7 @@ static void release_disp_output(struct mxc_vout_output *vout)

        pos.y = 0;

set_window_position(vout, &pos);

-       if (get_ipu_channel(fbi) == MEM_BG_SYNC) {

+       if (get_ipu_channel(fbi) == MEM_BG_SYNC || get_ipu_channel(fbi) == MEM_DC_SYNC) {

console_lock();

fbi->fix.smem_start = vout->disp_bufs[0];

fbi->flags |= FBINFO_MISC_USEREVENT;

1,093 Views
LeonardoSandova
Specialist I

Hi William.

I have reproduced the issue with latest BSP also on iMX6Q and iMX6DL boards. I will escalate this issue and update this thread as soon as I get more info.

0 Kudos
Reply