1. 03 May, 2021 2 commits
  2. 30 Apr, 2021 1 commit
  3. 27 Apr, 2021 1 commit
  4. 21 Apr, 2021 2 commits
  5. 14 Apr, 2021 1 commit
  6. 13 Apr, 2021 3 commits
  7. 07 Apr, 2021 1 commit
  8. 25 Mar, 2021 3 commits
  9. 15 Mar, 2021 3 commits
  10. 10 Mar, 2021 2 commits
    • Guillaume Desmottes's avatar
      audioaggregator: fix input_buffer ownership · 42b4ed92
      Guillaume Desmottes authored
      The way pad->priv->input_buffer reference was managed was pretty
      spurious:
      - it was overridden without unrefing it, which could potentially lead to
        leaks.
      - we were unreffing it while keeping the pointer around, which could
        potentially lead to use-after-free or double-free.
      
      As priv->input_buffer is actually no longer used outside of the
      aggregate() method, remove it from pad->priv to simplify the code and
      prevent the issues desribed above.
      
      Fix a single buffer leak when shutting down the pipeline as the buffer
      returned from gst_aggregator_pad_drop_buffer() was never unreffed.
      
      Part-of: <!1062>
      42b4ed92
    • Guillaume Desmottes's avatar
      audioaggregator: fix input buffer when converting · 48416f80
      Guillaume Desmottes authored
      This code path is meant to convert the current buffer to the new format
      on update. It was using priv->input_buffer as input which is either
      priv->buffer or a converted version of it.
      Use priv->buffer instead as priv->input_buffer may no longer be a valid
      reference.
      
      Part-of: <!1062>
      48416f80
  11. 26 Feb, 2021 1 commit
  12. 25 Feb, 2021 2 commits
  13. 24 Feb, 2021 1 commit
  14. 19 Feb, 2021 1 commit
  15. 17 Feb, 2021 3 commits
    • Tim-Philipp Müller's avatar
      uridecodebin3: make caps property work · 82c52582
      Tim-Philipp Müller authored
      The caps set on uridecodebin3 via the "caps" property
      were never passed to the internal decodebin3, so did
      absolutely nothing.
      
      Fixes #837
      
      Part-of: <!1038>
      82c52582
    • Alicia Boya García's avatar
      videodecoder: Fix racy critical when pool negotiation occurs during flush · b944a254
      Alicia Boya García authored
      I found a rather reproducible race in a WebKit LayoutTest when a player
      was intantiated and a VP8/9 video was loaded, then torn down after
      getting the video dimensions from the caps.
      
      The crash occurs during the handling of the first frame by gstvpxdec.
      The following actions happen sequentially leading to a crash.
      
      (MT=Main Thread, ST=Streaming Thread)
      
      MT: Sets pipeline state to NULL, which deactivates vpxdec's srcpad,
          which in turn sets its FLUSHING flag.
      
      ST: gst_vpx_dec_handle_frame() -- which is still running -- calls
          gst_video_decoder_allocate_output_frame(); this in turn calls
          gst_video_decoder_negotiate_unlocked() which fails because the
          srcpad is FLUSHING. As a direct consequence of the negotiation
          failure, a pool is NOT set.
      
          gst_video_decoder_negotiate_unlocked() still assumes there is a
          pool, crashing in a critical in gst_buffer_pool_acquire_buffer()
          a couple statements later.
      
      This patch fixes the bug by returning != GST_FLOW_OK when the
      negotiation fails. If the srcpad is FLUSHING, GST_FLOW_FLUSHING is
      returned, otherwise GST_FLOW_ERROR is used.
      
      Part-of: <!1037>
      b944a254
    • Jan Alexander Steffens's avatar
      libs: audio: Fix gst_audio_buffer_truncate meta handling · ee0f9de6
      Jan Alexander Steffens authored
      In the non-interleaved case, it made `buffer` writable but then changed
      the meta of the non-writable buffer.
      
      Part-of: <!1036>
      ee0f9de6
  16. 30 Jan, 2021 1 commit
  17. 28 Jan, 2021 1 commit
  18. 14 Jan, 2021 1 commit
  19. 13 Jan, 2021 3 commits
  20. 12 Jan, 2021 1 commit
  21. 05 Jan, 2021 1 commit
  22. 04 Jan, 2021 1 commit
    • Tim-Philipp Müller's avatar
      tagdemux: resize and trim buffer in place to fix interaction with oggdemux · a89b4757
      Tim-Philipp Müller authored
      Elements operating in pull mode may optionally pass a buffer to
      pull_range that should be filled with the data. The only element
      that does that at the moment is oggdemux operating in pull mode.
      
      tagdemux currently creates a sub-buffer whenever a buffer pulled
      from upstream (filesrc, usually) needs to be trimmed. This creates
      a new buffer, however, so disregards any passed-in buffer from a
      downstream oggdemux.
      
      This would cause assertion failures and playback problems for
      ogg files that contain ID3 tags at the end.
      
      Fixes #848
      
      Part-of: <!995>
      a89b4757
  23. 01 Jan, 2021 1 commit
    • Mathieu Duponchelle's avatar
      compositor/blend: fix blending of subsampled components · 0fdc1ca8
      Mathieu Duponchelle authored
      The correct way to determine the byte offset at a certain yoffset
      in a subsampled component is to shift the yoffset by the component's
      hsub
      
      This fixes out-of-bounds memory accesses and visible artefacts,
      example pipeline with the samples from #802:
      
      gst-launch-1.0 compositor name=vmixer sink_1::xpos=1910 sink_1::ypos=1080 ! \
          videoconvert ! videorate ! xvimagesink \
        filesrc location=VID_20200723_203606.mp4 ! decodebin name=demux1 ! \
          queue ! videoflip method=vertical-flip ! vmixer. \
        filesrc location=bridgeoverstubbledwater.mp4 ! decodebin name=demux2 ! \
          queue ! vmixer.
      
      Part-of: <!989>
      0fdc1ca8
  24. 31 Dec, 2020 2 commits
    • Mathieu Duponchelle's avatar
      appsrc: fix signal documentation · a85b149f
      Mathieu Duponchelle authored
      Part-of: <!993>
      a85b149f
    • Edward Hervey's avatar
      videoaggregator: Pop out old buffers on timeout · 8149de13
      Edward Hervey authored
      This situation happens in the situation where an input stream has a framerate
      exceeding the timeout latency (Ex: 1fps with a latency of 500ms) and an input
      stream greater than output framerate (ex: 60fps in, 30 fps out).
      
      The problem that would happen is that we would timeout, but then buffers from
      the fast input stream would only be popped out one by one.... until a buffer
      reaches the low-framerate input stream at which point they would quickly be
      popped out/used. The resulting output would be "slow ... fast ... slow ... fast"
      of that input fast stream.
      
      In order to avoid this situation, whenever we detect a late buffer, check if
      there's a next one and re-check with that one.
      
      Part-of: <!991>
      8149de13
  25. 15 Dec, 2020 1 commit