i.MX6Q - GStreamer: How to clear the display after stopping the pipeline (using mfw_isink)

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

i.MX6Q - GStreamer: How to clear the display after stopping the pipeline (using mfw_isink)

3,276 Views
Tarek
Senior Contributor I

Hi All,

I'm playing and displaying multiple streams using mfw_isink. The system can dynamical switch from one Full screen stream to 4/12/16 streams. To achieve this I'm changing the state of each pipeline to NULL , changing the mfw_isink (x,y,h,w) then setting the state back to PLAY. This is working fine except that some pipelines occasionally leaves the last image on display. This means every time I NULL all the pipelines I will see this last image momentary until the state is set back to PLAY again.

It looks like I need to clear the mfw_isink  buffers before staring any new stream. What is the best way to do so?

Thanks

Labels (4)
7 Replies

2,033 Views
erickorozco
Contributor I

Hi, 

I'm experiencing the same issue as described above. I'm doing the following: 

-> Quitting the video, which means that I set the pipeline to NULL, and unreference all the objects.

->Restarting the video, creating a new pipeline and linking all the elements. 

After doing the above steps, the last image of the video destroyed is displayed before the new video is played. How can I avoid this issue? 

Thank you, 

Erick. 

By the way I'm using the I.MX6 and GStreamer Core Library version 0.10.36, my sink element is mfw_isink. 

0 Kudos
Reply

2,033 Views
ChucoChe
NXP Employee
NXP Employee

Hi,

Have you tried to set the state to STOP then NULL?

DaianeAngolini and FabioEstevam are more familiar with the gstreamer API than I am. Maybe they can give you more advice :)!

Michel

2,033 Views
Tarek
Senior Contributor I

There is no Gstreamer State = STOP

T

0 Kudos
Reply

2,033 Views
joshkurland
Contributor IV

Are you playing these videos from local files or streaming?  Have you tried to unref the pipeline after you have set it to NULL?  I used to do that at the end of every video before the next one played.  If I recall, I only saw the frame remain if I exited the process early (ctrl c).  I will try to look through some of my old code to see if I can re-replicate the results.  Also, I think each video has to have its own pipeline in order to link to a new mfw_isink pad.  You may be missing a NULL state one of these pipes. 

0 Kudos
Reply

2,033 Views
Tarek
Senior Contributor I

I'm streaming the video. On my initial implementation I use to un-link the pipeline after each video to make sure all the elements and buffers are distorted correctly then link a new pipeline for the new stream. This method worked fine in terms of  clearing the screen but caused the system to crash. The fact that linking a new pipeline every time I start a new stream and dynamically allocating buffers will fragment the memory very quickly, resulting in allocation failure. This is not a common problem and it's unique to my application because I'm running 32 pipeline simultaneously hence I need a lot of memory,.

I was hopping to find a better way to clear mfw_isink buffers at the end of each video without having to rebuild the pipeline every time.

Thanks

0 Kudos
Reply

2,033 Views
ChucoChe
NXP Employee
NXP Employee

Can you create a small test that replicates the behavior and provide the source code? Maybe we can come up with something here.

Michel

0 Kudos
Reply

2,033 Views
ChucoChe
NXP Employee
NXP Employee

You're right, memory failed me.

Michel

0 Kudos
Reply