mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-11 17:41:15 +02:00
... Should have no effect on generated code, except perhaps some slight faster virtual function calls. Mostly useful as documentation of design intent. Tried to mark every one of our classes that inherits from another, or is a base for others, or has abstract virtual functions, and a few others besides.
84 lines
2.5 KiB
C++
84 lines
2.5 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
ODComputeSummaryTask.h
|
|
|
|
Created by Michael Chinen (mchinen) on 6/8/08.
|
|
Audacity(R) is copyright (c) 1999-2008 Audacity Team.
|
|
License: GPL v2. See License.txt.
|
|
|
|
******************************************************************//**
|
|
|
|
\class ODComputeSummaryTask
|
|
\brief Computes the summary data for a PCM (WAV) file and writes it to disk,
|
|
updating the ODPCMAliasBlockFile and the GUI of the newly available data.
|
|
|
|
*//*******************************************************************/
|
|
|
|
#ifndef __AUDACITY_ODComputeSummaryTask__
|
|
#define __AUDACITY_ODComputeSummaryTask__
|
|
|
|
#include <vector>
|
|
#include "ODTask.h"
|
|
#include "ODTaskThread.h"
|
|
class ODPCMAliasBlockFile;
|
|
class WaveTrack;
|
|
|
|
/// A class representing a modular task to be used with the On-Demand structures.
|
|
class ODComputeSummaryTask final : public ODTask
|
|
{
|
|
public:
|
|
|
|
// Constructor / Destructor
|
|
|
|
/// Constructs an ODTask
|
|
ODComputeSummaryTask();
|
|
virtual ~ODComputeSummaryTask(){};
|
|
|
|
virtual ODTask* Clone();
|
|
|
|
///Subclasses should override to return respective type.
|
|
virtual unsigned int GetODType(){return eODPCMSummary;}
|
|
|
|
///Return the task name
|
|
virtual const char* GetTaskName(){return "ODComputeSummaryTask";}
|
|
|
|
virtual const wxChar* GetTip(){return _("Import complete. Calculating waveform");}
|
|
|
|
virtual bool UsesCustomWorkUntilPercentage(){return true;}
|
|
virtual float ComputeNextWorkUntilPercentageComplete();
|
|
|
|
///releases memory that the ODTask owns. Subclasses should override.
|
|
virtual void Terminate();
|
|
|
|
protected:
|
|
///recalculates the percentage complete.
|
|
virtual void CalculatePercentComplete();
|
|
|
|
///Computes and writes the data for one BlockFile if it still has a refcount.
|
|
virtual void DoSomeInternal();
|
|
|
|
///Readjusts the blockfile order in the default manner. If we have had an ODRequest
|
|
///Then it updates in the OD manner.
|
|
virtual void Update();
|
|
|
|
///Orders the input as either On-Demand or default layered order.
|
|
void OrderBlockFiles(std::vector<ODPCMAliasBlockFile*> &unorderedBlocks);
|
|
|
|
///tells us whether or not Update has been run at least once.
|
|
void MarkUpdateRan();
|
|
bool HasUpdateRan();
|
|
|
|
//mBlockFiles is touched on several threads- the OD terminate thread, and the task thread, so we need to mutex it.
|
|
ODLock mBlockFilesMutex;
|
|
std::vector<ODPCMAliasBlockFile*> mBlockFiles;
|
|
int mMaxBlockFiles;
|
|
int mComputedBlockFiles;
|
|
ODLock mHasUpdateRanMutex;
|
|
bool mHasUpdateRan;
|
|
};
|
|
|
|
#endif
|
|
|