GSoC 2023: Improve Waveform drawing speed

Week 5 Report: July 10th to July 16th

  • Merged the multithreading PR .
  • Still iterating over the design of loading partial sound segments. I just dumped all the ongoing changes to this single commit: https://projects.blender.org/Yup_Lucas/blender/commit/c623c3c266fc32b0903bbd7c141dd2032b56681d
  • Dealing with multiple segments turned out to be more difficult than I initially anticipated:
    • When we need to draw an audio segment, it can fall under one of the categories below (see attached drawing for an illustration):
      • Overlap with the “left side” of an already loaded segment
      • Overlap with the “right side” of an already loaded segment
      • Overlap both the “left” and “right” sides of an already loaded segment
      • Contained inside an already loaded segment
      • Does not overlap any segment
    • The problem with this overlap approach is that we need to compact segments (i.e., merge them) over time. If we don’t do that, we’ll end up with a huge list of segments that need to be iterated over every time.

I’m thinking along the lines of eagerly merging segments whenever a new segment is loaded. This can happen in the background thread responsible for loading segments.

Diagram with segment overlaps

Next steps

  • Keep iterating over the segment loading design
5 Likes