mirror of
https://github.com/cookiengineer/audacity
synced 2025-08-06 23:29:24 +02:00
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: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
|
|
|