1. 16 Aug, 2017 2 commits
  2. 14 Aug, 2017 3 commits
  3. 11 Aug, 2017 2 commits
    • George Kiagiadakis's avatar
      vpxenc: discard frames that have been dropped by libvpx · 36fc2a74
      George Kiagiadakis authored
      This fixes a memory leak. When dropframe-threshold has been set,
      libvpx may output less frames than the input ones, which causes
      some GstVideoCodecFrames to queue up in GstVideoEncoder's internal
      frame queue with no chance of ever being all released. And because
      the frames keep references to the input buffers, the input buffer
      pool keeps allocating new buffers and memory usage grows very fast.
      For example the following pipeline's memory usage grows at a rate
      of about 1GB per minute!
      
      videotestsrc ! capsfilter caps=video/x-raw,width=1920,height=1080,framerate=30/1,format=I420 ! \
        vp8enc target-bitrate=1000000 end-usage=cbr dropframe-threshold=95 ! fakesink
      
      https://bugzilla.gnome.org/show_bug.cgi?id=783086
      36fc2a74
    • Mathieu Duponchelle's avatar
      rtpstats: fix unsigned integer comparisons. · 5e48e85f
      Mathieu Duponchelle authored
      Callers of the API (rtpsource, rtpjitterbuffer) pass clock_rate
      as a signed integer, and the comparison "<= 0" is used against
      it, leading me to think the intention was to have the field
      be typed as gint32, not guint32.
      
      This led to situations where we could call scale_int with
      a MAX_UINT32 (-1) guint32 as the denom, thus raising an
      assertion.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=785991
      5e48e85f
  4. 10 Aug, 2017 5 commits
  5. 08 Aug, 2017 1 commit
  6. 06 Aug, 2017 1 commit
  7. 02 Aug, 2017 5 commits
  8. 01 Aug, 2017 3 commits
  9. 31 Jul, 2017 1 commit
  10. 27 Jul, 2017 6 commits
  11. 25 Jul, 2017 1 commit
  12. 24 Jul, 2017 5 commits
  13. 22 Jul, 2017 1 commit
    • Nicolas Dufresne's avatar
      v4l2object: Fix colorimetry validation · 4bcec1b1
      Nicolas Dufresne authored
      While not documented, gst_video_colorimetry_matches() only accepts well
      known names. Looking at the code and unit test, this seems to be on
      purpose, so fixing by parsing the string and compating the colorimetry
      structures.
      4bcec1b1
  14. 21 Jul, 2017 4 commits
    • Nicolas Dufresne's avatar
      v4l2encoder: Fix negotiation error handling · ef633e28
      Nicolas Dufresne authored
      The subclass negotiated function will call set_format, if that fails the
      pool will not be created. We ended up with an assertion.
      
      GStreamer-CRITICAL **: gst_buffer_pool_set_active: assertion 'GST_IS_BUFFER_POOL (pool)' failed
      ef633e28
    • Nicolas Dufresne's avatar
      v4l2src: Speedup camera startup by skipping try_fmt · b3e089d4
      Nicolas Dufresne authored
      In this commit, we enabled skip_try_fmt_probes quirk in order to speed
      up the start which is known to be disastrously slow with certain USB
      cameras.
      
      This has the side effect that we needed to rewrite the entire
      negotiation process in a way that we iterate over the possible caps
      until we find one that works.
      
      The new negotiation method consist of extracting a preferred structure
      from the peer caps and using this to fixate and sort the caps. To
      reflect the old behaviour, we sort all resolution strictly bigger
      to the preferred one with the closes one first. The rest is appended,
      keeping the same order. We then normalize the caps in case there was
      some list of interlace-mode or colorimetry left. We finally iterate
      over all fixed caps and try it. 99% of the time, the first or the
      second one should work, whit the result of a single S_FMT being issues.
      
      From there, it will be relatively easy to introduce new negotiation
      algorithm. The current algorithm is made for optimal image quality
      with a scaling sink that sets it's window resolution as preference.
      This the case if for:
      
        v4l2src ! videoconvert ! videoscale ! ximagesink
      
      Other strategy would be needed to optimize for non-scaling sink like
      ximagesink or kmssink when the driver does not scale.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=785156
      b3e089d4
    • Nicolas Dufresne's avatar
      v4l2object: Introduce quirk to skip slow probes · cae0b9a2
      Nicolas Dufresne authored
      skip_try_fmt_probes quirk is set, V4L2 object will not probe for
      interlace-mode and colorimetry to avoid relying on try_fmt. This quirk
      will be used by v4l2src to avoid desastrous startup time with slow
      USB webcams.
      
      When this quirk is enabled, caller will have to iterate over the
      negotiated caps as it may contains unsupported formats. If the peer
      didn't choose a specific interlace-mode, or colorimetry, the value
      chosen by the driver is set into the caps. For this reason, when this
      mode is enabled, gst_v4l2_object_set_format() will require writable
      caps.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=785156
      cae0b9a2
    • Nicolas Dufresne's avatar
      v4l2object: always set the GstV4l2Error on error · 7d3b2628
      Nicolas Dufresne authored
      Some of the error case were conditional to using try_fmt or not.
      This is slightly unexpected, always set the error so the caller
      can decide.
      
      https://bugzilla.gnome.org/show_bug.cgi?id=785156
      7d3b2628