After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 648220 - Regression: videoscale fails to negotiate for PAR transformation
Regression: videoscale fails to negotiate for PAR transformation
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
git master
Other Linux
: Normal blocker
: 0.10.33
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2011-04-19 14:19 UTC by René Stadler
Modified: 2011-04-21 13:30 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
basetransform: Fixup patch for 83597767b169dd6c39a07b6144a650c1f098825a (1.70 KB, patch)
2011-04-19 23:40 UTC, Thiago Sousa Santos
committed Details | Review

Description René Stadler 2011-04-19 14:19:37 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
Comment 1 Thiago Sousa Santos 2011-04-19 23:40:57 UTC
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
Comment 2 Tim-Philipp Müller 2011-04-21 13:30:04 UTC
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