[gst-devel] Gstreamer application development
René Stadler
mail at renestadler.de
Thu Dec 28 00:33:22 CET 2006
Am Mittwoch, den 27.12.2006, 22:24 +0000 schrieb jodim:
> Greetings,
> 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,
> joe
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.
--
Regards,
René Stadler
More information about the gstreamer-devel
mailing list