[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