1. 09 Apr, 2020 1 commit
  2. 08 Apr, 2020 5 commits
  3. 06 Apr, 2020 2 commits
  4. 05 Apr, 2020 7 commits
  5. 03 Apr, 2020 7 commits
  6. 02 Apr, 2020 6 commits
  7. 01 Apr, 2020 2 commits
    • Sebastian Dröge's avatar
      audiofx: Add audioloudnorm filter based on the ffmpeg af_loudnorm filter · 666ec7d5
      Sebastian Dröge authored
      This normalizes the loudness of an audio stream to a target loudness
      with a given maximum peak based on EBU R128.
      Conceptually it keeps a 3s lookahead for calculating the perceived
      loudness and based on that calculates the gain required to reach the
      target loudness. The calculated gains then go through a gaussian filter
      for smoothening and are then applied to the audio in 100ms blocks. Each
      of the 100ms blocks is then passed to a limiter filter to prevent going
      above the maximum peak.
      See http://k.ylo.ph/2016/04/04/loudnorm.html for some more details about
      the algorithm.
      It introduces 3s of latency and currently only works on 192kHz audio.
      Using it with a different sample rate requires resampling before and
      afterwards. The upsampling is required to calculate the true peak.
      Other than the ffmpeg filter it currently does not support two-pass
      processing but only one-pass/live processing.
      Compared to the ffmpeg filter this code was refactored considerably and
      the limiter implementation was fixed to actually work, as well as
      various other bugs in different places that were fixed.
    • Guillaume Desmottes's avatar
      threadshare: fix GstClockTime formatting · 4bfd1f76
      Guillaume Desmottes authored
      GstClockTime is a guint64 whose format is platform dependent.
  8. 30 Mar, 2020 1 commit
  9. 28 Mar, 2020 1 commit
  10. 27 Mar, 2020 2 commits
  11. 26 Mar, 2020 1 commit
  12. 24 Mar, 2020 1 commit
  13. 22 Mar, 2020 1 commit
  14. 21 Mar, 2020 3 commits
    • François Laignel's avatar
      threadshare/*src: rework pause/flush_start/flush_stop · 116cf9bd
      François Laignel authored
      This commit fixes several issues with the `Ts*Src` elements.
      The pause functions used cancel_task which breaks the Task loop at await
      points. For some elements, this implies making sure no item is being lost.
      Moreover, cancelling the Task also cancels downstream processing, which
      makes it difficult to ensure elements can handle all cases.
      This commit reimplements Task::pause which allows completing the running
      loop iteration before pausing the loop.
      See !277 (comment 439529)
      In the Paused state, incoming items were rejected by TsAppSrc and DataQueue.
      See !277 (comment 438455)
      - FlushStart must engage items rejection and cancel the Task.
      - FlushStop must purge the internal stream & accept items again.
      If the task was cancelled, `push_prelude` could set `need_initial_events`
      to `true` when the events weren't actually pushed yet.
      TsAppSrc used to renew its internal channel which could cause Buffer loss
      when transitionning Playing -> Paused -> Playing.
      See #98
    • Mathieu Duponchelle's avatar
      sccparse: fix timestamps · 3c82f7d8
      Mathieu Duponchelle authored
      There is no reason to have the buffers' PTS start at 0
    • Mathieu Duponchelle's avatar