diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2018-02-15 09:06:13 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2018-02-15 10:23:11 +0100 | 
| commit | 0a92bc147f91f3ecacdf66d995f01f9577107a86 (patch) | |
| tree | d748f1b081cd37eb2b4a6cd6b5254433ba8b8dab /tracker-aruco | |
| parent | d8327db8025e56500ebb0bef2ab45aa8963a36ca (diff) | |
clean up "static" and "constexpr" types
- use `static constexpr inline' to avoid requiring
  explicit declarations in object code
- use `const Foo* const' to maybe put into readonly
  binary segment (at least for ELF DSOs)
- `constexpr' in function scope has storage, avoid
  `static'
- don't use `constexpr' where there's no advantage,
  like arrays
We'd like to avoid overhead of atomic initialization
for each function call. No idea how `static constexpr'
requiring storage in the standard plays with atomic
initialization requirement. Hearsay points that
`constexpr' without `static' in block scope behaves
more to our liking. It's all hazy though.
I'm not 100% sure if `static inline constexpr' has any
storage. Hopefully none, like a #define, and stuff
bigger than registers gets coalesced within the same
module, with small stuff being immediates.
Diffstat (limited to 'tracker-aruco')
| -rw-r--r-- | tracker-aruco/ftnoir_tracker_aruco.cpp | 26 | ||||
| -rw-r--r-- | tracker-aruco/ftnoir_tracker_aruco.h | 29 | 
2 files changed, 27 insertions, 28 deletions
diff --git a/tracker-aruco/ftnoir_tracker_aruco.cpp b/tracker-aruco/ftnoir_tracker_aruco.cpp index c322d323..faa8bb44 100644 --- a/tracker-aruco/ftnoir_tracker_aruco.cpp +++ b/tracker-aruco/ftnoir_tracker_aruco.cpp @@ -33,6 +33,32 @@  #include <algorithm>  #include <iterator> +static const int adaptive_sizes[] = +{ +#if defined USE_EXPERIMENTAL_CANNY +    10, +    30, +    80, +#else +    7, +    9, +    13, +#endif +}; + +struct resolution_tuple +{ +    int width; +    int height; +}; + +static const resolution_tuple resolution_choices[] = +{ +    { 640, 480 }, +    { 320, 240 }, +    { 0, 0 } +}; +  aruco_tracker::aruco_tracker()  {      cv::setBreakOnError(true); diff --git a/tracker-aruco/ftnoir_tracker_aruco.h b/tracker-aruco/ftnoir_tracker_aruco.h index 3a98e9d1..b753fdec 100644 --- a/tracker-aruco/ftnoir_tracker_aruco.h +++ b/tracker-aruco/ftnoir_tracker_aruco.h @@ -69,7 +69,7 @@ class aruco_tracker : protected virtual QThread, public ITracker  {      Q_OBJECT      friend class aruco_dialog; -    static constexpr float c_search_window = 1.3f; +    static constexpr inline float c_search_window = 1.3f;  public:      aruco_tracker();      ~aruco_tracker() override; @@ -124,44 +124,17 @@ private:      unsigned adaptive_size_pos = 0;      bool use_otsu = false; -    struct resolution_tuple -    { -        int width; -        int height; -    }; - -    static constexpr inline const int adaptive_sizes[] = -    { -#if defined USE_EXPERIMENTAL_CANNY -        10, -        30, -        80, -#else -        7, -        9, -        13, -#endif -    }; -  #if !defined USE_EXPERIMENTAL_CANNY      static constexpr inline int adaptive_thres = 6;  #else      static constexpr inline int adaptive_thres = 3;  #endif -    static constexpr inline const resolution_tuple resolution_choices[] = -    { -        { 640, 480 }, -        { 320, 240 }, -        { 0, 0 } -    }; -  #ifdef DEBUG_UNSHARP_MASKING      static constexpr inline double gauss_kernel_size = 3;  #endif      static constexpr inline double timeout = 1; -      static constexpr inline double timeout_backoff_c = 4./11;      static constexpr inline float size_min = 0.05;  | 
