Skip to content
Snippets Groups Projects
  1. Jan 20, 2016
  2. Jan 16, 2016
    • Mathieu Duponchelle's avatar
      streamsynchronizer: Ignore flushing streams [..] · 437043db
      Mathieu Duponchelle authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      [..] when resetting group start time. In GES, we are usually connected
      to the streamsynchronizer on one audio and one video pad.
      
      When seeking the timeline, both nlecompositions often output their flush_start
      before any of them has output its flush_stop.
      
      The current code, when receiving the first flush stop was using the
      running time of the start of the second composition, which could
      be pretty much anything, and means nothing at that point.
      
      This patch is thread-safe, as STREAM_SYNCHRONIZER_LOCK is taken
      both when setting flushing and when checking it.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=750013
      437043db
    • Thibault Saunier's avatar
    • Edward Hervey's avatar
      playsink: Properly mark pending blocked pads · 3bc67006
      Edward Hervey authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
      When blocking input pads, we also need to properly set the appropriate
      pending flag.
      
      Without this, when switching stream types after initial configuration
      (like going from Audio+Video to Audio+Video+Sub) playsink would never
      wait for *all* input streams to be blocked (it would just wait for the
      new input pad (text in this case) to be blocked).
      
      Since the reconfiguration might introduce unlinking/relinking of elements,
      we need to ensure that *ALL* input streams are blocked.
      
      Failure to do so would result in having some input streams pushing data
      to inactive elements (returning GST_FLOW_FLUSHING) or unlinked pads
      (returning GST_FLOW_NOT_LINKED).
      
      A later optimization could involve only blocking the input pads that
      might be involved in reconfiguration. But better be safe than sorry for
      now :)
      3bc67006
  3. Jan 11, 2016
  4. Dec 28, 2015
  5. Dec 21, 2015
  6. Dec 14, 2015
  7. Dec 13, 2015
    • Tim-Philipp Müller's avatar
      rtpbasedepay: when setting discont flag make sure rtpbuffer is current · ab0ffe16
      Tim-Philipp Müller authored
      Depayloaders will look at rtpbuffer->buffer for the discont flag.
      When we set the discont flag on a buffer in the rtp base depayloader
      and we have to make the buffer writable, make sure the rtpbuffer
      actually contains the newly-flagged buffer, not the original input
      buffer. This was introduced with the addition of the process_rtp_packet
      vfunc, but would only trigger if the input buffer wasn't flagged
      already and was not writable already.
      ab0ffe16
    • Tim-Philipp Müller's avatar
      rtpbasedepay: fix possible refcounting issue when detecting a discont · f249b4c6
      Tim-Philipp Müller authored
      When we detect a discont and the input buffer isn't already flagged
      as discont, handle_buffer() does a gst_buffer_make_writable() on the
      input buffer in order to set the flag. This assumed it had ownership
      of the input buffer though, which it didn't. This would still work
      fine in most scenarios, but could lead to crashes or mini object
      unref criticals in some cases when a discont is detected, e.g. when
      using pcapparse in front of a depayloader. This problem was
      introduced in bc14cdf5.
      f249b4c6
  8. Dec 07, 2015
  9. Nov 17, 2015
  10. Nov 07, 2015
    • Edward Hervey's avatar
      decodebin: Properly deactivate ghostpads · 04242fbe
      Edward Hervey authored and Sebastian Dröge's avatar Sebastian Dröge committed
      Just setting the ghostpad as flushing wasn't enough. It needs to be
      consistent on the internal proxypad also, otherwise you end up in
      situations where:
      * a pending buffer on the target pad triggers the sticky event
        propagation
      * the default implementation sees that the proxypad is not flushing,
        so it tries to push it to the other pad (the actual ghostpad)
      * the ghostpad is flushing, so returns FALSE
      * the push_event function sees that pushing the event failed...
      * ... and pending buffer push returns GST_FLOW_ERROR, instead of
        GST_FLOW_FLUSHING
      
      By using gst_pad_set_active(FALSE), we ensure that both the ghostpad
      and the proxypad are flushing/deactivated. The situation above will
      no longer occur, and a GST_FLOW_FLUSHING will be returned.
      04242fbe
  11. Nov 05, 2015
  12. Oct 31, 2015
  13. Oct 30, 2015
  14. Oct 28, 2015
  15. Oct 27, 2015
  16. Oct 25, 2015
  17. Oct 23, 2015
    • Sebastian Dröge's avatar
      playbin: Send upstream events directly to playsink · cfb6d6e7
      Sebastian Dröge authored
      Send event directly to playsink instead of letting GstBin iterate
      over all sink elements. The latter might send the event multiple times
      in case the SEEK causes a reconfiguration of the pipeline, as can easily
      happen with adaptive streaming demuxers.
      
      What would then happen is that the iterator would be reset, we send the
      event again, and on the second time it will fail in the majority of cases
      because the pipeline is still being reconfigured
      cfb6d6e7
  18. Oct 22, 2015
  19. Oct 20, 2015
Loading