1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-08-06 23:29:24 +02:00
audacity/src/ondemand/ODComputeSummaryTask.h
benjamin.drung@gmail.com 277932dccb Remove trailing spaces.
2014-06-03 20:30:19 +00:00

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: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