hyperion.ng
BlackBorderProcessor.h
1 
2 #pragma once
3 
4 // QT includes
5 #include <QJsonObject>
6 
7 // util
8 #include <utils/Logger.h>
9 #include <utils/settings.h>
10 #include <utils/Components.h>
11 
12 // Local Hyperion includes
13 #include "BlackBorderDetector.h"
14 
15 class Hyperion;
16 
17 namespace hyperion
18 {
23  class BlackBorderProcessor : public QObject
24  {
25  Q_OBJECT
26  public:
27  BlackBorderProcessor(Hyperion* hyperion, QObject* parent);
34 
39  bool enabled() const;
40 
45  void setEnabled(bool enable);
46 
52  void setHardDisable(const bool& disable);
53 
63  template <typename Pixel_T>
64  bool process(const Image<Pixel_T> & image)
65  {
66  // get the border for the single image
67  BlackBorder imageBorder;
68  if (!enabled())
69  {
70  imageBorder.horizontalSize = 0;
71  imageBorder.verticalSize = 0;
72  imageBorder.unknown=true;
73  _currentBorder = imageBorder;
74  return true;
75  }
76 
77  if (_detectionMode == "default") {
78  imageBorder = _detector->process(image);
79  } else if (_detectionMode == "classic") {
80  imageBorder = _detector->process_classic(image);
81  } else if (_detectionMode == "osd") {
82  imageBorder = _detector->process_osd(image);
83  }
84  // add blur to the border
85  if (imageBorder.horizontalSize > 0)
86  {
87  imageBorder.horizontalSize += _blurRemoveCnt;
88  }
89  if (imageBorder.verticalSize > 0)
90  {
91  imageBorder.verticalSize += _blurRemoveCnt;
92  }
93 
94  const bool borderUpdated = updateBorder(imageBorder);
95  return borderUpdated;
96  }
97  private slots:
103  void handleSettingsUpdate(const settings::type& type, const QJsonDocument& config);
104 
108  void componentStateChanged(const hyperion::Components component, bool enable);
109 
110  private:
112  Hyperion* _hyperion;
113 
121  bool updateBorder(const BlackBorder & newDetectedBorder);
122 
124  bool _enabled;
125 
127  unsigned _unknownSwitchCnt;
128 
130  unsigned _borderSwitchCnt;
131 
132  // The number of frames that are "ignored" before a new border gets set as _previousDetectedBorder
133  unsigned _maxInconsistentCnt;
134 
136  unsigned _blurRemoveCnt;
137 
139  QString _detectionMode;
140 
142  BlackBorderDetector* _detector;
143 
145  BlackBorder _currentBorder;
146 
148  BlackBorder _previousDetectedBorder;
149 
151  unsigned _consistentCnt;
153  unsigned _inconsistentCnt;
155  double _oldThreshold;
157  bool _hardDisabled;
159  bool _userEnabled;
160 
161  };
162 } // end namespace hyperion
BlackBorder getCurrentBorder() const
Return the current (detected) border.
Definition: BlackBorderProcessor.cpp:107
The main class of Hyperion.
Definition: Hyperion.h:57
Provide utility methods for Hyperion class.
Definition: BlackBorderDetector.h:7
The BlackBorder processor is a wrapper around the black-border detector for keeping track of detected...
Definition: BlackBorderProcessor.h:23
int verticalSize
The size of the detected vertical border.
Definition: BlackBorderDetector.h:21
BlackBorder process_osd(const Image< Pixel_T > &image)
osd detection mode (find x then y at detected x to avoid changes by osd overlays) ...
Definition: BlackBorderDetector.h:182
Result structure of the detected blackborder.
Definition: BlackBorderDetector.h:12
void setHardDisable(const bool &disable)
Sets the _hardDisabled state, if True prevents the enable from COMP_BLACKBORDER state emit (mimiks wr...
Definition: BlackBorderProcessor.cpp:92
bool enabled() const
Return activation state of black border detector.
Definition: BlackBorderProcessor.cpp:112
BlackBorder process(const Image< Pixel_T > &image)
default detection mode (3lines 4side detection)
Definition: BlackBorderDetector.h:68
BlackBorder process_classic(const Image< Pixel_T > &image)
classic detection mode (topleft single line mode)
Definition: BlackBorderDetector.h:125
bool process(const Image< Pixel_T > &image)
Processes the image.
Definition: BlackBorderProcessor.h:64
void setEnabled(bool enable)
Set activation state of black border detector.
Definition: BlackBorderProcessor.cpp:117
Components
Enumeration of components in Hyperion.
Definition: Components.h:10
bool unknown
Falg indicating if the border is unknown.
Definition: BlackBorderDetector.h:15
Definition: Image.h:13
int horizontalSize
The size of the detected horizontal border.
Definition: BlackBorderDetector.h:18
The BlackBorderDetector performs detection of black-borders on a single image.
Definition: BlackBorderDetector.h:46