[Bug 794331] New: log_omx_performance: GstOMXBuffer and OMX-buffer fields always displayed as NULL

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Mar 14 13:58:07 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=794331

            Bug ID: 794331
           Summary: log_omx_performance: GstOMXBuffer and OMX-buffer
                    fields always displayed as NULL
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-omx
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: gdesmott at gnome.org
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

Here is the logging code used by the OMX_PERFORMANCE category to log infos
about OMX buffers:
https://cgit.freedesktop.org/gstreamer/gst-omx/tree/omx/gstomx.c#n648

Unfortunately this is not working with G_TYPE_POINTER fields which appear as
NULL and raise warnings:

0:00:00.443497969 11812      0x2538d40 WARN               structure
gststructure.c:1832:priv_gst_structure_append_to_gstring: No value transform to
serialize field 'GstOMXBuffer' of type 'gpointer'
0:00:00.443510229 11812      0x2538d40 WARN               structure
gststructure.c:1832:priv_gst_structure_append_to_gstring: No value transform to
serialize field 'OMX-buffer' of type 'gpointer'
0:00:00.443465370 11812      0x2538d40 TRACE        OMX_PERFORMANCE
gstomx.c:673:log_omx_performance:<omxh264enc-omxh264enc0> FillThisBuffer,
GstOMXBuffer=(gpointer)NULL, OMX-buffer=(gpointer)NULL, TimeStamp=(guint64)0,
AllocLen=(uint)360448, FilledLen=(uint)0, flags=(uint)0, flags-str=(string)"";

I initially assumed this was because I was using a old gst version on my board
as I added support to display pointers a while ago in the leaks tracer (
https://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=aa336008b378ebe24d56896f96240fc3bd96d5d4
)

But actually tracers use a different code path,
priv__gst_structure_append_template_to_gstring(), which is a private API while
GST_PTR_FORMAT() uses gst_value_serialize() not supporting pointers
serialization.

It doesn't really make sense for gst_value_serialize() to serialize pointers so
I think we have two options here:
a) convert pointers to strings using g_strdup_printf() and store them as
G_TYPE_STRING in the structure.
b) manually handle pointers in priv_gst_structure_append_to_gstring() (used by
gst_structure_to_string()) to display them properly

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list