1. 04 Oct, 2019 1 commit
  2. 30 Sep, 2019 1 commit
  3. 17 Sep, 2019 1 commit
  4. 16 Sep, 2019 1 commit
    • Mathieu Duponchelle's avatar
      deviceprovider: set the bus to non-flushing before calling klass->start · a9e27760
      Mathieu Duponchelle authored
      Not posting DEVICE_ADDED messages while a device provider is being
      started makes things awkward for applications, as they have to call
      get_devices() after starting the monitor.
      
      This requires redundant code on the application side, and as far as
      I understand also could cause race conditions, when a device gets
      added between the calls to gst_device_monitor_start() and
      gst_device_monitor_get_devices(), causing the application to "see"
      the same device twice.
      a9e27760
  5. 12 Sep, 2019 3 commits
  6. 11 Sep, 2019 1 commit
    • Sebastiano Barrera's avatar
      base: GstBaseSrc/GstBaseSink::get_caps: add (nullable) to `filter` · 89dfda56
      Sebastiano Barrera authored
      The virtual method named `get_caps` in both `GstBaseSrc` and
      `GstBaseSink` has a `filter` parameter which can be `NULL` (the
      default implementation in GstBaseSrc already considers the case).
      Before this commit, there was no gtk-doc annotation representing this
      fact, which caused the corresponding entry in the GIR file to also
      miss this fact.
      
      This caused bugs in other places, such inducing the Vala compiler to
      introduce a wrongly assert on `(filter != NULL)` in every
      implementation of the `get_caps` method implemented in Vala.
      89dfda56
  7. 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
  8. 07 Sep, 2019 1 commit
  9. 06 Sep, 2019 1 commit
  10. 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
  11. 04 Sep, 2019 1 commit
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 24 Aug, 2019 2 commits
  18. 23 Aug, 2019 1 commit
  19. 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
  20. 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 #428
      74797e96
  21. 15 Aug, 2019 1 commit
  22. 14 Aug, 2019 3 commits
  23. 13 Aug, 2019 3 commits
  24. 12 Aug, 2019 1 commit
  25. 09 Aug, 2019 1 commit
  26. 07 Aug, 2019 1 commit
  27. 06 Aug, 2019 3 commits
  28. 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
  29. 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
  30. 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
  31. 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