GNOME Bugzilla – Bug 504760
Videoscale element keeps renegotiating endlessly
Last modified: 2007-12-21 10:00:50 UTC
Introduction: I was developing a gstreamer-enabled player application in python using the gst-python bindings when I discovered that my application does not work with video sinks that lack hardware scaling and hence require a videoscale element. I did add a videoscale element to the pipeline, but it's not doing it's job correctly: as soon as you resize the video window it will start to renegotiate endlessly and does not scale at all anymore. I have extracted the core player part from my application so you can reproduce this bug. Steps to reproduce: 1. download my code from http://wolpzone.de/dir/vortex/azure_minimal.tar.gz and extract the archive 2. run wrapper.py with "/some/file" as argument 3. resize the video window 4. watch what happens Expected result: The Video is resized nicely along with the window. Actual result: The Video is not resized at all. Framerate drops to 0 and CPU load raises to 100%. Additional information: The player code is contained in azure_core.py. Take a look at the Videobin class there, it contains the videoscale element and video sink.
The custom Tagcatcher element says that it can accept ANY caps on the sinkpad, making the sink believe it can perform the image scaling, which it then doesn't do. The getcaps function on the srcpad should return the result of peer_get_caps on the srcpad. I'm not sure there is anything else that can be done. Maybe the videosink can only try to renegotiate once instead of trying repeadedly.