1. 16 May, 2019 1 commit
  2. 02 May, 2019 1 commit
    • Thibault Saunier's avatar
      element: Make return value of setters mean something · d87578c8
      Thibault Saunier authored
      Setters return values should return %FALSE **only** when the value
      could not be set, not when unchanged or when the subclass handled
      it itself!
      
      This patches makes it so the return value is meaningul by allowing
      subclasses return anything different than `TRUE` or `FALSE` (convention
      is -1) to let the subclass now that it took care of everything and
      no signal should be emited.
      d87578c8
  3. 01 May, 2019 1 commit
  4. 15 Mar, 2019 3 commits
    • Thibault Saunier's avatar
      Reimplement the timeline editing API · a46390ff
      Thibault Saunier authored
      This is implemented on top of a Tree that represents the whole timeline.
      
      SourceClips can not fully overlap anymore and the tests have been
      updated to take that into account. Some new tests were added to verify
      that behaviour in greater details
      a46390ff
    • Thibault Saunier's avatar
      timeline-element: Add a method to retrieve layer priority · 7c5f2d11
      Thibault Saunier authored
      Each timeline element is in a layer (potentially spanning
      over several), it is very often useful to retrieve an element
      layer priority (from an app perspective more than the element
      priority itself as that is a bit of an implementation detail
      in the end).
      
      Port tests to it
      7c5f2d11
    • Thibault Saunier's avatar
      ges: Move GESClipFlags to GESTimelineElementFlags · 69456e4f
      Thibault Saunier authored
      Keeping it internal
      
      And add an internal method to get layer priority for GESTimelineElements
      (dirty implementation to make it simple for now)
      69456e4f
  5. 26 Dec, 2018 1 commit
  6. 15 Dec, 2018 1 commit
    • Tim-Philipp Müller's avatar
      WIP: ges: fix API export/import and 'inconsistent linkage' on MSVC · a7347ca8
      Tim-Philipp Müller authored
      Export GES library API in headers when we're building the
      library itself, otherwise import the API from the headers.
      
      This fixes linker warnings on Windows when building with MSVC.
      
      Fix up some missing config.h includes when building the lib which
      is needed to get the export api define from config.h
      
      Fixes #42
      a7347ca8
  7. 05 Nov, 2018 2 commits
  8. 02 Nov, 2018 1 commit
  9. 06 Sep, 2018 1 commit
  10. 26 Mar, 2018 1 commit
  11. 02 Mar, 2018 1 commit
  12. 11 Jan, 2018 1 commit
  13. 27 Nov, 2017 1 commit
  14. 03 Jul, 2017 1 commit
  15. 23 Jun, 2017 1 commit
  16. 20 May, 2017 1 commit
  17. 08 Mar, 2017 1 commit
  18. 09 Jan, 2017 1 commit
  19. 01 Dec, 2016 1 commit
  20. 09 Nov, 2016 1 commit
  21. 26 Sep, 2016 1 commit
  22. 13 Aug, 2016 1 commit
  23. 20 Jun, 2016 1 commit
  24. 14 May, 2016 1 commit
  25. 07 May, 2016 1 commit
  26. 22 Apr, 2016 1 commit
  27. 26 Feb, 2016 1 commit
    • Sjors Gielen's avatar
      Handle changing playback rate · 84f7f04a
      Sjors Gielen authored
      Before this patch, NLE and GES did not support NleOperations (respectively
      GESEffects) that changed the speed/tempo/rate at which the source plays. For
      example, the 'pitch' element can make audio play faster or slower. In GES 1.5.90
      and before, an NleOperation containing the pitch element to change the rate (or
      tempo) would cause a pipeline state change to PAUSED after that stack; that has
      been fixed in 1.5.91 (see #755012 [0]). But even then, in 1.5.91 and later,
      NleComposition would send segment events to its NleSources assuming that one
      source second is equal to one pipeline second. The resulting early EOS event
      (in the case of a source rate higher than 1.0) would cause it to switch stacks
      too early, causing confusion in the timeline and spectacularly messed up
      output.
      
      This patch fixes that by searching for rate-changing elements in
      GESTrackElements such as GESEffects. If such rate-changing elements are found,
      their final effect on the playing rate is stored in the corresponding NleObject
      as the 'media duration factor', named like this because the 'media duration',
      or source duration, of an NleObject can be computed by multiplying the duration
      with the media duration factor of that object and its parents (this is called
      the 'recursive media duration factor'). For example, a 4-second NleSource with
      an NleOperation with a media duration factor of 2.0 will have an 8-second media
      duration, which means that for playing 4 seconds in the pipeline, the seek
      event sent to it must span 8 seconds of media. (So, the 'duration' of an
      NleObject or GES object always refers to its duration in the timeline, not the
      media duration.)
      
      To summarize:
      
      * Rate-changing elements are registered in the GESEffectClass (pitch::tempo and
        pitch::rate are registered by default);
      * GESTimelineElement is responsible for detecting rate-changing elements and
        computing the media_duration_factor;
      * GESTrackElement is responsible for storing the media_duration_factor in
        NleObject;
      * NleComposition is responsible for the recursive_media_duration_factor;
      * The latter property finally fixes media time computations in NleObject.
      
      NLE and GES tests are included.
      
      [0] https://bugzilla.gnome.org/show_bug.cgi?id=755012
      
      Differential Revision: https://phabricator.freedesktop.org/D276
      84f7f04a
  28. 17 Jan, 2016 2 commits
  29. 26 Dec, 2015 1 commit
  30. 21 Dec, 2015 1 commit
  31. 30 Sep, 2015 1 commit
  32. 16 Jul, 2015 1 commit
  33. 03 Jul, 2015 2 commits
  34. 31 Mar, 2015 1 commit
  35. 19 Mar, 2015 1 commit