Alexander Alekhin [Wed, 6 Nov 2019 13:47:37 +0000 (13:47 +0000)]
Merge pull request #15854 from czgdp1807:rem-typo
Alexander Smorkalov [Wed, 6 Nov 2019 13:37:37 +0000 (13:37 +0000)]
Merge pull request #15159 from SSE4:fix_find_openexr
czgdp1807 [Wed, 6 Nov 2019 11:45:31 +0000 (17:15 +0530)]
removed typo
SSE4 [Tue, 5 Nov 2019 09:13:21 +0000 (16:13 +0700)]
- fix FindOpenEXR to respect OPENEXR_ROOT
Signed-off-by: SSE4 <tomskside@gmail.com>
Alexander Alekhin [Wed, 6 Nov 2019 09:54:29 +0000 (09:54 +0000)]
Merge pull request #15814 from i-murzov:3.4-ocl-cleanup
Alexander Alekhin [Wed, 6 Nov 2019 08:12:40 +0000 (08:12 +0000)]
Merge pull request #15813 from i-murzov:3.4-ocl-empty-platform
Igor Murzov [Wed, 30 Oct 2019 15:24:32 +0000 (18:24 +0300)]
Fix OpenCL device detection when some OpenCL platform has no devices
It's not an error if some OpenCL platform has no devices. This makes
OpenCL device detection work correctly in the following scenario:
$ OPENCV_OPENCL_DEVICE=:GPU: ./opencv_test_dnn
OpenCV version: 4.1.2-dev
OpenCV VCS version: 4.1.2-80-g467748ee98-dirty
Build type: Debug
Compiler: /usr/bin/g++ (ver 7.4.0)
Parallel framework: pthreads
CPU features: SSE SSE2 SSE3 *SSE4.1 *SSE4.2 *FP16 *AVX *AVX2 *AVX512-SKX?
Intel(R) IPP version: ippIP AVX2 (l9) 2019.0.0 Gold (-) Jul 24 2018
OpenCL Platforms:
AMD Accelerated Parallel Processing
Portable Computing Language
CPU: pthread-AMD Ryzen 7 2700X Eight-Core Processor (OpenCL 1.2 pocl HSTR: pthread-x86_64-pc-linux-gnu-znver1)
NVIDIA CUDA
dGPU: GeForce GTX 1080 (OpenCL 1.2 CUDA)
Current OpenCL device:
Type = dGPU
Name = GeForce GTX 1080
Version = OpenCL 1.2 CUDA
Driver version = 430.26
Chip Kerchner [Tue, 5 Nov 2019 15:52:35 +0000 (10:52 -0500)]
Merge pull request #15828 from ChipKerchner:momentsToHal
* Convert moments in tile algorithms to HAL (1.3x faster for VSX).
* Adding NEON code back in for non 64-bit platforms.
* Remove floats from post processing.
Igor Murzov [Wed, 30 Oct 2019 15:35:38 +0000 (18:35 +0300)]
Simplify OpenCL info dumping code:
* Reduce code nesting
* Drop redundant .c_str() calls
Oleg Alexandrov [Sun, 3 Nov 2019 13:37:25 +0000 (05:37 -0800)]
Merge pull request #15838 from oleg-alexandrov:patch-2
Correct stereoRectify documentation
Alexander Alekhin [Sat, 2 Nov 2019 18:50:46 +0000 (18:50 +0000)]
Merge pull request #15834 from berak:python_fix_type_error
berak [Sat, 2 Nov 2019 07:17:07 +0000 (08:17 +0100)]
python: fix type error msg
Gael Colas [Fri, 1 Nov 2019 19:37:34 +0000 (12:37 -0700)]
Merge pull request #15821 from ColasGael:colasg-viz-color
Fix wrong definition of viz::Color::navy()
Oleg Alexandrov [Fri, 1 Nov 2019 19:34:11 +0000 (12:34 -0700)]
Merge pull request #15820 from oleg-alexandrov:patch-1
Clarify stereoRectify() doc
The function stereoRectify() takes as input a coordinate transform between two cameras. It is ambiguous how it goes. I clarified that it goes from the second camera to the first.
yuriyluxriot [Fri, 1 Nov 2019 19:33:12 +0000 (21:33 +0200)]
Merge pull request #15812 from yuriyluxriot:fls_replaces_tls
* Use FlsAlloc/FlsFree/FlsGetValue/FlsSetValue instead of TlsAlloc/TlsFree/TlsGetValue/TlsSetValue to implment TLS value cleanup when thread has been terminated on Windows Vista and above
* Fix 32-bit build
* Fixed calling convention of cleanup callback
* WINAPI changed to NTAPI
* Use proper guard macro
Chip Kerchner [Fri, 1 Nov 2019 19:30:48 +0000 (15:30 -0400)]
Merge pull request #15555 from ChipKerchner:flipVectorize
* Vectorize flipHoriz and flipVert functions.
* Change v_load_mirror_1 to use vec_revb for VSX
* Only use vec_revb in ISA3.0
* Removing vec_revb code since some of the older compilers don't fully support it.
* Use new v_reverse intrinsic and cleanup code.
* Ensure there are no alignment issues with copies
Alexander Alekhin [Thu, 31 Oct 2019 20:39:41 +0000 (20:39 +0000)]
Merge pull request #15819 from alalek:ts_unblock_reporting_of_disabled_tests
Alexander Alekhin [Thu, 31 Oct 2019 20:39:16 +0000 (20:39 +0000)]
Merge pull request #15805 from i-murzov:3.4
Ciprian Alexandru Pitis [Thu, 31 Oct 2019 20:38:49 +0000 (21:38 +0100)]
Merge pull request #15799 from Cpitis:feature/parallelization
Parallelize pyrDown & calcSharrDeriv
* ::pyrDown has been parallelized
* CalcSharrDeriv parallelized
* Fixed whitespace
* Set granularity based on amount of threads enabled
* Granularity changed to cv::getNumThreads, now each thread should receive 1/n sized stripes
* imgproc: move PyrDownInvoker<CastOp>::operator() implementation
* imgproc(pyramid): remove syloopboundary()
* video: SharrDerivInvoker replace 'Mat*' => 'Mat&' fields
CJ Smith [Thu, 31 Oct 2019 19:29:04 +0000 (15:29 -0400)]
Merge pull request #15789 from CJSmith-0141:15779-scale-bug-in-stereo-match-sample
* Changes disparity image to float representation
Signed-off-by: Connor James Smith <cjs.connor.smith@gmail.com>
* samples: update disparity multiplier handling in stereo_match.cpp
Oleg Alexandrov [Thu, 31 Oct 2019 19:28:01 +0000 (12:28 -0700)]
Merge pull request #15780 from oleg-alexandrov:master
* Doc bugfix
The documentation page StereoBinaryBM and StereoBinarySGBM says that it returns a disparity that is scaled multiplied by 16. This scaling must be undone before calling reprojectImageTo3D, otherwise the results are wrong. The function reprojectImageTo3D() could do this scaling internally, maybe, but at least the documentation must explain that this has to be done.
* calib3d: update reprojectImageTo3D documentation
* calib3d: add StereoBM/StereoSGBM into notes list
Alexander Alekhin [Thu, 31 Oct 2019 19:24:06 +0000 (19:24 +0000)]
Merge pull request #15478 from terfendail:wintr_stereosgbm
Dizhenin Vlad [Thu, 31 Oct 2019 19:09:33 +0000 (22:09 +0300)]
Merge pull request #15608 from SimpleVlad:3.4
* Add flags for build js
* Add poi.json
* Rebase whitelist into JSON file
* Rework generator of white_list
* Fix small typos
* Transfer opencv_js.josn in opencv_js.config.py
* Edit OPENCV_JS_WHITELIST
* Write comment
* Add description
* Fix typos in desc
* flag's append deleeted
* Fix whitespace
* variable deleted
* fix comment on lines 229 and 235
Alexander Alekhin [Thu, 31 Oct 2019 12:10:42 +0000 (15:10 +0300)]
ts: do not block reporting of launched "DISABLED_" tests
If tests are run through GTest option `--gtest_also_run_disabled_tests`
Igor Murzov [Fri, 25 Oct 2019 16:45:11 +0000 (19:45 +0300)]
Fix wording in some tutorials
Alexander Alekhin [Tue, 29 Oct 2019 20:40:35 +0000 (20:40 +0000)]
Merge pull request #15692 from alalek:core_tls_handle_thread_termination
Alexander Alekhin [Tue, 29 Oct 2019 19:10:00 +0000 (19:10 +0000)]
Merge pull request #15791 from alalek:android_camera2_issue_14915
Chip Kerchner [Tue, 29 Oct 2019 10:42:20 +0000 (06:42 -0400)]
Merge pull request #15623 from ChipKerchner:optimizeHOGpipeline
* Use circular lut hustory buffer in computeGradient of HOG
* Initialize prefetch data outside main loop. Avoid code duplication.
Alexander Alekhin [Sun, 27 Oct 2019 11:14:17 +0000 (11:14 +0000)]
android: use .getRowStride() in JavaCamera2View
Alexander Alekhin [Sun, 27 Oct 2019 22:45:19 +0000 (22:45 +0000)]
Merge pull request #15793 from Cherubin7th:3.4
André Lippok [Sun, 27 Oct 2019 16:43:31 +0000 (17:43 +0100)]
Fixed typo in assertion
Alexander Alekhin [Sat, 26 Oct 2019 21:39:08 +0000 (21:39 +0000)]
Merge pull request #15761 from alalek:core_trace_itt_parameter
Alexander Alekhin [Tue, 22 Oct 2019 13:59:59 +0000 (16:59 +0300)]
core(trace): add ITT control parameter
- OPENCV_TRACE_ITT_ENABLE
Alexander Alekhin [Fri, 25 Oct 2019 13:49:46 +0000 (13:49 +0000)]
Merge pull request #15764 from ChipKerchner:demosaicingToHal
Vitaly Tuzov [Thu, 11 Jul 2019 22:34:19 +0000 (01:34 +0300)]
StereoSGBM algorithm updated to use wide universal intrinsics
Alexander Alekhin [Thu, 24 Oct 2019 17:58:22 +0000 (17:58 +0000)]
Merge pull request #15770 from terfendail:stereobm_fix
Vitaly Tuzov [Thu, 24 Oct 2019 14:54:49 +0000 (17:54 +0300)]
Fixed StereoBM uniqueness check
Alexander Alekhin [Thu, 24 Oct 2019 07:06:32 +0000 (07:06 +0000)]
Merge pull request #15752 from dkurt:fix_15750
Alexander Alekhin [Sun, 13 Oct 2019 11:14:41 +0000 (11:14 +0000)]
core(tls): implement releasing of TLS on thread termination
- move TLS & instrumentation code out of core/utility.hpp
- (*) TLSData lost .gather() method (to dispose thread data on thread termination)
- use TLSDataAccumulator for reliable collecting of thread data
- prefer using of .detachData() + .cleanupDetachedData() instead of .gather() method
(*) API is broken: replace TLSData => TLSDataAccumulator if gather required
(objects disposal on threads termination is not available in accumulator mode)
Alexander Alekhin [Wed, 23 Oct 2019 17:02:22 +0000 (17:02 +0000)]
Merge pull request #15754 from float13:patch-1
ChipKerchner [Wed, 23 Oct 2019 15:47:07 +0000 (10:47 -0500)]
Convert demosaic functions to HAL
float13 [Tue, 22 Oct 2019 01:36:40 +0000 (21:36 -0400)]
Tutorial - Make required input args positional.
I think it would help to change all 3 of the the input file arguments to be "positional" for consistency with the other tutorials. This also simplifies the command line input to run this tutorial by reducing typing, and helpfully prints the "usage" info if any of the 3 required inputs are missing.
I'm new to OpenCV and working through the tutorials. I kept getting runtime errors with this one until I realized that the arguments weren't positional, and I was missing the "--input1", "--input2, "--input3" flags preceding the filenames. All of the previous tutorials had required filenames as positional arguments and didn't require this.
The original code would require each input to be specified like this:
./compareHist_Demo --input1 filename1 --input2 filename2 --input3 filename3
But with this change, the above command is simplified to:
./compareHist_Demo filename1 filename2 filename3
This avoids a confusing runtime error to make things simpler for newcomers like me :)
Chip Kerchner [Tue, 22 Oct 2019 13:37:20 +0000 (09:37 -0400)]
Merge pull request #15738 from ChipKerchner:bugInt64x2Comparison
Fixing bug with comparison of v_int64x2 or v_uint64x2
* Casting v_uint64x2 to v_float64x2 and comparing does NOT work in all cases. Rewrite using epi64 instructions - faster too.
* Fix bad merge.
* Fix equal comparsion for non-SSE4.1. Add test cases for v_int64x2 comparisons.
* Try to fix merge conflict.
* Only test v_int64x2 comparisons if CV_SIMD_64F
* Fix compiler warning.
Alexander Alekhin [Tue, 22 Oct 2019 12:52:13 +0000 (12:52 +0000)]
Merge pull request #15739 from dkurt:darknet_shortcut_asymm
Alexander Alekhin [Tue, 22 Oct 2019 12:51:29 +0000 (12:51 +0000)]
Merge pull request #15756 from dankamongmen:dankamongmen/stitching_surf_default
nick black [Tue, 22 Oct 2019 06:16:29 +0000 (02:16 -0400)]
stitching_detailed: use correct match_conf default
The usage function states that the default for match_conf is
0.65 if the default SURF feature finder is used, and 0.3 for
orbs. Indeed, if --feature orbs is used, match_conf is set
to 0.3f. This is a NOP, because the real default is also set
to 0.3f. Change it to 0.65f when SURF is in play.
Dmitry Kurtaev [Mon, 21 Oct 2019 16:09:44 +0000 (19:09 +0300)]
Fix custom IE layers in case of no MKLDNN plugin
Alexander Alekhin [Sun, 20 Oct 2019 13:08:28 +0000 (13:08 +0000)]
Merge pull request #15743 from collinbrake:feature_grammar_fixes_2
Alexander Alekhin [Sun, 20 Oct 2019 13:06:27 +0000 (13:06 +0000)]
Merge pull request #14518 from SSteve:intersectConvexConvex-example
Steve Nicholson [Thu, 9 May 2019 00:54:17 +0000 (17:54 -0700)]
Add documentation and example program for intersectConvexConvex
Dmitry Kurtaev [Sat, 19 Oct 2019 09:54:15 +0000 (12:54 +0300)]
Fix Darknet eltwise
collin [Fri, 18 Oct 2019 21:42:56 +0000 (17:42 -0400)]
grammar corrections for python gui docs
Alexander Alekhin [Fri, 18 Oct 2019 20:19:40 +0000 (20:19 +0000)]
Merge pull request #15685 from pmur:cnz64f-simd
Alexander Alekhin [Fri, 18 Oct 2019 18:41:35 +0000 (18:41 +0000)]
Merge pull request #15740 from xerus:fix_typo
Alexander Alekhin [Fri, 18 Oct 2019 18:40:25 +0000 (18:40 +0000)]
Merge pull request #15741 from mipsopen-fwu:issue_15730
Fei Wu [Fri, 18 Oct 2019 16:36:18 +0000 (00:36 +0800)]
Fix issue 15730.
Pavel Grunt [Fri, 18 Oct 2019 16:04:48 +0000 (18:04 +0200)]
OpenCVFindMKL: Fix a typo
Dmitry Kurtaev [Fri, 18 Oct 2019 15:51:52 +0000 (18:51 +0300)]
Enable Eltwise layer with different numbers of inputs channels
Alexander Alekhin [Fri, 18 Oct 2019 14:52:25 +0000 (14:52 +0000)]
Merge pull request #15737 from alalek:issue_15705
Alexander Alekhin [Fri, 18 Oct 2019 13:05:03 +0000 (16:05 +0300)]
core(simd): v_reverse() for MSA backend
Alexander Alekhin [Thu, 17 Oct 2019 22:35:14 +0000 (22:35 +0000)]
Merge pull request #15716 from alalek:javadoc_fix
Alexander Alekhin [Thu, 17 Oct 2019 20:18:30 +0000 (20:18 +0000)]
Merge pull request #15180 from terfendail:wintr_stereobm
Alexander Alekhin [Thu, 17 Oct 2019 13:14:50 +0000 (13:14 +0000)]
Merge pull request #15709 from alalek:js_simd_reverse
Alexander Alekhin [Thu, 17 Oct 2019 13:14:34 +0000 (13:14 +0000)]
Merge pull request #15708 from alalek:js_simd_support_1.38.48
Alexander Alekhin [Thu, 17 Oct 2019 10:46:02 +0000 (10:46 +0000)]
Merge pull request #15718 from alalek:pylint_warnings
Alexander Smorkalov [Thu, 17 Oct 2019 10:35:27 +0000 (10:35 +0000)]
Merge pull request #15720 from alalek:cmake_fix_uwp
Alexander Smorkalov [Thu, 17 Oct 2019 10:19:47 +0000 (10:19 +0000)]
Merge pull request #15722 from jasjuang:3.4
jasjuang [Thu, 17 Oct 2019 00:22:25 +0000 (17:22 -0700)]
document CC_STAT_MAX in ConnectedComponentsTypes
Alexander Alekhin [Wed, 16 Oct 2019 21:42:31 +0000 (21:42 +0000)]
cmake: fix UWP scripts path
Alexander Alekhin [Wed, 16 Oct 2019 18:52:10 +0000 (18:52 +0000)]
Merge pull request #15715 from adamrankin:patch-1
Alexander Alekhin [Wed, 16 Oct 2019 15:49:33 +0000 (18:49 +0300)]
fix pylint warnings
pylint 1.8.3
Alexander Alekhin [Wed, 16 Oct 2019 14:42:20 +0000 (17:42 +0300)]
javadoc: fix generation with OpenJDK 11
Adam Rankin [Wed, 16 Oct 2019 14:04:41 +0000 (10:04 -0400)]
COMP: Enabling build with recent VTK version
VTK_MAJOR_VERSION not found unless header is included
Alexander Alekhin [Wed, 16 Oct 2019 11:13:07 +0000 (11:13 +0000)]
Merge pull request #15701 from alalek:issue_15691
Alexander Alekhin [Wed, 16 Oct 2019 11:12:49 +0000 (11:12 +0000)]
Merge pull request #15700 from alalek:issue_12943
Alexander Alekhin [Tue, 15 Oct 2019 15:46:08 +0000 (18:46 +0300)]
js(simd): v_reverse implementation
Alexander Alekhin [Tue, 15 Oct 2019 12:29:10 +0000 (15:29 +0300)]
js(simd): support Emscripten 1.38.48-upstream
Alexander Alekhin [Mon, 14 Oct 2019 15:39:54 +0000 (18:39 +0300)]
core(alloc): force initialization of memalign flag
- before main() launch
Alexander Alekhin [Mon, 14 Oct 2019 15:10:32 +0000 (18:10 +0300)]
core(ipp): skip huge input in flip()
- IPP/SSE4.2 works well
Alexander Smorkalov [Sat, 12 Oct 2019 18:05:54 +0000 (18:05 +0000)]
Merge pull request #15688 from JamesNewton:3.4
JamesNewton [Fri, 11 Oct 2019 17:07:22 +0000 (10:07 -0700)]
Update js_image_arithmetics.markdown
Chip Kerchner [Fri, 11 Oct 2019 15:34:17 +0000 (11:34 -0400)]
Merge pull request #15662 from ChipKerchner:addVReverseIntrinsic
* New v_reverse HAL intrinsic for reversing the ordering of a vector
* Fix conflict.
* Try to resolve conflict again.
* Try one more time.
* Add _MM_SHUFFLE. Remove non-vectorize code in SSE2. Fix copy and paste issue with NEON.
* Change v_uint16x8 SSE2 version to use shuffles
Everton Constantino [Fri, 11 Oct 2019 15:32:59 +0000 (12:32 -0300)]
Merge pull request #15527 from everton1984:faster_acc
* Adding support for vectorized masking for uchar/ushort.
* Fixing bug where mask was zeroing the dst. Improved the way to calculate
the mask and tweaked for further performance improvements.
* Fixing mask comparison test.
* Restricting to one channel.
* Adding support for 3 channels, switch old approach to start using HAL's
v_select.
Paul E. Murphy [Wed, 28 Aug 2019 17:09:07 +0000 (12:09 -0500)]
core: vectorize countNonZero64f
Improves performance a bit. 2.2x on P9 and 2 - 3x on coffee lake
x86-64.
Alexander Alekhin [Wed, 9 Oct 2019 15:33:35 +0000 (18:33 +0300)]
Merge tag '3.4.8'
Alexander Alekhin [Wed, 9 Oct 2019 11:42:29 +0000 (14:42 +0300)]
OpenCV release (3.4.8)
OpenCV 3.4.8
Maksim Shabunin [Wed, 9 Oct 2019 11:06:12 +0000 (14:06 +0300)]
Merge pull request #15544 from mshabunin:disable_posix_memalign
* Disable posix_memalign by default
* core: fix memalign parameter handling
Alexander Smorkalov [Wed, 9 Oct 2019 11:04:44 +0000 (11:04 +0000)]
Merge pull request #15666 from seanm:Wnewline
Marcin Tolysz [Wed, 9 Oct 2019 08:38:10 +0000 (09:38 +0100)]
Merge pull request #15658 from tolysz:patch-1
* Cuda + OpenGL on ARM
There might be multiple ways of getting OpenCV compile on Tegra (NVIDIA Jetson) platform, but mainly they modify CUDA(8,9,10...) source code, this one fixes it for all installations.
( https://devtalk.nvidia.com/default/topic/1007290/jetson-tx2/building-opencv-with-opengl-support-/post/5141945/#5141945 et al.).
This way is exactly the same as the one proposed but the code change happens in OpenCV.
* Updated,
The link provided mentions: cuda8 + 9, I have cuda 10 + 10.1 (and can confirm it is still defined this way).
NVIDIA is probably using some other "secret" backend with Jetson.
Sean McBride [Tue, 8 Oct 2019 18:16:11 +0000 (14:16 -0400)]
Fixed clang -Wnewline-eof warning by adding newline to end of file
Alexander Alekhin [Tue, 8 Oct 2019 23:36:26 +0000 (23:36 +0000)]
Merge pull request #15661 from alalek:fix_android_build_avx2
Alexander Alekhin [Tue, 8 Oct 2019 15:27:54 +0000 (15:27 +0000)]
Merge pull request #15664 from alalek:build_eliminate_cuda_warnings
Alexander Alekhin [Tue, 8 Oct 2019 12:30:02 +0000 (15:30 +0300)]
build: eliminate CUDA warnings
Alexander Alekhin [Tue, 8 Oct 2019 10:12:02 +0000 (13:12 +0300)]
build: update AVX2 check
- _mm256_bslli_epi128() works in GCC 4.9.3+ only
- Android NDK r10 doesn't support this instruction
Alexander Alekhin [Mon, 7 Oct 2019 21:33:20 +0000 (00:33 +0300)]
Merge pull request #15642 from alalek:issue_15597
Sayed Adel [Mon, 7 Oct 2019 19:01:35 +0000 (21:01 +0200)]
Merge pull request #15510 from seiko2plus:issue15506
* core: rework and optimize SIMD implementation of dotProd
- add new universal intrinsics v_dotprod[int32], v_dotprod_expand[u&int8, u&int16, int32], v_cvt_f64(int64)
- add a boolean param for all v_dotprod&_expand intrinsics that change the behavior of addition order between
pairs in some platforms in order to reach the maximum optimization when the sum among all lanes is what only matters
- fix clang build on ppc64le
- support wide universal intrinsics for dotProd_32s
- remove raw SIMD and activate universal intrinsics for dotProd_8
- implement SIMD optimization for dotProd_s16&u16
- extend performance test data types of dotprod
- fix GCC VSX workaround of vec_mule and vec_mulo (in little-endian it must be swapped)
- optimize v_mul_expand(int32) on VSX
* core: remove boolean param from v_dotprod&_expand and implement v_dotprod_fast&v_dotprod_expand_fast
this changes made depend on "terfendail" review
Alexander Alekhin [Mon, 7 Oct 2019 16:15:04 +0000 (16:15 +0000)]
Merge pull request #15654 from sturkmen72:patch-3
Alexander Alekhin [Mon, 7 Oct 2019 12:06:43 +0000 (15:06 +0300)]
imgproc: update histogram test
Alexander Alekhin [Mon, 7 Oct 2019 12:04:13 +0000 (12:04 +0000)]
Merge pull request #15653 from tolysz:patch-1
Marcin Tolysz [Mon, 7 Oct 2019 10:45:26 +0000 (11:45 +0100)]
Fix compiler warnings for latest cuda npp which defines this itself as:
```
#define NPP_VER_MAJOR 10
#define NPP_VER_MINOR 2
#define NPP_VER_PATCH 0
#define NPP_VER_BUILD 243
#define NPP_VERSION (NPP_VER_MAJOR * 1000 + \
NPP_VER_MINOR * 100 + \
NPP_VER_PATCH)