[gstreamer-bugs] [Bug 311848] Renegotiation broken

bugzilla-daemon at bugzilla.gnome.org bugzilla-daemon at bugzilla.gnome.org
Thu Jul 28 08:48:46 PDT 2005


Please DO NOT reply to this by email. All additional comments should be made in
the comments box of this bug report.

 http://bugzilla.gnome.org/show_bug.cgi?id=311848
 GStreamer | gstreamer (core) | Ver: HEAD CVS





------- Additional Comments From Ronald Bultje  2005-07-28 15:48 -------
Created an attachment (id=49886)
 --> (http://bugzilla.gnome.org/attachment.cgi?id=49886&action=view)
attempt

Above patch tries to implement it.

*) for some reason, it just doesn't work; part of the reason may be that
gst_pad_accept_caps() falsely succeeds.
*) gst_pad_accept_caps() is not recursive, which makes it practically useless,
see above. The reason that it's not recursive is that it calls
gst_pad_get_caps() instead of gst_pad_get_allowed_caps().
*) however, gst_pad_get_allowed_caps() leads to deadlocks.

More design-wise:
*) should videotestsrc ! sizefilter ! queue ! videoscale ! ximagesink have
videotestsrc do the scaling, or should videoscale do it, or should videoscale
do it for cached buffers of the old size and videotestsrc for the rest?
gst_pad_proxy_alloc_buffer() isn't very useful in any of those cases, because
it does not renegotiate the sourcepad doing the buffer request.
*) in-place elements should never change their sourcepad caps without sinkpad
caps being changed and should proxy buffer-alloc calls. Not-in-place elements
should not proxy buffer-alloc calls and call those themselves. But what about
elements that are sometimes in place and sometimes not (ffmpegcolorspace,
videoscale)? How to efficiently implement the ideal behaviour?

I don't really know how to make this system work for the non-synchronous case
(so anything with a queue in it)...

------- You are receiving this mail because: -------
You are the assignee for the bug.
You are the QA contact for the bug.




More information about the Gstreamer-bugs mailing list