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 593035 - gdp doesn't preserve fields of the buffers put into the caps' streamheader
gdp doesn't preserve fields of the buffers put into the caps' streamheader
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-base
git master
Other Linux
: Normal major
: 0.10.25
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2009-08-25 16:34 UTC by Arek Korbik
Modified: 2009-08-28 08:32 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
that is the fix :) (1.81 KB, patch)
2009-08-27 17:01 UTC, Marc-Andre Lureau
none Details | Review

Description Arek Korbik 2009-08-25 16:34:33 UTC
Using string representation to "serialize" caps info for passing between gdppay and gdpdepay elements strips the buffers put in the caps' streamheader of any fields, preserving just the content.

For example, the "multi-process" pipeline:

gst-launch-0.10 -v videotestsrc is-live=true ! theoraenc name=encoder ! gdppay ! tcpserversink port=13524 recover-policy=1   &   (sleep 1; gst-launch-0.10 -v tcpclientsrc port=13524 ! gdpdepay ! identity name=noop silent=1 ! gdppay ! tcpserversink port=13526 recover-policy=1 )   &   ( sleep 2; gst-launch-0.10 -v tcpclientsrc port=13526 ! gdpdepay ! muxer. oggmux name=muxer max-delay=500000000 max-page-delay=500000000 ! fakesink )

will have no buffers arriving on the final fakesink. The header buffers received and deserialized from caps in the second process will have incorrect OFFSET and OFFSET_END fields (set to -1 instead of the original 0) - that in turn will make oggmux in the third process to queue output page buffers indefinitely (due to possibly another oggmux fragility / bug).
Comment 1 Marc-Andre Lureau 2009-08-25 17:52:51 UTC
note1: if you run a simplified version with only 2 process (no identity process), then oggmux produces buffers as expected. It's only when more than 2 process are involved.

Also, any number of (gdppay ! gdpdepay)* works fine without tcp{sink,src}

ex:
gst-launch-0.10 -v videotestsrc ! theoraenc ! gdppay ! gdpdepay ! gdppay ! gdpdepay ! gdppay ! gdpdepay ! gdppay ! gdpdepay ! oggmux ! fakesin

I am now suspecting more multifd.
Comment 2 Marc-Andre Lureau 2009-08-27 17:01:19 UTC
Created attachment 141868 [details] [review]
that is the fix :)
Comment 3 Zaheer Abbas Merali 2009-08-28 08:32:51 UTC
commit 605f3c2942779259f49b13733473521497d0a2bb
Author: Marc-André Lureau <mlureau@flumotion.com>
Date:   Thu Aug 27 18:59:49 2009 +0200

    Bug 593035 - set IN_CAPS for streamheader buffer