GNOME Bugzilla – Bug 648220
Regression: videoscale fails to negotiate for PAR transformation
Last modified: 2011-04-21 13:30:17 UTC
Such a pipeline used to work: videotestsrc ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=352,height=288,framerate=(fraction)30/1,pixel-aspect-ratio=(fraction)1/1' ! videoscale ! 'video/x-raw-yuv,format=(fourcc)UYVY,width=352,height=288,framerate=(fraction)30/1,pixel-aspect-ratio=(fraction)12/11' ! fakesink This converts from PAR 1/1 to 12/11 (all other caps fields are identical). With latest everything, this now gives: ERROR: from element /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data flow error. Additional debug info: gstbasesrc.c(2582): gst_base_src_loop (): /GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: streaming task paused, reason not-negotiated (-4) It works again if I revert this core commit: commit 83597767b169dd6c39a07b6144a650c1f098825a Author: Thiago Santos <thiago.sousa.santos@collabora.co.uk> Date: Mon Feb 14 18:05:09 2011 -0300 basetransform: Be smarter with pad allocs Avoid doing unnecessary pad-allocs when on passthrough mode. If multiple basetransform elements are on a pipeline, they would do a pad-alloc for each received buffer, each element would do this, so we would have lots of pad allocs on the pipeline for a single buffer being pushed through it. This patch attempts to reduce this amount by avoiding doing pad-allocs if the element has already done it after the last pushed buffer. So it will only be allowed to do a new pad-alloc after it has pushed a buffer, so we get 1x1 pad-alloc and buffer ratio https://bugzilla.gnome.org/show_bug.cgi?id=642373
Created attachment 186326 [details] [review] basetransform: Fixup patch for 83597767b169dd6c39a07b6144a650c1f098825a Use a separate variable for knowing if a pad alloc has been made instead of checking for the flow return that might not be the result of the pad alloc Fixes #648220
commit 0253c85b0d683b86b788c1a1c85aafff8d13a862 Author: Thiago Santos <thiago.sousa.santos@collabora.co.uk> Date: Tue Apr 19 20:35:04 2011 -0300 basetransform: fix negotiation regression Fixup patch for 83597767b169dd6c39a07b6144a650c1f098825a Use a separate variable for knowing if a pad alloc has been made instead of checking for the flow return that might not be the result of the pad alloc https://bugzilla.gnome.org/show_bug.cgi?id=648220 commit 0b5e203b19959d096a1dd84a30c668a8c6c5538e Author: Tim-Philipp Müller <tim.muller@collabora.co.uk> Date: Thu Apr 21 14:11:49 2011 +0100 tests: add unit test for basetransform/videoscale negotiation regression Turn Rene's test pipeline into a unit test. https://bugzilla.gnome.org/show_bug.cgi?id=648220