1. 10 May, 2020 2 commits
  2. 08 May, 2020 7 commits
  3. 06 May, 2020 10 commits
    • Jan Schmidt's avatar
      tests/input selector: Fix a shutdown crash · e329e1f7
      Jan Schmidt authored
      Hold a ref to the pad we're planning on sending EOS too, so that
      it doesn't disappear if things shut down before the thread gets
      to actually send the EOS event.
      
      Part-of: <gstreamer/gstreamer!467>
      e329e1f7
    • Thibault Saunier's avatar
      identity: Handle seeking with single_segment=True · cb212c9f
      Thibault Saunier authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      Identity was ignoring seek and flush events even when using
      a single segment. In the end it means that we couldn't compute
      buffers running-time and stream time after seeks.
      
      This commits adds support for flushing seeks only as I have no idea
      what to do for non flushing ones.
      
      Part-of: <gstreamer/gstreamer!450>
      cb212c9f
    • Thibault Saunier's avatar
      identity,clocksync: Fix timestamping inside single segment in reverse playback · b517b591
      Thibault Saunier authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      In reverse playback, buffers are played back from buffer.stop
      (buffer.pts + buffer.duration) to buffer.pts running times which
      mean that we need to use the buffer end running time as a buffer
      timestsamp, not the buffer pts when using a single segment in reverse
      playback.
      
      This is now being tested in
      `validate.test.identity.reverse_single_segment`
      
      Part-of: <gstreamer/gstreamer!450>
      b517b591
    • Thibault Saunier's avatar
      basesink: Fix clock synchronization running time in reverse playback · 39b9cc55
      Thibault Saunier authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      In reverse playback, buffers have to be displayed at buffer.stop running
      time, otherwise a same set of buffer can't be displayed in the exact opposite
      order to forward playback.
      
      For example, seeking a video stream at 1fps with start=0, stop=5s, rate=1.0
      
      will display the following buffers:
      
        b0.pts = 0s, b0.duration = 1s - at running time = 0s
        b1.pts = 1s, b1.duration = 1s - at running time = 1s
        b2.pts = 2s, b2.duration = 1s - at running time = 2s
        b3.pts = 3s, b3.duration = 1s - at running time = 3s
        b4.pts = 4s, b4.duration = 1s - at running time = 4s
        <wait at EOS for 1second>
      
      Now, playing that reverse with start=0, stop=5s, rate=1.0 has to display
      the following buffers:
      
        b0.pts = 4s, b0.duration = 1s - at running time = 0s
        b1.pts = 3s, b1.duration = 1s - at running time = 1s
        b2.pts = 2s, b2.duration = 1s - at running time = 2s
        b3.pts = 1s, b3.duration = 1s - at running time = 3s
        b4.pts = 0s, b4.duration = 1s - at running time = 4s
        <wait at EOS for 1second>
      
      With the previous code, it reproduced the following:
      
        b0.pts = 4s, b0.duration = 1s - at running time = 1s
        b1.pts = 3s, b1.duration = 1s - at running time = 2s
        b2.pts = 2s, b2.duration = 1s - at running time = 3s
        b3.pts = 1s, b3.duration = 1s - at running time = 4s
        b4.pts = 0s, b4.duration = 1s - at running time = 5s
        <NO WAIT AT EOS AND POST EOS RIGHT AWAY>
      
      This is being tested with the `validate.launch_pipeline.sink.reverse_playback_clock_waits.*`
      set of tests
      
      Part-of: <gstreamer/gstreamer!450>
      39b9cc55
    • Thibault Saunier's avatar
      basesrc: Fix the way position is computed in reverse playback · 4a025d77
      Thibault Saunier authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      In reverse playback, buffers are played back from buffer.stop
      (buffer.pts + buffer.duration) to buffer.pts, which means that the
      position after the buffer is consumed is buffer.pts, not buffer.pts -
      buffer.duration.
      
      Without that change, and when `automatic_eos` feature is on,
      we were dropping the last buffers as marking the stream EOS one buffer
      too soon.
      
      This is now being tested extensively by GstValidate in the
      `validate.test.clock_sync.*` set of tests.
      
      Part-of: <gstreamer/gstreamer!450>
      4a025d77
    • Tim-Philipp Müller's avatar
      pkgconfig: add pluginscannerdir variable · dc1a1e52
      Tim-Philipp Müller authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      So we can get this in a unified way from installed
      and uninstalled GStreamer when using pkg-config to
      set up test environments in other modules.
      
      See gstreamer/gst-plugins-base!582
      
      Part-of: <gstreamer/gstreamer!456>
      dc1a1e52
    • Edward Hervey's avatar
      taglist: Make equality check more uniform · 81752169
      Edward Hervey authored and Edward Hervey's avatar Edward Hervey committed
      Previously this was iterating over taglists with ... string names.
      
      Instead use the same technique as `gst_structure_is_equal()` with the additional
      double check.
      
      Part-of: <gstreamer/gstreamer!466>
      81752169
    • Sebastian Dröge's avatar
      registrybinary: Also call fclose() if fflush()/fsync() failed · a3c7e1c9
      Sebastian Dröge authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      Otherwise we would be leaking the file in error cases.
      
      Part-of: <!465>
      a3c7e1c9
    • Sebastian Dröge's avatar
      registrybinary: Don't call fclose() more than once · 0d1fe824
      Sebastian Dröge authored and GStreamer Marge Bot's avatar GStreamer Marge Bot committed
      We must not retry fclose() on EINTR as POSIX states:
      
        After the call to fclose(), any use of stream results in undefined
        behavior.
      
      We ensure above with fflush() and fsync() that everything is written out
      so chances of running into EINTR are very low. Nonetheless assume that
      the file can't be safely renamed, we'll just try again on the next
      opportunity.
      
      CID #1462697
      
      Part-of: <gstreamer/gstreamer!465>
      0d1fe824
    • Edward Hervey's avatar
      queue2: Use explicit limit checking · d854fb12
      Edward Hervey authored and Edward Hervey's avatar Edward Hervey committed
      When we know we'll only be checking the real limits, use a clearer/simpler
      macro.
      
      CID #1037148
      
      Part-of: <gstreamer/gstreamer!464>
      d854fb12
  4. 05 May, 2020 16 commits
  5. 04 May, 2020 5 commits