[gstreamer-bugs] [Bug 626518] [imagefreeze] better caps negotiation

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Aug 10 11:30:50 PDT 2010


https://bugzilla.gnome.org/show_bug.cgi?id=626518
  GStreamer | gst-plugins-good | unspecified

Sebastian Dröge <slomo> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1

--- Comment #5 from Sebastian Dröge <slomo at circular-chaos.org> 2010-08-10 18:30:44 UTC ---
(In reply to comment #4)
> Created an attachment (id=167539)
 View: https://bugzilla.gnome.org/attachment.cgi?id=167539
 Review: https://bugzilla.gnome.org/review?bug=626518&attachment=167539

> imagefreeze: Passthrough buffer allocations

So the problem here is quite complex ;)
First of all, your example only fails if the picture is larger than what XV can
handle.

The problem is, that gnlsource and gnlcomposition are adding their srcpads only
after a pad block (e.g. after a buffer has arrived). But that's too late to do
any renegotiation, the format is already fixed and everything... and makes the
linking fail.

If there's a ffmpegcolorspace and/or videoscale after imagefreeze, the pad
block will already be caused by a bufferalloc. In that case downstream still
has the chance (after everything is linked) to change the format and everything
will work.

So the first step was, to add bufferalloc passthrough to imagefreeze. This will
only work without a ffmpegcsp/vscale after imagefreeze if the decoder uses
bufferalloc though, so there should always be a second ffmpegcsp/vscale after
imagefreeze. But it would work in passthrough mode if the decoder did
bufferalloc. For most cases you then convert the frame once before imagefreeze
and everything is fine.


The remaining problem now is, that there are many pad blocks and the pad block
from gnlcomposition on the srcpad of gnlsource is causing a flushing seek. This
flushing seek causes the blocked bufferalloc to return wrong-state and
everything fails again.

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.



More information about the Gstreamer-bugs mailing list