GNOME Bugzilla – Bug 733131
gstvalue: failure to deserialize gsttaglist
Last modified: 2014-07-21 15:30:42 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.
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
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)
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.
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
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
Not a blocker anymore after the above patch as pushed
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