[gst-devel] webcam recording

Mark Nauwelaerts manauw at skynet.be
Tue Jun 17 23:08:54 CEST 2008

Joshua N Pritikin wrote:
> On Mon, Jun 16, 2008 at 11:40:25PM +0200, Mark Nauwelaerts wrote:
>> - some variations in the capture parameters (??), framerate, size, etc
>> (might make hardware happier)
> Thanks for your many suggestions.
> Even though my camera claims to provide 30 fps, I suspect that it is 
> actually providing 10 fps. I made some attempt to measure the frame
> rate, but I was unsuccessful:
> entrans --progress-fps -- --raw v4l2src queue-size=16 \
>   ! video/x-raw-yuv,width=352 ! queue ! dam \
>   ! ffmpegcolorspace ! xvimagesink

The caps that are being used should be displayed in the section PIPELINE CAPS
(at least if there isn't a problem such as you mentioned below),
which is a more organized version of what gst-launch would spit out with -v
option.  This caps info should contain the framerate that is being
auto-negotiated.  You could also run the pipeline with GST_DEBUG="v4l2src:3" (or
maybe it is 4?).  The generated debug output should contain the formats/caps the
element expects the hardware to be able to handle (by having queried it).
(btw; also better make sure you have at least a v4l2src with property 
always-copy=true (default), my hardware(driver) at least did not seem to like 
the other case).

> SystemError: error return without exception set
> <<<< Now reached PLAYING state >>>>
> SystemError: error return without exception set
> I tried many variations on that theme. What is the proper way to 
> diagnose such problems?

Hm, good question, this exception stuff seems to be a very weird bug I just
noticed yesterday, and I only know so far it is not entirely entrans' fault [*].
In this particular case, you can workaround it by adding
--ignore-prop '.*sink.*' to the options
(works in my setting, if needed try --ignore-prop '...*')


[*] That particular problem was diagnosed by diving into the source code (no
substitute there ;) ) and seeing where the exception occurred.  Turns out I can
reproduce the error as follows:
Python 2.5.2 (r252:60911, Apr 21 2008, 11:17:30)
[GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import gst
>>> f = gst.element_factory_make ('filesink')
>>> b = f.get_property('last_buffer')
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
SystemError: error return without exception set
>>> n = f.get_property('name')

No idea why/how yet, probably something going wrong in the sink - GObject - 
pygobject chain if the GstMiniObject is NULL.  According to specs, I might get 
None here, but not some strange python exception.  Anyway, I expect it will 
similarly also affect other sinks with that property, though the work-around 
should cover that.  I had not noticed this so far because I usually run entrans 
with a default config file that contains a.o. following snippet, so it never 
queries sinks for their props:

> -------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It's the best place to buy or sell services for
> just about anything Open Source.
> http://sourceforge.net/services/buy/index.php
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gstreamer-devel

More information about the gstreamer-devel mailing list