MythTV master
CommDetector2.h
Go to the documentation of this file.
1#ifndef COMMDETECTOR2_H
2#define COMMDETECTOR2_H
3
4// C++ headers
5#include <vector>
6
7// Qt headers
8#include <QDateTime>
9
10// MythTV headers
12
13// Commercial Flagging headers
14#include "CommDetectorBase.h"
15#include "FrameAnalyzer.h"
16
18class TemplateFinder;
19class TemplateMatcher;
22
23namespace commDetector2 {
24
25QString debugDirectory(int chanid, const QDateTime& recstartts);
26void createDebugDirectory(const QString& dirname, const QString& comment);
27QString frameToTimestamp(long long frameno, float fps);
28QString frameToTimestampms(long long frameno, float fps);
29QString strftimeval(std::chrono::microseconds usecs);
30
31}; /* namespace */
32
33using FrameAnalyzerItem = std::vector<FrameAnalyzer*>;
34using FrameAnalyzerList = std::vector<FrameAnalyzerItem>;
35
37{
38 public:
40 SkipType commDetectMethod,
41 bool showProgress, bool fullSpeed, MythCommFlagPlayer* player,
42 int chanid, QDateTime startts, QDateTime endts,
43 QDateTime recstartts, QDateTime recendts, bool useDB);
44 bool go(void) override; // CommDetectorBase
45 void GetCommercialBreakList(frm_dir_map_t &marks) override; // CommDetectorBase
46 void recordingFinished(long long totalFileSize) override; // CommDetectorBase
47 void requestCommBreakMapUpdate(void) override; // CommDetectorBase
48 void PrintFullMap(std::ostream &out, const frm_dir_map_t *comm_breaks,
49 bool verbose) const override; // CommDetectorBase
50
51 private:
52 ~CommDetector2() override = default;
53
54 void reportState(int elapsedms, long long frameno, long long nframes,
55 unsigned int passno, unsigned int npasses);
56 int computeBreaks(long long nframes);
57
58 private:
60 bool m_showProgress {false};
61 bool m_fullSpeed {false};
63 QDateTime m_startts;
64 QDateTime m_endts;
65 QDateTime m_recstartts;
66 QDateTime m_recendts;
67
68 /* current state */
69 bool m_isRecording {false};
72 bool m_finished {false};
73
74 long long m_currentFrameNumber {0};
75 FrameAnalyzerList m_frameAnalyzers; /* one list per scan of file */
76 FrameAnalyzerList::iterator m_currentPass;
78
80
85
86 QString m_debugdir;
87};
88
89#endif /* !COMMDETECTOR2_H */
90
91/* vim: set expandtab tabstop=4 shiftwidth=4: */
std::vector< FrameAnalyzerItem > FrameAnalyzerList
Definition: CommDetector2.h:34
std::vector< FrameAnalyzer * > FrameAnalyzerItem
Definition: CommDetector2.h:33
~CommDetector2() override=default
void reportState(int elapsedms, long long frameno, long long nframes, unsigned int passno, unsigned int npasses)
TemplateFinder * m_logoFinder
Definition: CommDetector2.h:81
FrameAnalyzerList m_frameAnalyzers
Definition: CommDetector2.h:75
FrameAnalyzerItem m_finishedAnalyzers
Definition: CommDetector2.h:77
void recordingFinished(long long totalFileSize) override
QDateTime m_recendts
Definition: CommDetector2.h:66
bool m_breakMapUpdateRequested
Definition: CommDetector2.h:71
bool go(void) override
SkipType m_commDetectMethod
Definition: CommDetector2.h:59
FrameAnalyzerList::iterator m_currentPass
Definition: CommDetector2.h:76
MythCommFlagPlayer * m_player
Definition: CommDetector2.h:62
BlankFrameDetector * m_blankFrameDetector
Definition: CommDetector2.h:83
bool m_sendBreakMapUpdates
Definition: CommDetector2.h:70
void requestCommBreakMapUpdate(void) override
void PrintFullMap(std::ostream &out, const frm_dir_map_t *comm_breaks, bool verbose) const override
QDateTime m_startts
Definition: CommDetector2.h:63
void GetCommercialBreakList(frm_dir_map_t &marks) override
QDateTime m_endts
Definition: CommDetector2.h:64
TemplateMatcher * m_logoMatcher
Definition: CommDetector2.h:82
int computeBreaks(long long nframes)
FrameAnalyzer::FrameMap m_breaks
Definition: CommDetector2.h:79
CommDetector2(SkipType commDetectMethod, bool showProgress, bool fullSpeed, MythCommFlagPlayer *player, int chanid, QDateTime startts, QDateTime endts, QDateTime recstartts, QDateTime recendts, bool useDB)
SceneChangeDetector * m_sceneChangeDetector
Definition: CommDetector2.h:84
long long m_currentFrameNumber
Definition: CommDetector2.h:74
QDateTime m_recstartts
Definition: CommDetector2.h:65
QString m_debugdir
Definition: CommDetector2.h:86
Abstract base class for all CommDetectors.
QMap< long long, long long > FrameMap
Definition: FrameAnalyzer.h:45
QString frameToTimestamp(long long frameno, float fps)
void createDebugDirectory(const QString &dirname, const QString &comment)
QString frameToTimestampms(long long frameno, float fps)
QString strftimeval(std::chrono::microseconds usecs)
QString debugDirectory(int chanid, const QDateTime &recstartts)
SkipType
This is used as a bitmask.
Definition: programtypes.h:127
QMap< uint64_t, MarkTypes > frm_dir_map_t
Frame # -> Mark map.
Definition: programtypes.h:117