GStreamer displaying transitions on Yocto iMX6

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

GStreamer displaying transitions on Yocto iMX6

ソリューションへジャンプ
1,674件の閲覧回数
christianbauer
Contributor I

Hi there,

I am currently trying to display and control multiple GStreamer pipelines (udpsrc, rtpjpegdepay, jpegparse, imxvpudec, imxg2dvideosink) on one screen.

I am using the following properties on the imxg2dvideosink's to achieve several splitscreens:

  • window-x-coord 
  • window-y-coord 
  • window-width
  • window-height

The Qt program that I wrote using GStreamer API is working just as expected with one major problem:

Every now and then upon switching to the next specified splitscreen, the application will show a blackscreen for aprox. 1-2 seconds before displaying video again.

Fyi: The transition is made by dynamically changing the properties of one (or multiple) sinks, while the corresponding pipeline is still running.

My current setup is:

  • iMX6q with Kernel 3.14.28 running Yocto Linux
  • GStreamer 1.4.5 pipelines (see above) on /dev/fb0
  • Qt 5.4 Application on /dev/fb1, using eglfs
  • Colorkey 0x00FF00FF (ARGB) for /dev/fb1
  • Framebuffer 0: D: 71.003 MHz, H: 49.307 kHz, V: 59.912 Hz
    geometry 1280 800 1280 800 32
    timings 14084 80 48 14 3 32 6
    vsync high
    rgba 8/16,8/8,8/0,8/24
  • Framebuffer 1: D: 4.608 MHz, H: 3.600 kHz, V: 4.500 Hz
    geometry 1280 800 1280 1600 16
    timings 217013 0 0 0 0 0 0
    rgba 5/11,6/5,5/0,0/0
  • imxg2dvideosink properties: force-aspect-ratio = false

Provided warnings:

From time to time, there are multiple IPU warnings returned (which do not exit the application).

  • IPU_INT_STAT_10[19] = DI0 Synchronous display error interrupt.
  • IPU_INT_STAT_5[23, 27] = New Frame before end-of-frame error indication of Channel interrupt.
  • alloc_contig_range test_pages_isolated(4a600, 4a78a) failed

Thank you in advance

Christian 

ラベル(4)
0 件の賞賛
返信
1 解決策
1,385件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi Christian,

I checked your warning, IPU_INT_STAT_10 means that bit 19 of IPU_INT_STAT_10 is DI0_SYNC_DISP_ERR. This bit is set when there's an error, usually as result of data starvation when data that should be sent to display is not available in IPUs internal

FIFO. Cause for this issue is huge load on the DDR memory bus. It means that the IPU encounters the data starvation, that is, it can not get data sometimes from memory. Solution to this issue is reducing the display resolution,  framerate, frame buffer bits per pixel or any other measure  that helps to reduce the memory bandwidth utilization.

 

https://developer.ridgerun.com/wiki/index.php?title=IMX6_Memory_Bandwidth_usage

 

IPU_INT_STAT_5 Indicates the corresponding DMA channel number. New Frame before end-of-frame error indication of Channel interrupt. This bit is the status bit of New Frame before end-of-frame error interrupt of  Channel #n.

 

Hope this helps

元の投稿で解決策を見る

0 件の賞賛
返信
2 返答(返信)
1,386件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hi Christian,

I checked your warning, IPU_INT_STAT_10 means that bit 19 of IPU_INT_STAT_10 is DI0_SYNC_DISP_ERR. This bit is set when there's an error, usually as result of data starvation when data that should be sent to display is not available in IPUs internal

FIFO. Cause for this issue is huge load on the DDR memory bus. It means that the IPU encounters the data starvation, that is, it can not get data sometimes from memory. Solution to this issue is reducing the display resolution,  framerate, frame buffer bits per pixel or any other measure  that helps to reduce the memory bandwidth utilization.

 

https://developer.ridgerun.com/wiki/index.php?title=IMX6_Memory_Bandwidth_usage

 

IPU_INT_STAT_5 Indicates the corresponding DMA channel number. New Frame before end-of-frame error indication of Channel interrupt. This bit is the status bit of New Frame before end-of-frame error interrupt of  Channel #n.

 

Hope this helps

0 件の賞賛
返信
1,385件の閲覧回数
christianbauer
Contributor I

Hi Alfred,

I've managed to limit the number of blackscreen transition occurences by adapting my bootargs:

+ video=mxcfb0:dev=hdmi,1280x720M@60,if=RGB24

- video=mxcfb0:dev=hdmi,1280x800M@60,if=RGB24

I didn't realize, that 1280x800 is not a standard resolution.

Now I need to adapt some graphic components to avoid stretching.

Thank you for your help.

0 件の賞賛
返信