1. 12 Feb, 2020 1 commit
    • 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
  2. 10 Feb, 2020 1 commit
  3. 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
  4. 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
  5. 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
  6. 23 Jan, 2020 1 commit
  7. 09 Jan, 2020 1 commit
  8. 06 Jan, 2020 1 commit
  9. 28 Dec, 2019 1 commit
  10. 27 Dec, 2019 1 commit
    • Mathieu Duponchelle's avatar
      gst-launch: handle ERROR messages in the sync handler · 4f9cac06
      Mathieu Duponchelle authored
      Errors causing the pipeline to fail going from NULL to PAUSED
      were not displayed, and the pipeline was not dumped either in
      those cases.
      
      In addition, dumping the pipeline from the sync handler means
      the dump matches exactly the state of the pipeline at the
      moment the error was posted.
      4f9cac06
  11. 26 Dec, 2019 2 commits
    • Seungha Yang's avatar
      gst-inspect: Increase array size for printing rank name · b5c19c74
      Seungha Yang authored
      Now the rank value can be MAX_INT (2147483647)
      b5c19c74
    • Seungha Yang's avatar
      pluginfeature: Allow updating initial rank of plugin feature · 52706146
      Seungha Yang authored
      Introducing "GST_PLUGIN_FEATURE_RANK" environment variable in order for users
      to adjust rank of plugin(s) via environment.
      
      A "feature" and "rank" key-value pair should be separable by ":",
      and each key-value pair is recognized per "," delimiters. The rank
      can be a numerical value or one of pre-defined rank values
      such as "NONE", "MARGINAL", "SECONDARY", and "PRIMARY" in case-insensitive manner.
      
      In addition to pre-defined { NONE, MARGINAL, SECONDARY, PRIMARY },
      "MAX" can be passed to key value used to ensure having a higher rank
      than other plugin features.
      
      Example)
      - GST_PLUGIN_FEATURE_RANK=qtdemux:256,h264parse:NONE
      Set rank of qtdemux plugin to 256 (primary) and 0 (none) for h264parse.
      52706146
  12. 25 Dec, 2019 1 commit
    • Nirbheek Chauhan's avatar
      gstinfo: Add new API for getting debug log lines · 72daeee2
      Nirbheek Chauhan authored
      If you're using a custom log handler, you had to reverse-engineer the
      debug log format and create your own format function. Now, you can
      call `gst_debug_log_get_line()` and it will return a string (without
      ANSI escape color codes) representation instead.
      
      This is useful in situations when you need to log the ordinary
      gst_debug log to a resource that can't be opened as a `FILE` handle.
      
      Also includes a test.
      72daeee2
  13. 20 Dec, 2019 3 commits
    • Mathieu Duponchelle's avatar
      tests: remove system-dependent tests · 8140da74
      Mathieu Duponchelle authored
      We now have GstTestClock-based tests that validate the same logic,
      without inducing spurious timing failures / overly relying on sleeps.
      
      Fixes: #346
      Fixes: #347
      Fixes: #348
      
      Co-authored by: Thibault Saunier <tsaunier@igalia.com>
      8140da74
    • Thibault Saunier's avatar
      tests-clock: Fix race in test_late_crank · 767e0e46
      Thibault Saunier authored
      There was a case where we started waiting on the clock before setting
      the clock time, leading to the wait succeeding instead of being late:
      
          gsttestclock.c:1073:F:testclock:test_late_crank:0: '1 * GST_SECOND' (1000000000) is not equal to 'context.jitter' (-4000000000)
      
      Fixes #426
      
      Co-authored by: Mathieu Duponchelle <mathieu@centricular.com>
      767e0e46
    • Niels De Graef's avatar
      bin: Add method to find elements by factory name · 0cb3940c
      Niels De Graef authored
      A common use case of a dynamically built pipeline is that you want to
      (conditionally) find a certain element, e.g. the `rtpbin`s in a
      `uridecodebin`. If that element has a fixed name inside its parent bin
      (and only has a single instance) this can be easily done by
      `gst_bin_get_by_name()`.
      
      If there are multiple instances of the element however, you can only use
      `gst_bin_iterate_all_by_interface()`, but this doesn't work if you don't
      have the specific `GType` (which is often the case, due to plugins being
      dynamically loaded). As such, another fallback could be to use the
      well-known name of the element's factory (in case of our example, this
      is of course `"rtpbin"`).
      0cb3940c
  14. 18 Dec, 2019 1 commit
  15. 14 Dec, 2019 1 commit
    • Mathieu Duponchelle's avatar
      tests: fix pipelines_parse_launch.delayed_link flakiness · 25d79143
      Mathieu Duponchelle authored
      Fixes #345
      
      There were two causes for the flakiness, one much rarer than
      the other.
      
      The test sets up a source with a sometimes pad added during
      the transition of a wrapper bin from READY to PAUSED.
      
      It runs 4 iterations, the last of which makes it so the
      negotiation fails.
      
      In that case, the intention as correctly presented by the following
      comment:
      
      /* [..] ie, the pipeline should create ok but fail to change state */
      
      However the implementation of run_delayed_test was neither calling
      get_state on the pipeline (it called it on the wrapper bin), nor
      checking that the return of get_state was FAILURE (it actually
      checked that it was not).
      
      This led to an obvious race condition, and was fixed by calling
      get_state on the pipeline, then checking that in this specific
      case (expect_link == FALSE), the state change has actually failed.
      
      The second, rarer race condition is at set_state time. When we
      don't expect the link to succeed, the return of set_state may
      either be FAILURE or ASYNC, depending on timing. This was fixed
      by taking expect_link into account when checking the return value
      of set_state.
      
      Co-authored by: Thibault Saunier <tsaunier@igalia.com>
      25d79143
  16. 12 Dec, 2019 3 commits
  17. 11 Dec, 2019 1 commit
  18. 10 Dec, 2019 2 commits
  19. 06 Dec, 2019 1 commit
  20. 05 Dec, 2019 3 commits
  21. 04 Dec, 2019 3 commits
  22. 03 Dec, 2019 1 commit
  23. 28 Nov, 2019 2 commits
  24. 27 Nov, 2019 3 commits
  25. 25 Nov, 2019 1 commit