User Tools

Site Tools


waveform_thread_refactor

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
waveform_thread_refactor [2008/09/23 20:39]
rryan created
waveform_thread_refactor [2009/10/13 00:20]
rryan
Line 4: Line 4:
 ===== Summary and Rationale ===== ===== Summary and Rationale =====
  
-**Status**: This specification is **in progress**. Any extra features people think of should be sent to the mailing list.+**Status**: This specification is **abandoned**. The WaveSummary thread was replaced by the AnalyserQueue in Mixxx 1.7.0. 
  
 The current WaveSummary thread does not work for our purposes. There are specifically two problems: The current WaveSummary thread does not work for our purposes. There are specifically two problems:
Line 25: Line 26:
 What should happen: A song should have its waveform displayed the second it is loaded to a deck. If a song leaves the deck, CPU time should not be wasted on it anymore. What should happen: A song should have its waveform displayed the second it is loaded to a deck. If a song leaves the deck, CPU time should not be wasted on it anymore.
  
 +===== Proposed Solution =====
 +
 +Make the following changes to WaveSummary Thread
 +  * Eliminate the queue functionality
 +  * Generate both the waveform summary and visual waveform downsampled data, and store them privately
 +  * Support a '​halt'​ method which will cause it to stop processing, and shut down its thread. ​
 +  * Support being started at any time to generate the visual waveform or waveform summary of the TrackInfoObject that it corresponds to.
 +  * If work on either of the 2 buffers has already completed, it will not repeat work.
 +  * The WaveSummary thread will be in charge of the deletion of the wavesummary buffer and visual waveform buffer
 +
 +Make the following changes to TrackInfoObject
 +  * Every TrackInfoObject will have its own WaveSummary object
 +  * TrackInfoObject will no longer hold pointers to the WaveSummary object. The getWaveSummary and getVisualWaveform calls will remain, but they will be replaced with inline calls to the corresponding get method of the WaveSummary Thread.
 +
 +Make the following changes to Track
 +  * Where it previously queued a track for WaveSummary processing, ensure the TrackInfoObject has a WaveSummary thread, and start it
 +
 +There will be other minor changes to other places in the codebase, but these are the most significant.
 +
 +===== Current Work =====
 +
 +Who is interested in doing this: rryan
  
 +Currently, the rryan-wavesummary-refactor branch is a half-done version of this. (9/​2008) ​
waveform_thread_refactor.txt · Last modified: 2009/10/13 00:20 by rryan