Make sure variables are initialized.
From: Erik Hovland <erik@hovland.org>
---
programs/mythcommflag/BlankFrameDetector.cpp | 5 +---
programs/mythcommflag/BlankFrameDetector.h | 1 -
programs/mythcommflag/BorderDetector.cpp | 13 ++++++---
programs/mythcommflag/BorderDetector.h | 5 +---
programs/mythcommflag/HistogramAnalyzer.cpp | 35 +++++++++++++------------
programs/mythcommflag/HistogramAnalyzer.h | 16 ++++++-----
programs/mythcommflag/PGMConverter.cpp | 1 +
programs/mythcommflag/SceneChangeDetector.cpp | 1 +
programs/mythcommflag/TemplateFinder.h | 1 -
programs/mythcommflag/TemplateMatcher.cpp | 5 ++++
10 files changed, 45 insertions(+), 38 deletions(-)
diff --git a/programs/mythcommflag/BlankFrameDetector.cpp b/programs/mythcommflag/BlankFrameDetector.cpp
index 512a55f..799b6a3 100644
a
|
b
|
computeBreakMap(FrameAnalyzer::FrameMap *breakMap, |
368 | 368 | BlankFrameDetector::BlankFrameDetector(HistogramAnalyzer *ha, QString debugdir) |
369 | 369 | : FrameAnalyzer() |
370 | 370 | , histogramAnalyzer(ha) |
| 371 | , fps(0.0) |
371 | 372 | , debugLevel(0) |
372 | 373 | { |
373 | 374 | skipcommblanks = gContext->GetNumSetting("CommSkipAllBlanks", 1) != 0; |
… |
… |
BlankFrameDetector::BlankFrameDetector(HistogramAnalyzer *ha, QString debugdir) |
387 | 388 | QString("BlankFrameDetector debugLevel %1").arg(debugLevel)); |
388 | 389 | } |
389 | 390 | |
390 | | BlankFrameDetector::~BlankFrameDetector(void) |
391 | | { |
392 | | } |
393 | | |
394 | 391 | enum FrameAnalyzer::analyzeFrameResult |
395 | 392 | BlankFrameDetector::nuppelVideoPlayerInited(NuppelVideoPlayer *nvp, |
396 | 393 | long long nframes) |
diff --git a/programs/mythcommflag/BlankFrameDetector.h b/programs/mythcommflag/BlankFrameDetector.h
index 8312722..b560e9f 100644
a
|
b
|
class BlankFrameDetector : public FrameAnalyzer |
18 | 18 | public: |
19 | 19 | /* Ctor/dtor. */ |
20 | 20 | BlankFrameDetector(HistogramAnalyzer *ha, QString debugdir); |
21 | | ~BlankFrameDetector(void); |
22 | 21 | |
23 | 22 | /* FrameAnalyzer interface. */ |
24 | 23 | const char *name(void) const { return "BlankFrameDetector"; } |
diff --git a/programs/mythcommflag/BorderDetector.cpp b/programs/mythcommflag/BorderDetector.cpp
index 75f2992..71968a9 100644
a
|
b
|
using namespace commDetector2; |
17 | 17 | BorderDetector::BorderDetector(void) |
18 | 18 | : logoFinder(NULL) |
19 | 19 | , logo(NULL) |
| 20 | , logorow(-1) |
| 21 | , logocol(-1) |
| 22 | , logowidth(-1) |
| 23 | , logoheight(-1) |
20 | 24 | , frameno(-1) |
| 25 | , row(-1) |
| 26 | , col(-1) |
| 27 | , width(-1) |
| 28 | , height(-1) |
21 | 29 | , ismonochromatic(false) |
22 | 30 | , debugLevel(0) |
23 | 31 | , time_reported(false) |
24 | 32 | { |
| 33 | bzero(&analyze_time, sizeof(analyze_time)); |
25 | 34 | debugLevel = gContext->GetNumSetting("BorderDetectorDebugLevel", 0); |
26 | 35 | |
27 | 36 | if (debugLevel >= 1) |
… |
… |
BorderDetector::BorderDetector(void) |
29 | 38 | QString("BorderDetector debugLevel %1").arg(debugLevel)); |
30 | 39 | } |
31 | 40 | |
32 | | BorderDetector::~BorderDetector(void) |
33 | | { |
34 | | } |
35 | | |
36 | 41 | int |
37 | 42 | BorderDetector::nuppelVideoPlayerInited(const NuppelVideoPlayer *nvp) |
38 | 43 | { |
diff --git a/programs/mythcommflag/BorderDetector.h b/programs/mythcommflag/BorderDetector.h
index bb493bc..eb9adf4 100644
a
|
b
|
class BorderDetector |
20 | 20 | { |
21 | 21 | public: |
22 | 22 | /* Ctor/dtor. */ |
23 | | BorderDetector(void); |
24 | | ~BorderDetector(void); |
| 23 | BorderDetector(); |
25 | 24 | |
26 | 25 | int nuppelVideoPlayerInited(const NuppelVideoPlayer *nvp); |
27 | 26 | void setLogoState(TemplateFinder *finder); |
… |
… |
public: |
30 | 29 | int getDimensions(const AVPicture *pgm, int pgmheight, long long frameno, |
31 | 30 | int *prow, int *pcol, int *pwidth, int *pheight); |
32 | 31 | |
33 | | int reportTime(void); |
| 32 | int reportTime(); |
34 | 33 | |
35 | 34 | private: |
36 | 35 | TemplateFinder *logoFinder; |
diff --git a/programs/mythcommflag/HistogramAnalyzer.cpp b/programs/mythcommflag/HistogramAnalyzer.cpp
index e5887a2..35c764a 100644
a
|
b
|
writeData(QString filename, float *mean, unsigned char *median, float *stddev, |
109 | 109 | return false; |
110 | 110 | for (frameno = 0; frameno < nframes; frameno++) |
111 | 111 | { |
112 | | (void)fprintf(fp, "%3u %10.6f %3u %10.6f %5u %5u %5u %5u", |
113 | | monochromatic[frameno], |
114 | | mean[frameno], median[frameno], stddev[frameno], |
115 | | fwidth[frameno], fheight[frameno], |
116 | | fcol[frameno], frow[frameno]); |
| 112 | fprintf(fp, "%3u %10.6f %3u %10.6f %5u %5u %5u %5u", |
| 113 | monochromatic[frameno], mean[frameno], median[frameno], |
| 114 | stddev[frameno], fwidth[frameno], fheight[frameno], |
| 115 | fcol[frameno], frow[frameno]); |
117 | 116 | for (unsigned int ii = 0; ii < UCHAR_MAX + 1; ii++) |
118 | | (void)fprintf(fp, " %02x", histogram[frameno][ii]); |
119 | | (void)fprintf(fp, "\n"); |
| 117 | fprintf(fp, " %02x", histogram[frameno][ii]); |
| 118 | |
| 119 | fprintf(fp, "\n"); |
120 | 120 | } |
121 | 121 | if (fclose(fp)) |
122 | 122 | VERBOSE(VB_COMMFLAG, QString("Error closing %1: %2") |
… |
… |
HistogramAnalyzer::HistogramAnalyzer(PGMConverter *pgmc, BorderDetector *bd, |
132 | 132 | , borderDetector(bd) |
133 | 133 | , logoFinder(NULL) |
134 | 134 | , logo(NULL) |
| 135 | , logowidth(-1) |
| 136 | , logoheight(-1) |
| 137 | , logorr1(-1) |
| 138 | , logocc1(-1) |
| 139 | , logorr2(-1) |
| 140 | , logocc2(-1) |
135 | 141 | , mean(NULL) |
136 | 142 | , median(NULL) |
137 | 143 | , stddev(NULL) |
… |
… |
HistogramAnalyzer::HistogramAnalyzer(PGMConverter *pgmc, BorderDetector *bd, |
152 | 158 | , debug_histval(false) |
153 | 159 | , histval_done(false) |
154 | 160 | { |
| 161 | memset(histval, 0, sizeof(int) * (UCHAR_MAX + 1)); |
155 | 162 | memset(&analyze_time, 0, sizeof(analyze_time)); |
156 | 163 | |
157 | 164 | /* |
… |
… |
HistogramAnalyzer::HistogramAnalyzer(PGMConverter *pgmc, BorderDetector *bd, |
169 | 176 | } |
170 | 177 | } |
171 | 178 | |
172 | | HistogramAnalyzer::~HistogramAnalyzer(void) |
| 179 | HistogramAnalyzer::~HistogramAnalyzer() |
173 | 180 | { |
174 | 181 | if (monochromatic) |
175 | 182 | delete []monochromatic; |
… |
… |
HistogramAnalyzer::nuppelVideoPlayerInited(NuppelVideoPlayer *nvp, |
266 | 273 | return FrameAnalyzer::ANALYZE_OK; |
267 | 274 | } |
268 | 275 | |
269 | | void |
270 | | HistogramAnalyzer::setLogoState(TemplateFinder *finder) |
271 | | { |
272 | | logoFinder = finder; |
273 | | } |
274 | | |
275 | 276 | enum FrameAnalyzer::analyzeFrameResult |
276 | 277 | HistogramAnalyzer::analyzeFrame(const VideoFrame *frame, long long frameno) |
277 | 278 | { |
… |
… |
HistogramAnalyzer::analyzeFrame(const VideoFrame *frame, long long frameno) |
312 | 313 | ismonochromatic = borderDetector->getDimensions(pgm, pgmheight, frameno, |
313 | 314 | &croprow, &cropcol, &cropwidth, &cropheight) != 0; |
314 | 315 | |
315 | | (void)gettimeofday(&start, NULL); |
| 316 | gettimeofday(&start, NULL); |
316 | 317 | |
317 | 318 | frow[frameno] = croprow; |
318 | 319 | fcol[frameno] = cropcol; |
… |
… |
HistogramAnalyzer::analyzeFrame(const VideoFrame *frame, long long frameno) |
392 | 393 | sqrt((sumsquares - (float)sumval * sumval / npixels) / (npixels - 1)) : |
393 | 394 | 0; |
394 | 395 | |
395 | | (void)gettimeofday(&end, NULL); |
| 396 | gettimeofday(&end, NULL); |
396 | 397 | timersub(&end, &start, &elapsed); |
397 | 398 | timeradd(&analyze_time, &elapsed, &analyze_time); |
398 | 399 | |
… |
… |
HistogramAnalyzer::finished(long long nframes, bool final) |
426 | 427 | } |
427 | 428 | |
428 | 429 | int |
429 | | HistogramAnalyzer::reportTime(void) const |
| 430 | HistogramAnalyzer::reportTime() const |
430 | 431 | { |
431 | 432 | if (pgmConverter->reportTime()) |
432 | 433 | return -1; |
diff --git a/programs/mythcommflag/HistogramAnalyzer.h b/programs/mythcommflag/HistogramAnalyzer.h
index 49a8d17..91498d3 100644
a
|
b
|
public: |
20 | 20 | /* Ctor/dtor. */ |
21 | 21 | HistogramAnalyzer(PGMConverter *pgmc, BorderDetector *bd, |
22 | 22 | QString debugdir); |
23 | | ~HistogramAnalyzer(void); |
| 23 | ~HistogramAnalyzer(); |
24 | 24 | |
25 | 25 | enum FrameAnalyzer::analyzeFrameResult nuppelVideoPlayerInited( |
26 | 26 | NuppelVideoPlayer *nvp, long long nframes); |
27 | | void setLogoState(TemplateFinder *finder); |
| 27 | void setLogoState(TemplateFinder *finder) { logoFinder = finder; } |
28 | 28 | static const long long UNCACHED = -1; |
29 | 29 | enum FrameAnalyzer::analyzeFrameResult analyzeFrame(const VideoFrame *frame, |
30 | 30 | long long frameno); |
31 | 31 | int finished(long long nframes, bool final); |
32 | | int reportTime(void) const; |
| 32 | int reportTime() const; |
33 | 33 | |
34 | 34 | /* Each color 0-255 gets a scaled frequency counter 0-255. */ |
35 | 35 | typedef unsigned char Histogram[UCHAR_MAX + 1]; |
36 | 36 | |
37 | | const float *getMeans(void) const { return mean; } |
38 | | const unsigned char *getMedians(void) const { return median; } |
39 | | const float *getStdDevs(void) const { return stddev; } |
40 | | const Histogram *getHistograms(void) const { return histogram; } |
41 | | const unsigned char *getMonochromatics(void) const { return monochromatic; } |
| 37 | const float *getMeans() const { return mean; } |
| 38 | const unsigned char *getMedians() const { return median; } |
| 39 | const float *getStdDevs() const { return stddev; } |
| 40 | const Histogram *getHistograms() const { return histogram; } |
| 41 | const unsigned char *getMonochromatics() const { return monochromatic; } |
42 | 42 | |
43 | 43 | private: |
44 | 44 | PGMConverter *pgmConverter; |
diff --git a/programs/mythcommflag/PGMConverter.cpp b/programs/mythcommflag/PGMConverter.cpp
index 1150833..ff7a633 100644
a
|
b
|
PGMConverter::PGMConverter(void) |
16 | 16 | #endif /* PGM_CONVERT_GREYSCALE */ |
17 | 17 | { |
18 | 18 | memset(&pgm, 0, sizeof(pgm)); |
| 19 | memset(&convert_time, 0, sizeof(convert_time)); |
19 | 20 | } |
20 | 21 | |
21 | 22 | PGMConverter::~PGMConverter(void) |
diff --git a/programs/mythcommflag/SceneChangeDetector.cpp b/programs/mythcommflag/SceneChangeDetector.cpp
index 5568098..bb75429 100644
a
|
b
|
SceneChangeDetector::SceneChangeDetector(HistogramAnalyzer *ha, |
97 | 97 | QString debugdir) |
98 | 98 | : FrameAnalyzer() |
99 | 99 | , histogramAnalyzer(ha) |
| 100 | , fps(0.0) |
100 | 101 | , scdata(NULL) |
101 | 102 | , scdiff(NULL) |
102 | 103 | , debugLevel(0) |
diff --git a/programs/mythcommflag/TemplateFinder.h b/programs/mythcommflag/TemplateFinder.h
index 04562ef..332f482 100644
a
|
b
|
private: |
56 | 56 | EdgeDetector *edgeDetector; |
57 | 57 | |
58 | 58 | unsigned int sampleTime; /* amount of time to analyze */ |
59 | | unsigned int sampleSpacing; /* seconds between frames */ |
60 | 59 | int frameInterval; /* analyze every <Interval> frames */ |
61 | 60 | long long endFrame; /* end of logo detection */ |
62 | 61 | long long nextFrame; /* next desired frame */ |
diff --git a/programs/mythcommflag/TemplateMatcher.cpp b/programs/mythcommflag/TemplateMatcher.cpp
index 891b4fe..41e7acd 100644
a
|
b
|
TemplateMatcher::TemplateMatcher(PGMConverter *pgmc, EdgeDetector *ed, |
321 | 321 | , pgmConverter(pgmc) |
322 | 322 | , edgeDetector(ed) |
323 | 323 | , templateFinder(tf) |
| 324 | , tmplrow(-1) |
| 325 | , tmplcol(-1) |
| 326 | , tmplwidth(-1) |
| 327 | , tmplheight(-1) |
324 | 328 | , matches(NULL) |
325 | 329 | , match(NULL) |
| 330 | , fps(0.0) |
326 | 331 | , debugLevel(0) |
327 | 332 | , debugdir(debugdir) |
328 | 333 | #ifdef PGM_CONVERT_GREYSCALE |