Reply
Thread Tools
Posts: 61 | Thanked: 77 times | Joined on Dec 2009 @ Lancaster
#11
Final Conclusion on using Xoverlays in QT:

Spent some time on trying to draw a Qt widget on top of xoverlay stream and found out that is can be done, however when you make the widget transparent, you do not see the xoverlay that lies bellow it but the background colour of the widget on which the xoverlay was added. This means that alpha blending also does not work, as it blends with the background colour of the widget bellow instead of the video stream.

This means that the whole area that is taken by the widget that holds your picture or text or graphic will cover the overlay. The workaround this problem is to create a mask over your widget which will make sure to cut out only the area you want to overdraw.

For example you can cut-out text from the whole widget are and in this way achieve to draw it on top of the video stream without the background colour (the background is the video stream itself). However this approach dose now work well with graphics that have transparent backgrounds and is suppose to slow down your drawing process.

Furthermore, I can also confirm the flickering problem that happens when one trays to draw on top of xoverlay. In my case i tried to hide and show the widget containing a simple graphic which caused flickering and sometimes failed to redraw the area from which the overlay was removed.

I decided to drop overlays and instead try to capture an image from gstreamer pipeline and draw it draw it as a pixmap on-to QWidget. Got stuck with gstreamer pipline work a need help.

Thanks,
Klen
 
Posts: 61 | Thanked: 77 times | Joined on Dec 2009 @ Lancaster
#12
Quick update on this thread:

I managed to crate a pipeline with an appsink element. In this way I get access to raw image data from the pipeline. From the data, I also manage to create a QPixmap and draw it onto the QWidget.

All sounds fantastic, but unfortunately I am stuck again. Now the problem is that my appsink works way to slow to achieve a smooth video preview (approx. 15fps).

It does not seam to get much faster if I remove all of the drawing on the screen, however, the processor monitor shows much less activity. I tried retrieving data using signals and callback functaions:

g_object_set (G_OBJECT (image_sink), "emit-signals", TRUE, NULL);
g_signal_connect (image_sink, "new-buffer", G_CALLBACK (new_buffer_added), NULL);


as well as calling gst_app_sink_pull_buffer in a timer.

GstBuffer* buffer = gst_app_sink_pull_buffer(appsink);

There was no difference in speed. Any suggestions?

Thanks,
Klen
 
Posts: 61 | Thanked: 77 times | Joined on Dec 2009 @ Lancaster
#13
I opened a new thread with the same tittle on Froum Nokia.

http://discussion.forum.nokia.com/fo...804#post716804

Klen
 
Reply


 
Forum Jump


All times are GMT. The time now is 22:07.