digiKam Developer Documentation
Professional Photo Management with the Power of Open Source
Loading...
Searching...
No Matches
Digikam::MLPipelineFoundation Class Referenceabstract
+ Inheritance diagram for Digikam::MLPipelineFoundation:

Classes

struct  _MLPipelinePerformanceProfile
 

Public Types

enum  MLPipelineNotification { notifySkipped , notifyProcessed }
 
typedef struct Digikam::MLPipelineFoundation::_MLPipelinePerformanceProfile MLPipelinePerformanceProfile
 
typedef SharedQueue< MLPipelinePackageFoundation * > MLPipelineQueue
 
enum  MLPipelineStage {
  Finder , Loader , Extractor , Classifier ,
  Trainer , Writer , None
}
 

Signals

void finished ()
 Emitted when the last package has finished processing.
 
void processed (const MLPipelinePackageNotify::Ptr &package)
 Emitted when one package has finished processing.
 
void processing (const MLPipelinePackageNotify::Ptr &package)
 Emitted when one package begins processing.
 
void progressValueChanged (float progress)
 
void scheduled ()
 Emitted when processing is scheduled.
 
void signalAddMoreWorkers ()
 
void signalUpdateItemCount (const qlonglong itemCount)
 
void skipped (const MLPipelinePackageNotify::Ptr &package)
 Emitted when one or several packages were skipped, usually because they have already been scanned.
 
void started (const QString &message)
 Emitted when processing has started.
 

Public Member Functions

virtual void cancel ()
 
bool hasFinished () const
 
virtual bool start ()
 

Protected Member Functions

virtual void addMoreWorkers ()=0
 
bool addWorker (const MLPipelineStage &stage)
 
bool checkMoreWorkers (int totalItemCount, int currentItemCount, bool useFullCpu)
 
virtual bool classifier ()=0
 
void clearAllQueues ()
 
void clearQueue (MLPipelineQueue *thisQueue)
 
virtual MLPipelinePackageFoundationdequeue (MLPipelineQueue *thisQueue)
 
void emitSignalUpdateItemCount (const qlonglong itemCount)
 Helper methods to perform signal emitting through the MLPIPELINE_FINDER_END mocro with the moc processor.
 
virtual bool enqueue (MLPipelineQueue *thisQueue, MLPipelinePackageFoundation *package)
 
virtual bool extractor ()=0
 
virtual bool finder ()=0
 
virtual bool loader ()=0
 
virtual void notify (MLPipelineNotification notification, const QString &_name, const QString &_path, const QString &_displayData, int _processed, const DImg &_thumbnail)
 
virtual void notify (MLPipelineNotification notification, const QString &_name, const QString &_path, const QString &_displayData, int _processed, const QIcon &_thumbnail)
 
virtual void notify (MLPipelineNotification notification, const QString &_name, const QString &_path, const QString &_displayData, int _processed, const QImage &_thumbnail)
 
void pipelinePerformanceEnd (const MLPipelineStage &stage, int totalItemCount, QElapsedTimer &timer)
 
void pipelinePerformanceEnd (const MLPipelineStage &stage, QElapsedTimer &timer)
 
void pipelinePerformanceStart (const MLPipelineStage &stage, QElapsedTimer &timer)
 
MLPipelinePackageFoundationqueueEndSignal () const
 
void showPipelinePerformance () const
 
void stageEnd (MLPipelineStage thisStage, MLPipelineStage nextStage)
 
void stageStart (QThread::Priority threadPriority, MLPipelineStage thisStage, MLPipelineStage nextStage, MLPipelineQueue *&thisQueue, MLPipelineQueue *&nextQueue)
 
virtual bool trainer ()=0
 
void waitForStart ()
 
virtual bool writer ()=0
 

Protected Attributes

bool cancelled = false
 
QAtomicInteger< int > itemsProcessed = 0
 
quint64 maxBufferSize = 2147483648
 2 GB default
 
QMutex mutex
 
QMap< MLPipelineStage, MLPipelinePerformanceProfileperformanceProfileList
 
QMap< MLPipelineStage, MLPipelineQueue * > queues
 
QThreadPool * threadPool = nullptr
 
QMutex threadStageMutex
 
const int throttledQueueDepth = 1
 
QAtomicInteger< int > totalItemCount = 0
 
quint64 usedBufferSize = 0
 
QList< QFutureWatcher< bool > * > watchList
 

Member Enumeration Documentation

◆ MLPipelineStage

Enumerator
Finder 

Finder stage finds the data for the pipeline.

Loader 

Loader stage loads and prepares the data for extraction.

Extractor 

Extractor stage pulls the features from the data.

Classifier 

Classifier stage adds a label (face, autotag, etc) to an extracted object.

Trainer 

Classifier stage adds a label (face, autotag, etc) to an extracted object.

Writer 

Writer stage saves the data to the DB.

None 

Empty stage.

Member Function Documentation

◆ cancel()

void Digikam::MLPipelineFoundation::cancel ( )
virtual
Note
worker threads can be in 1 of 3 states when cancel is called
  1. waiting for a new package
  2. processing a package
  3. waiting to push a package

handle all 3 cases so the worker thread sees the cancel signal