1. 14 Mar, 2020 1 commit
  2. 13 Mar, 2020 1 commit
  3. 12 Mar, 2020 2 commits
  4. 11 Mar, 2020 1 commit
  5. 09 Mar, 2020 6 commits
  6. 05 Mar, 2020 1 commit
  7. 03 Mar, 2020 1 commit
  8. 02 Mar, 2020 1 commit
  9. 28 Feb, 2020 3 commits
    • Tim-Philipp Müller's avatar
      tracers: rusage: use thread-local storage for per-thread stats · b8f5cb5a
      Tim-Philipp Müller authored
      .. instead of looking things up by thread id from a GHashTable,
      which also happens to have no locking around insertion/lookup.
      b8f5cb5a
    • Tim-Philipp Müller's avatar
    • Johan Bjäreholt's avatar
      gst-stats: Fix missing NULL checks · ef0df31c
      Johan Bjäreholt authored
      gst-inspect-1.0 segfaults on tracing logs where it fails to find
      element stats. So on the pipelines where we get the following WARNING
      during execution will afterwards crash with a segfault as the
      g_ptr_array has a index for it but it is just a NULL pointer.
      
      WARN default gst-stats.c:444:do_message_stats: no element stats found for ix=X
      
      An example of an pipeline which can reproducibly create a trace log
      where this occurs would be this
      
      GST_DEBUG="GST_TRACER:7" GST_TRACERS="stats;rusage;latency" gst-launch-1.0 videotestsrc num-buffers=120 ! autovideosink &> trace.log
      gst-stats-1.0 trace.log
      ef0df31c
  10. 27 Feb, 2020 1 commit
  11. 26 Feb, 2020 3 commits
  12. 25 Feb, 2020 1 commit
    • Nirbheek Chauhan's avatar
      Don't use glib format modifiers with sscanf or printf · e9085043
      Nirbheek Chauhan authored
      We do not have a way to know the format modifiers to use with string
      functions provided by the system. `G_GUINT64_FORMAT` and other string
      modifiers only work for glib string formatting functions. We cannot
      use them for string functions provided by the stdlib. See:
      https://developer.gnome.org/glib/stable/glib-Basic-Types.html#glib-Basic-Types.description
      
      F.ex.:
      
      ```
       ../tools/gst-stats.c:921:11: error: too many arguments for format [-Werror=format-extra-args]
         printf ("Number of Buffers passed: %" G_GUINT64_FORMAT "\n", num_buffers);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      ../tools/gst-stats.c:922:11: error: unknown conversion type character 'l' in format [-Werror=format=]
         printf ("Number of Events sent: %" G_GUINT64_FORMAT "\n", num_events);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~
      In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib/gtypes.h:32,
                       from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib/galloca.h:32,
                       from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/include/glib-2.0/glib.h:30,
                       from ../gst/gst.h:27,
                       from ../tools/tools.h:28,
                       from ../tools/gst-stats.c:30:
      /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86_64/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here
       #define G_GUINT64_FORMAT "llu"
                                  ^
      ```
      
      and
      
      ```
      ../tests/misc/netclock-replay.c: In function 'main':
      ../tests/misc/netclock-replay.c:98:23: error: unknown conversion type character 'l' in format [-Werror=format=]
           if (sscanf (line, "%" G_GUINT64_FORMAT " %" G_GUINT64_FORMAT " %"
                             ^~~
      In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/gtypes.h:32,
                       from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/galloca.h:32,
                       from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib.h:30,
                       from ../tests/misc/../../libs/gst/net/gstntppacket.c:38,
                       from ../tests/misc/netclock-replay.c:31:
      /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here
       #define G_GUINT64_FORMAT "llu"
                                  ^
      ```
      
      This is needed for upgrading glib inside Cerbero which builds with
      `-Werror` on Windows:
      gstreamer/cerbero!419
      e9085043
  13. 19 Feb, 2020 1 commit
  14. 15 Feb, 2020 2 commits
  15. 14 Feb, 2020 3 commits
    • Thibault Saunier's avatar
      leaks: Do not trace refs for object we do not follow · 14cd8b83
      Thibault Saunier authored
      When the user sets filters, we should not trace ref counts of object that
      are not traced. This optimizes the tracer by potentially avoiding
      generating useless backtraces.
      14cd8b83
    • Zebediah Figura's avatar
      baseparse: Set the private duration before posting a duration-changed message · d28e0b41
      Zebediah Figura authored
      Otherwise an application cannot rely on a subsequent call to e.g. gst_pad_query_duration() succeeding.
      d28e0b41
    • Sebastian Dröge's avatar
      bus: Make setting/replacing/clearing the sync handler thread-safe · 733246f1
      Sebastian Dröge authored
      Previously we would use the object lock only for storing the sync
      handler and its user_data in a local variable, then unlock it and only
      then call the sync handler. Between unlocking and calling the sync
      handler it might be unset and the user_data be freed, causing it to be
      called with a freed pointer.
      
      To prevent this add a refcounting wrapper struct around the sync
      handler, hold the object lock while retrieving it and increasing the
      reference count and only actually free it once the reference count
      reaches zero.
      
      As a side-effect we can now also allow to actually replace the sync
      handler. Previously it was only allowed to clear it after initially
      setting it according to the docs, but the code still allowed to clear it
      and then set a different one.
      
      Fixes gstreamer/gstreamer#506
      733246f1
  16. 13 Feb, 2020 1 commit
  17. 12 Feb, 2020 2 commits
    • Henry Wilkes's avatar
      caps: keep ANY caps empty internally · 412e97be
      Henry Wilkes authored
      Keep the ANY caps empty internally when appending and merging
      caps/structures. Previously, an ANY caps could end up containing
      internal structures, which could be fetched by the user, and gave the
      caps a non-zero length.
      
      Also, made sure that `gst_caps_set_features_simple` frees the features
      if caps is empty.
      412e97be
    • Henry Wilkes's avatar
      caps: fix is_strictly_equal · 407e3258
      Henry Wilkes authored
      Fixed gst_caps_is_strictly_equal() to take into account whether either of
      the caps are ANY caps. Previously, two ANY caps could be considered not
      strictly equal if one of them still contained some remnant *internal*
      structure (this can happen if an ANY caps has emerged from an append or
      merge operation). Also, an ANY caps with no remnant internal structures
      was considered strictly equal to an EMPTY caps. Similarly, a non-ANY caps
      was considered strictly equal to an ANY caps if its remnant internal
      structures happened to match.
      
      Also changed gst_caps_is_fixed to take into account that an ANY caps
      should not be considered fixed even if it contains a single remnant
      internal fixed structure. This affects gst_caps_is_equal(), which uses a
      separate method if both caps are fixed. Previously, this meant that a
      non-ANY fixed caps was considered equal to an ANY caps if it contained a
      single matching remnant internal structure.
      
      Added some tests for these two equality methods, which covers the above
      examples, as well as asserts existing behaviour.
      
      Fixes #496
      407e3258
  18. 10 Feb, 2020 1 commit
  19. 04 Feb, 2020 1 commit
    • Thibault Saunier's avatar
      baseparse: Don't set meaningless buffer dts from segment->start · baa5aae2
      Thibault Saunier authored
      When we do not have any information about DTSs we shouldn't try to make
      them up, moreover after seeking `segment->start` has nothing to do with
      the next buffer timing (and is probably after the actual buffer timestamp)
      and since, since gstreamer/gstreamer@fa831247
      we do:
      
      ```
      if (buffer->dts > buffer->dts)
          buffer->pts = buffer->dts
      ```
      
      we end up setting `buffer->pts = segment->start` which is plain
      broken and leads to downstream decoder accept the first buffer
      as it will be inside the segment (its pts==segment->start) which
      basically means accurate seeking behaves mostly the same way as
      keyframe seeks.
      
      Fixes gstreamer/gstreamer#492
      baa5aae2
  20. 27 Jan, 2020 2 commits
    • Olivier Crête's avatar
      systemclock: No need to check for CLOCK_TAI in the meson · b4ba9ec0
      Olivier Crête authored
      POSIX defines CLOCK_MONOTONIC to always be a macro, so I think
      it's safe to assume that CLOCK_TAI will also be.
      b4ba9ec0
    • Ederson de Souza's avatar
      GstSystemClock: Add GST_CLOCK_TYPE_TAI · 216d6dd0
      Ederson de Souza authored
      GST_CLOCK_TYPE_TAI is GStreamer abstraction for CLOCK_TAI. Main
      motivation for this patch is support for transmission offloading features
      - when network packets are timestamped with the time they are deemed to
      be actually transmitted. Linux API for that requires that time to be
      in CLOCK_TAI coordinate.
      
      With GST_CLOCK_TYPE_TAI, applications can use CLOCK_TAI directly on
      their pipelines, avoiding the need to cross timestamp packet times. By
      leveraging system's CLOCK_TAI, applications also don't need to keep track
      of leap seconds - less burden for them. Just keep system's CLOCK_TAI
      accurate and use it.
      216d6dd0
  21. 24 Jan, 2020 2 commits
    • Sebastian Dröge's avatar
      bin: Don't consider having a group-id or being STREAM_START if we have not a... · 47765e16
      Sebastian Dröge authored
      bin: Don't consider having a group-id or being STREAM_START if we have not a single STREAM_START message
      
      This would cause us to set GST_GROUP_ID_INVALID as group-id in the
      aggregated STREAM_START message if there are no sinks at all or none of
      them have a STREAM_START message, which is simply wrong.
      
      If we have not a single STREAM_START message then the bin should not be
      considered STREAM_START.
      47765e16
    • Sebastian Dröge's avatar
      event/message: Don't allow setting invalid group ids · 1b2f968e
      Sebastian Dröge authored
      They are optional on STREAM_START messages/events but if available
      should have at least a valid value.
      
      For STREAM_GROUP_DONE events don't allow creating it with an invalid
      group id as this does not make any sense.
      1b2f968e
  22. 23 Jan, 2020 1 commit
  23. 09 Jan, 2020 1 commit
  24. 06 Jan, 2020 1 commit