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 733131 - gstvalue: failure to deserialize gsttaglist
gstvalue: failure to deserialize gsttaglist
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gstreamer (core)
1.3.91
Other All
: Normal enhancement
: 1.5.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-07-13 18:54 UTC by Tom Janiszewski
Modified: 2014-07-21 15:30 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gst: init taglist gtype to use it in gstvalue (1.01 KB, patch)
2014-07-14 21:45 UTC, Thiago Sousa Santos
committed Details | Review
gstvalue: add GstTagList compare function (1.52 KB, patch)
2014-07-14 21:45 UTC, Thiago Sousa Santos
committed Details | Review
tests: gststructure: serialization of tag event structure (2.38 KB, patch)
2014-07-14 21:45 UTC, Thiago Sousa Santos
committed Details | Review

Description Tom Janiszewski 2014-07-13 18:54:25 UTC
It appears that if x264 tags are in a pipeline and 'packed' using gdppay, (tags from either x264enc or a decoded h.264 stream) , gdpdepay cannot decode them properly for example:

gst-launch-1.0 videotestsrc is-live=true ! x264enc ! gdppay ! tcpserversink port=1234 

and

gst-launch-1.0 tcpclientsrc host=127.0.0.1 port=1234 ! gdpdepay ! fakesink

will output a gdp decode error:

ERROR: from element /GstPipeline:pipeline0/GstGDPDepay:gdpdepay0: Could not decode stream.


Looks like it may be a gdppay or h.264 tag format issue, when receiving the same stream with an older gdpdepay (1.2.4) it spews errors but does receive the actual h.264 stream correctly:

(gst-launch-1.0:4575): GStreamer-CRITICAL **: gst_tag_list_new_from_string: assertion 'g_str_has_prefix (str, "taglist")' failed
...
... h.264  packets do flow .. 

If 1.2.4 x264enc + gdppay / gdpdepay is used no issues are observed.

A quick workaround for 1.3.91 by stripping tags seems to make gdpdepay happy as well - so looks like a h.264 tag issue.
Comment 1 Thiago Sousa Santos 2014-07-14 21:40:47 UTC
Marking as a regression as it worked in 1.2.
Changing title and module to reflect the real underlying issue.

This was exposed when another issue was fixed by:
commit 037f27756618b919056756c25d9f38ff1243c55b
Author: Olivier Crête <olivier.crete@collabora.com>
Date:   Mon Jun 2 21:43:56 2014 -0400

    gdp: Fail gracefully if event can't be parsed
    
    https://bugzilla.gnome.org/show_bug.cgi?id=731093
Comment 2 Thiago Sousa Santos 2014-07-14 21:45:16 UTC
Created attachment 280676 [details] [review]
gst: init taglist gtype to use it in gstvalue

Otherwise it will have a 0 value and GstTagList won't be found
for GstValue functions (serialization/deserialization)
Comment 3 Thiago Sousa Santos 2014-07-14 21:45:22 UTC
Created attachment 280677 [details] [review]
gstvalue: add GstTagList compare function

When serializing GstStructures from events in GDP it will add a taglist
as a GstStructure field, having the compare function allows comparison of
GstStructures to check if the serialized/deserialized version matches the
original one, among other cases.
Comment 4 Thiago Sousa Santos 2014-07-14 21:45:27 UTC
Created attachment 280678 [details] [review]
tests: gststructure: serialization of tag event structure

Adds a test that checks that the serialization of a tag event structure
works without problems
Comment 5 Thiago Sousa Santos 2014-07-14 22:40:23 UTC
Pushed one of the accepted patches.

commit c7aa4e6a5fc344bcdfaa4fee8ccf2741ab28886e
Author: Thiago Santos <ts.santos@sisa.samsung.com>
Date:   Mon Jul 14 18:10:45 2014 -0300

    gst: init taglist gtype to use it in gstvalue
    
    Otherwise it will have a 0 value and GstTagList won't be found
    for GstValue functions (serialization/deserialization)
    
    https://bugzilla.gnome.org/show_bug.cgi?id=733131
Comment 6 Thiago Sousa Santos 2014-07-16 14:54:57 UTC
Not a blocker anymore after the above patch as pushed
Comment 7 Thiago Sousa Santos 2014-07-21 15:13:35 UTC
Setting the target milestone to 1.5, but one patch already got into 1.4.

commit b0b89081591c1a47b88bd97a8c11f8e4ad75be3d
Author: Thiago Santos <ts.santos@sisa.samsung.com>
Date:   Mon Jul 14 18:25:50 2014 -0300

    tests: gststructure: serialization of tag event structure
    
    Adds a test that checks that the serialization of a tag event structure
    works without problems
    
    https://bugzilla.gnome.org/show_bug.cgi?id=733131

commit 4ca6694e09fcdf8a919f287628474d00d5b3bd9b
Author: Thiago Santos <ts.santos@sisa.samsung.com>
Date:   Mon Jul 14 18:23:43 2014 -0300

    gstvalue: add GstTagList compare function
    
    When serializing GstStructures from events in GDP it will add a taglist
    as a GstStructure field, having the compare function allows comparison of
    GstStructures to check if the serialized/deserialized version matches the
    original one, among other cases.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=733131