1. 09 Sep, 2019 1 commit
    • Niels De Graef's avatar
      Don't pass default GLib marshallers for signals · 4812c408
      Niels De Graef authored
      By passing NULL to `g_signal_new` instead of a marshaller, GLib will
      actually internally optimize the signal (if the marshaller is available
      in GLib itself) by also setting the valist marshaller. This makes the
      signal emission a bit more performant than the regular marshalling,
      which still needs to box into `GValue` and call libffi in case of a
      generic marshaller.
      
      Note that for custom marshallers, one would use
      `g_signal_set_va_marshaller()` with the valist marshaller instead.
      4812c408
  2. 07 Sep, 2019 1 commit
  3. 06 Sep, 2019 1 commit
  4. 05 Sep, 2019 1 commit
    • Vivia Nikolaidou's avatar
      pad: Added gst_pad_get_single_internal_link · 7774aae7
      Vivia Nikolaidou authored
      gst_pad_iterate_internal_links is usually used to find a single internal
      link that a pad has, e.g. to find the corresponding pad of a multiqueue.
      Added a helper function that will return either a single internal link,
      if there's no other, or NULL.
      7774aae7
  5. 04 Sep, 2019 1 commit
  6. 03 Sep, 2019 1 commit
    • Nicolas Dufresne's avatar
      bin: Fix minor race when adding to a bin · 80a76a4b
      Nicolas Dufresne authored
      This patch simply add a null check around a case where a child may have
      been unparented concurrently to the deep_add_remove operation. This was
      found by accident in the form of an "IS_GST_OBJECT" assertion, but had
      no other known side effect in that test.
      80a76a4b
  7. 30 Aug, 2019 1 commit
    • Matthew Waters's avatar
      libcheck: fix macos werror build · 83e0da20
      Matthew Waters authored
      ../libs/gst/check/libcheck/check.c:617:15: error: result of comparison of constant 4294967295 with expression of type 'clockid_t' is always false [-Werror,-Wtautological-constant-out-of-range-compare]
        if (clockid == -1) {
            ~~~~~~~ ^  ~~
      83e0da20
  8. 28 Aug, 2019 1 commit
    • Matthew Waters's avatar
      file/fdsrc: use struct stat64 on android to match stat64() · 43622119
      Matthew Waters authored
      Fixes android werror failures:
      
      ../plugins/elements/gstfdsrc.c:244:25: error: incompatible pointer types passing 'struct stat *' to parameter of type 'struct stat64 *' [-Werror,-Wincompatible-pointer-types]
          if (fstat (src->fd, &stat_results) < 0)
                              ^~~~~~~~~~~~~
      /home/matt/Projects/cerbero/build/android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here
      int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21);
                                           ^
      ../plugins/elements/gstfdsrc.c:560:23: error: incompatible pointer types passing 'struct stat *' to parameter of type 'struct stat64 *' [-Werror,-Wincompatible-pointer-types]
        if (fstat (src->fd, &stat_results) < 0)
                            ^~~~~~~~~~~~~
      /home/matt/Projects/cerbero/build/android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here
      int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21);
                                           ^
      
        if (fstat (fd, &stat_results) < 0)
                       ^~~~~~~~~~~~~
      /home/matt/Projects/cerbero/build/android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here
      int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21);
                                           ^
      
        if (fstat (src->fd, &stat_results) < 0)
                            ^~~~~~~~~~~~~
      ../../../../../android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here
      int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21);
                                           ^
      ../plugins/elements/gstfilesrc.c:477:23: error: incompatible pointer types passing 'struct stat *' to parameter of type 'struct stat64 *' [-Werror,-Wincompatible-pointer-types]
        if (fstat (src->fd, &stat_results) < 0)
                            ^~~~~~~~~~~~~
      ../../../../../android-ndk-18/sysroot/usr/include/sys/stat.h:159:38: note: passing argument to parameter '__buf' here
      int fstat64(int __fd, struct stat64* __buf) __RENAME_STAT64(fstat, 3, 21);
                                           ^
      43622119
  9. 26 Aug, 2019 1 commit
    • Matthew Waters's avatar
      check: fix werror build with clang · 5c3ae389
      Matthew Waters authored
      Silence -Wformat-nonliteral warnings from the internal copy of libcheck
      
      ../subprojects/gstreamer/libs/gst/check/libcheck/check.c:379:29: warning: format string is not a string literal [-Wformat-nonliteral]
          vsnprintf (buf, BUFSIZ, msg, ap);
                                  ^~~
      ../subprojects/gstreamer/libs/gst/check/libcheck/check_error.c:48:21: warning: format string is not a string literal [-Wformat-nonliteral]
        vfprintf (stderr, fmt, args);
                          ^~~
      ../subprojects/gstreamer/libs/gst/check/libcheck/check_str.c:92:29: warning: format string is not a string literal [-Wformat-nonliteral]
          n = vsnprintf (p, size, fmt, ap);
                                  ^~~
      5c3ae389
  10. 25 Aug, 2019 1 commit
    • Niels De Graef's avatar
      object: Use g_object_notify_by_pspec() · 9e69c908
      Niels De Graef authored
      `g_object_notify()` actually takes a global lock to look up the
      `GParamSpec` that corresponds to the given property name. It's not a
      huge performance hit, but it's easily avoidable by using the
      `_by_pspec()` variant.
      9e69c908
  11. 24 Aug, 2019 2 commits
  12. 23 Aug, 2019 1 commit
  13. 21 Aug, 2019 1 commit
    • Johan Sternerup's avatar
      utils: Avoid memory merge in gst_util_dump_buffer() · a4d5c956
      Johan Sternerup authored
      For buffers with multiple memory chunks, gst_buffer_map() has the side
      effect of merging the memory chunks into one contiguous
      chunk. Since gst_util_dump_mem() used gst_buffer_map() the internals
      of the buffer could actually change as a result of printing it.
      
      For the case of a buffer containing several memory chunks,
      gst_memory_map() is now used to obtain the memory address and each
      memory chunk is dumped separately preceded by a header line. The
      behaviour for a buffer containing a single memory chunk is left unchanged.
      a4d5c956
  14. 19 Aug, 2019 1 commit
    • Sebastian Dröge's avatar
      aggregator: Always handle serialized events/queries directly before waiting · 74797e96
      Sebastian Dröge authored
      Otherwise it can happen that we start waiting for another pad, while one
      pad already has events that can be handled and potentially also a buffer
      that can be handled. That buffer would then however not be accessible by
      the subclass from GstAggregator::get_next_time() as there would be the
      events in front of it, which doesn't allow the subclass then to
      calculate the next time based on already available buffers.
      
      As a side-effect this also allows removing the duplicated event handling
      code in the aggregate function as we'll always report pads as not ready
      when there is a serialized event or query at the top of at least one
      pad's queue.
      
      Fixes gstreamer/gstreamer#428
      74797e96
  15. 15 Aug, 2019 1 commit
  16. 14 Aug, 2019 3 commits
  17. 13 Aug, 2019 3 commits
  18. 12 Aug, 2019 1 commit
  19. 09 Aug, 2019 1 commit
  20. 07 Aug, 2019 1 commit
  21. 06 Aug, 2019 3 commits
  22. 05 Aug, 2019 1 commit
    • Doug Nazar's avatar
      info: Fix deadlock in gst_ring_buffer_logger_log · 7b596ba6
      Doug Nazar authored
      gst_ring_buffer_logger_log calls several functions while formatting
      the message which may in turn log a message while we already hold
      the mutex. Do all formatting first before acquiring the mutex to
      avoid this and reduce the time we hold the mutex.
      7b596ba6
  23. 02 Aug, 2019 1 commit
    • Guillaume Desmottes's avatar
      tracers: set MAY_BE_LEAKED on tracer records · e4cba8a0
      Guillaume Desmottes authored
      The records are static and so appear as false positives when using those
      tracers with the leaks tracer as well.
      The leaks tracer was already setting this flag on its record so let's
      set it on the other ones as well.
      e4cba8a0
  24. 22 Jul, 2019 1 commit
    • Alicia Boya García's avatar
      downloadbuffer: Check for flush after seek · b50abd9f
      Alicia Boya García authored
      In gst_download_buffer_wait_for_data(), when a seek is made with
      perform_seek_to_offset() the `qlock` is released temporarily. Therefore,
      the flushing condition can be set during this period and should be
      checked.
      
      This was not being checked before, causing occasional deadlocks when
      GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK() was called.
      
      GST_DOWNLOAD_BUFFER_WAIT_ADD_CHECK() assumes that the caller has already
      checked that we're not flushing before, since this is done when
      acquiring the lock; so if we release it temporarily somewhere, we need
      to check for flush again.
      
      Without that check, the function would keep waiting for the condition
      variable to be notified before checking for flushing condition again,
      and that may very well never happen. This was reproduced when during pad
      deactivation when running WebKit in gdb.
      b50abd9f
  25. 20 Jul, 2019 1 commit
    • Nicolas Dufresne's avatar
      identity: Non-live upstream have no max latency · 86b9f787
      Nicolas Dufresne authored
      sync=TRUE implementation changes the latency query of a non-live
      upstream into live, though it wrongly set the upstream max latency to 0.
      As non-live sources won't loose data if we wait longer, this should have
      been reported as have no max latency limite (-1).
      86b9f787
  26. 19 Jul, 2019 2 commits
  27. 15 Jul, 2019 2 commits
    • Sebastian Dröge's avatar
      55e79c37
    • Sebastian Dröge's avatar
      info: Deprecate gst_debug_category_free() · 04a73341
      Sebastian Dröge authored
      And change it to do nothing at all.
      
      As debug categories don't use reference counting and they can be
      retrieved from anywhere at any time by name, it is fundamentally unsafe
      to free them at any point in time except for right before the end of the
      process.
      
      No code apart from a unit test seems to be currently using the function,
      so deprecate it and also change it to do nothing at all.
      04a73341
  28. 11 Jul, 2019 1 commit
  29. 09 Jul, 2019 1 commit
    • Sebastian Dröge's avatar
      aggregator: Make parsing of explicit sink pad names more robust · 09909d37
      Sebastian Dröge authored
      When passing "sink_%d" twice to aggregator before it would create two
      pads called "sink_0", because it failed to parse "%d" as integer and
      used 0 instead then.
      
      Instead validate that parsing was actually successful and also don't
      even try to parse if the requested pad name contains a '%'.
      09909d37
  30. 08 Jul, 2019 2 commits