[gst-devel] Gstreamer application development
mail at renestadler.de
Thu Dec 28 00:33:22 CET 2006
Am Mittwoch, den 27.12.2006, 22:24 +0000 schrieb jodim:
> First of all I would like to congratulate all gstreamer coders &
> gurus out there for their continued effort to provide the Linux
> community with a media framework nearing the caliber of existing
> commercial libraries.
> Now for the question:
> We have a requirement for a video capture application that should be
> able to grab 2 or more video sources, encode them to disk in mpeg2
> format while at the same time display them in the screen. Now, the
> container is a KDE C++ application and using Kiss as a guide, we have
> implemented a self contained QT widget that takes an uri and plays the
> video overlayed to its windowId(). This works fine for as long as we use
> only one widget.
> BTW, we are using playbin as the element to play the test movie. If
> we try adding another widget, i.e. using two playbins, only one of them
> is ever displayed. After some debugging, we tried using gst editor to
> better understand what is happening. We used two test videosources
> directly conected to two xvimagesinks. The editor failed to start
> playing with the following error message:
> "/pipeline0/xvimagesink1: Resource busy or not available.
> Additional debug info: xvimagesink.c(740):
> gst_xvimagesink_get_xv_support: /pipeline0/xvimagesink1:
> No port available"
> However, if we use aasink as the sink elements, multiple video
> outputs work with out trouble. The question I would like to ask is
> whether its possible to have 2 or more xvimage sinks displaying video
> concurrently and if affirmative, what would be the best way to
> accomplish this.
> Apologies in advance should this email be off topic.
> Best Regards,
This problem is unrelated to GStreamer. The caveat is that system
setups generally provide just a single XVideo port. Try using two
application instances to playback videos at once; the second application
will either fail or implicitly fallback to plain X output with software
scaling (in GStreamer's case videoscale + ximagesink).
I'd say your options are to use "... ! videoscale ! ximagesink" for your
individual videosinks or mix all streams together side by side using
videomixer and videobox elements and play back to a single xvimagesink.
The second option seems to prove as unfeasible since the costs for the
mixing generally outweigh the savings gained through XVideo hardware
scaling and rendering.
More information about the gstreamer-devel