Commit Graph

11493 Commits

Author SHA1 Message Date
Ilya Lavrenov
b99396ab12 cvtColor RGB 2 YCrCb 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
940f1e7914 interliving / deinterliving 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
fe371bf624 cvtColor Gray 2 BGR5x5 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
9cacd3261d cvtColor BGR5x5 2 Gray 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
edee922b59 cvtColor YCrCb 2 RGB 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
5f2135695e cvtColor rgb 2 YCrCb 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
bfb45b27e6 column sum 32s 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
1ca35b7424 resize are fast 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
56f3c92737 pyrUp and pyrDown 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
63fc6ef316 convertTo from 64f 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
8870ef4159 convertTo from 16u, 16s, 32s, 32f 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
116fb275a8 convertTo from 8s 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
19e77e4787 convertTo from 8u 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
b758dbd384 convertTo AVX2 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
3a78a22733 convertScaleAbs for s8, f64 2015-01-12 10:59:29 +03:00
Ilya Lavrenov
5578088983 countNonZero 2015-01-12 10:59:28 +03:00
Ilya Lavrenov
972ff1d0c4 polarToCart 2015-01-12 10:59:28 +03:00
Ilya Lavrenov
0a5c9cf145 magnitude 64f 2015-01-12 10:59:28 +03:00
Ilya Lavrenov
6ab928fb39 phase 64f 2015-01-12 10:59:28 +03:00
Ilya Lavrenov
a2a8ba17fc compare 2015-01-12 10:59:28 +03:00
Ilya Lavrenov
8d48632ebe avx2 2015-01-12 10:59:28 +03:00
Timur Sattarov
4762728fd5 More sensible error messages 2015-01-11 03:56:07 +04:00
Josep Bosch
75c99d65a5 Fisheye calibration methods available now in python 2015-01-09 10:05:36 +01:00
Yan Wang
75277bb770 Remove unnecessary global/local dim for radius match.
Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
2015-01-09 13:37:00 +08:00
Nisarg Thakkar
a11c02497f Fixed Bug similar to Bug#3757. UMat all dims zero after release. 2015-01-08 13:48:48 +05:30
Joe Howse
379de5708f Fix shadowed variable warning 2015-01-05 10:56:46 -04:00
Ashod Nakashian
473964806c Added imread and imreadmulti regression tests. 2015-01-03 12:48:29 -05:00
Ashod Nakashian
61ca38103c Added imreadmulti API to read multi-paged images into a vector of Mat. 2015-01-03 00:09:35 -05:00
Ashod Nakashian
ecf359b8c9 Support for multipage decoding in BaseImageDecoder and implemented in TiffDecoder. 2015-01-03 00:09:34 -05:00
Mike Izbicki
ac47c0c624 fix to work with python 2.6
I had to make this modification locally to get opencv to build with python 2.6.  Python 2.6 requires indices in the format string (the `0` I added).  This requirement was relaxed in 2.7, so what used to be there would be working for people who could upgrade. I don't think the change has any negative consequences for future python versions, but I'm no expert.
2015-01-02 14:41:44 -08:00
Ilya Lavrenov
68962adc54 SSE mul 2014-12-31 17:58:54 +03:00
Ilya Lavrenov
60f2f7898a SSE4.1 addWeighted fo 16u 2014-12-31 17:55:30 +03:00
Vadim Pisarevsky
2f6db4dfac Merge pull request #3547 from ilya-lavrenov:ocl_setto 2014-12-31 09:30:40 +00:00
Maksim Shabunin
38d37d2b00 Fixed uninitialized memory usage in ANN_MLP 2014-12-31 12:16:26 +03:00
Maksim Shabunin
d004ee58c5 Support loading old models in ML module
- added test for loading legacy files
- added version to new written models
- fixed loading of several fields in some models
- added generation of new fields from old data
2014-12-31 12:16:25 +03:00
Vadim Pisarevsky
1c8493fb0d Merge pull request #3549 from mshabunin:sphinx-doc-remove 2014-12-31 09:14:22 +00:00
Vadim Pisarevsky
c937e15763 Merge pull request #3555 from ilya-lavrenov:sse_integral 2014-12-31 09:13:18 +00:00
Vadim Pisarevsky
f792fdc3e0 Merge pull request #3559 from ilya-lavrenov:sse_dot_s8 2014-12-31 08:06:06 +00:00
Vadim Pisarevsky
2bddbd2cb5 Merge pull request #3558 from ilya-lavrenov:sse_resize 2014-12-31 08:04:00 +00:00
Vadim Pisarevsky
ba8a971742 Merge pull request #3551 from serval2412:master 2014-12-31 06:09:29 +00:00
Vadim Pisarevsky
2b30759af0 Merge pull request #3556 from rokm:semicolon-warnings 2014-12-31 06:08:12 +00:00
Vadim Pisarevsky
622cf566b9 Merge pull request #3560 from ilya-lavrenov:sse_remap 2014-12-31 06:07:02 +00:00
Vadim Pisarevsky
9c872f5316 Merge pull request #3567 from vbystricky:intelperc_fix 2014-12-31 06:06:18 +00:00
vbystricky
083d8645a5 Fix error of compilation of cap_intelperc.cpp 2014-12-30 15:38:03 +03:00
Vladislav Vinogradov
f50a061225 added stream parameter to all cudaimgproc routines 2014-12-30 15:37:45 +03:00
Vladislav Vinogradov
220d937d9a removed buffered versions of histogram functions
used BufferPool mechanism instead
2014-12-30 15:37:45 +03:00
Vladislav Vinogradov
b4e7ee46c6 fix compilation without CUDA 2014-12-30 11:06:33 +03:00
Vladislav Vinogradov
cd0e95de16 refactor cudaarithm reductions:
* remove overloads with explicit buffer, now BufferPool is used
* added async versions for all reduce functions
2014-12-30 11:06:33 +03:00
Vladislav Vinogradov
a4e598f474 use new BufferPool class for some cudaarithm routines 2014-12-30 11:06:33 +03:00
Vladislav Vinogradov
7454189c2a use new getInputMat/getOutputMat/syncOutput methods in cudaarithm routines 2014-12-30 11:06:33 +03:00
Vladislav Vinogradov
3d0410c147 remove reciprocal version of cuda::divide
it might cause errors, due to implicit type conversion and another cuda::divide
overload
2014-12-30 11:06:32 +03:00
Vladislav Vinogradov
00e7816c1b add auxiliary functions to work with Input/Output arrays:
they allow to perform asynchronous upload/download into temporary buffer
to get valid GpuMat object
2014-12-30 11:06:32 +03:00
Ilya Lavrenov
02b2fdeda9 SSE resize Lanczos 2014-12-30 10:41:23 +03:00
Yan Wang
9699fde8d2 Use hypot to do vector calculation.
Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
2014-12-30 14:12:28 +08:00
Ilya Lavrenov
042895977e SSE2 conversio in remap 2014-12-30 01:00:22 +03:00
Ilya Lavrenov
f57136fd79 SSE2 cv::Mat::dot 2014-12-30 00:34:09 +03:00
Ilya Lavrenov
f6b3bc01e5 addWeighted 2014-12-29 22:01:53 +03:00
Rok Mandeljc
e3b32cce80 modules/core: removed extra semi-colon from mat.inl.hpp and utility.hpp
This silences the pedantic warning messages from gcc 4.8.3
2014-12-29 16:23:43 +01:00
Ilya Lavrenov
9436103ed6 SSE2 optimization of cv::integral 2014-12-29 15:51:55 +03:00
Ilya Lavrenov
1af7d397d4 optimization of UMat::setTo 2014-12-29 13:34:21 +03:00
Julien Nabet
2d5e3b57ea Fix cppcheck reports warnings:
(performance) Possible inefficient checking for 'lmap' emptiness
(warning) Assignment of function parameter has no effect outside the function. Did you forget dereferencing it?
(style) Array index '<xxx>' is used before limits check
2014-12-27 10:54:34 +01:00
Joe Howse
2d16026df6 more const correctness in OpenNI2 getProperty 2014-12-27 00:11:14 -04:00
Joe Howse
b7a3204c57 const correctness in OpenNI and OpenNI2 getProperty 2014-12-26 23:54:03 -04:00
Maksim Shabunin
11591b3e9d Added Qt help generation support 2014-12-26 19:17:18 +03:00
Maksim Shabunin
b4050c775e Updated sample files documentation inclusions 2014-12-26 19:17:18 +03:00
Maksim Shabunin
bebf6c47c6 Removed Sphinx generation commands from cmake scripts 2014-12-26 19:17:08 +03:00
Maksim Shabunin
d01bedbc61 Removed Sphinx documentation files 2014-12-26 19:12:19 +03:00
Vadim Pisarevsky
61991a3330 Merge pull request #3444 from Sync-my-L2P:patch-1 2014-12-26 14:40:29 +00:00
Vadim Pisarevsky
27b224ac74 Merge pull request #3485 from mapycz:fix-calibrate-crash 2014-12-26 14:38:54 +00:00
Vadim Pisarevsky
61886a61de Merge pull request #3504 from a-wi:VideoCapture_get_const_v3 2014-12-26 14:37:47 +00:00
Vadim Pisarevsky
0ff67253f7 Merge pull request #3531 from jet47:cuda-core-refactoring 2014-12-26 12:12:42 +00:00
Vadim Pisarevsky
f85838087a Merge pull request #3539 from mshabunin:openni-linux-paths 2014-12-26 12:12:01 +00:00
Vladislav Vinogradov
fe3f236aa5 disable GeneralizedHoughGuil performance test 2014-12-26 12:04:07 +03:00
Vladislav Vinogradov
f36546dbd2 improve error reporting in _InputArray methods 2014-12-26 12:03:25 +03:00
Vladislav Vinogradov
7c901e39e1 disable sanity test for GeneralizedHoughGuil
the algorithm is not stable yet
2014-12-25 19:23:16 +03:00
Vladislav Vinogradov
18d1be4530 fix tests for match template 2014-12-25 19:23:16 +03:00
Vladislav Vinogradov
26afa49d71 fix cuda match template:
use correct types for integral/sum outputs
2014-12-25 19:23:16 +03:00
Vladislav Vinogradov
9b8c3fd675 rewrite cuda::cvtColor with new device layer and fix test failures 2014-12-25 19:23:15 +03:00
Maksim Shabunin
128e509527 Added enviroment search paths for OpenNI2 for linux and fixed specific warning 2014-12-24 15:07:05 +03:00
Vadim Pisarevsky
1bdd86edeb Merge pull request #3523 from jet47:fix-cuda-buffer-pool 2014-12-24 11:20:27 +00:00
Vadim Pisarevsky
cddee22cf2 Merge pull request #3527 from jet47:cuda-deprivate-old-device-layer 2014-12-24 11:20:06 +00:00
Vadim Pisarevsky
5d15676b7b Merge pull request #3532 from oresths:filter_neon 2014-12-24 09:02:24 +00:00
Vladislav Vinogradov
e7e0da0153 fix GpuMat::swap method:
add swap instruction for allocator field
2014-12-23 17:43:28 +03:00
Vladislav Vinogradov
b33f3bb2cc refactor CV_CUDA_TEST_MAIN, use CV_TEST_MAIN for it
use CV_CUDA_TEST_MAIN for opencv_test_core to initialize CUDA
device information
2014-12-23 17:43:14 +03:00
Vladislav Vinogradov
8237418be6 add Allocator parameter to cudev::GpuMat_ contructors 2014-12-23 17:42:49 +03:00
Vladislav Vinogradov
f054d6316a add cuda::HostMem::getAllocator method
it allows to use cudaHostAlloc methods for cv::Mat objects
2014-12-23 17:42:49 +03:00
Vladislav Vinogradov
2f8e1798ca add more FeatureSet constants 2014-12-23 17:42:49 +03:00
Vladislav Vinogradov
1be1a28920 move CUDA core tests to core module 2014-12-23 17:42:49 +03:00
Vladislav Vinogradov
53862687d5 rename CudaMem -> HostMem to better reflect its purpose 2014-12-23 17:42:49 +03:00
Vladislav Vinogradov
9210d8e542 move allocMatFromBuf function to farneback.cpp:
* it is the only place, where it is used
* no need to make this function public
2014-12-23 17:42:49 +03:00
Vladislav Vinogradov
1d82aecf45 minor reorganization for CUDA doxygen groups:
move main CUDA group to modules/core/cuda.hpp
2014-12-23 17:42:20 +03:00
Vladislav Vinogradov
b5ab82fdbd mark old CUDA device layer as deprecated and remove it from doxygen documentation
add a note to use new cudev module as a replacement
2014-12-23 17:42:14 +03:00
Vladislav Vinogradov
68e08bbecd fix null stream initialization for multi-gpu systems 2014-12-23 17:41:24 +03:00
Vladislav Vinogradov
05d40946f3 move StackAllocator to cpp file
it is internal class, no need to export it
2014-12-23 17:41:24 +03:00
Vladislav Vinogradov
7ed38b97c3 fix cuda::BufferPool deinitialization
The deinitialization of BufferPool internal objects is controled by global
object, but it depends on other global objects, which leads to errors
caused by undefined deinitialization order of global objects.

I merge global objects initialization into single class, which performs
initialization and deinitialization in correct order.
2014-12-23 17:41:24 +03:00
Jiri Drbalek
d71e001736 fix crash when sample point out of image boundaries 2014-12-22 21:01:17 +00:00
Vadim Pisarevsky
d9f159a554 Merge pull request #3513 from mshabunin:compat-30 2014-12-22 11:58:01 +00:00
Vadim Pisarevsky
c0005fd293 Merge pull request #3520 from JoeHowse:master 2014-12-22 11:14:29 +00:00
Vadim Pisarevsky
f12bd999bf Merge pull request #3524 from jet47:fix-cuda-warnings 2014-12-22 10:58:07 +00:00
Vadim Pisarevsky
a1df295079 Merge pull request #3525 from jet47:fix-cudev-tests 2014-12-22 10:57:07 +00:00
Vadim Pisarevsky
7b20ce4952 Merge pull request #3490 from oresths:symmcolumnsmall_fix 2014-12-22 10:44:47 +00:00
Vadim Pisarevsky
432546e4c4 Merge pull request #3512 from vins31:OpenNi2_AsusXtion 2014-12-22 10:39:42 +00:00
Vadim Pisarevsky
700a388173 Merge pull request #3499 from StevenPuttemans:fix_2432 2014-12-22 10:29:31 +00:00
Vadim Pisarevsky
1ab551487d Merge pull request #3516 from ana-GT:openni2_defaultMode 2014-12-22 10:26:30 +00:00
Vadim Pisarevsky
060d67517a Merge pull request #3518 from wangyan42164:ocl_cascade_detect 2014-12-22 10:25:47 +00:00
Vadim Pisarevsky
199f1aec2e Merge pull request #3519 from fvgoto:patch-1 2014-12-22 10:25:00 +00:00
Vladislav Vinogradov
ec33c4ae36 increase epsilons for tests due to different optimizations (IPP vs CUDA, float vs double) 2014-12-22 11:48:45 +03:00
Vladislav Vinogradov
25f33a7e30 update cudev color conversions according to the latest changes in CPU code 2014-12-22 11:48:45 +03:00
Vladislav Vinogradov
48c9c24da6 disable -Wshadow warning for CUDA modules:
it is generated by CUDA headers and we can't fix it
2014-12-22 11:48:19 +03:00
orestis
fffe2464cd Change DescriptorExtractor_ORB regression test
to compensate for neon ieee754 non-compliancy.
Also changed the comparison between max valid and calculated distance to
make the error message more accurate (in case curMaxDist == maxDist)
2014-12-21 21:27:03 +02:00
orestis
9811a739b0 Change gaussianBlur5x5 perf test epsilon
Set it 1 instead of 0.001, as is already done in gaussianBlur3x3. That
will allow integer destination matrices that are not exactly the same,
but very close to the expected result, to pass the test.
2014-12-20 17:14:21 +02:00
orestis
9c6da03504 SymmRowSmallVec_32f 1x5 asymm
NEON speedup: 2.31x
Auto-vect speedup: 2.26x

Test kernel: [-0.9432, -1.1528, 0, 1.1528, 0.9432]
2014-12-19 22:51:42 +02:00
orestis
13c0855114 SymmRowSmallVec_32f 1x5
NEON speedup: 2.36x
Auto-vect speedup: 2.36x

Test kernel: [0.1, 0.2408, 0.3184, 0.2408, 0.1]
2014-12-19 22:47:06 +02:00
orestis
ed0ce48179 SymmColumnVec_32f16s asymm
NEON speedup: 9.46x
Auto-vect speedup: 1x

Test kernel: [-0.9432, -1.1528, 0, 1.1528, 0.9432]
2014-12-19 22:44:39 +02:00
orestis
a2a131799f SymmColumnVec_32f16s
NEON speedup: 8.64x
Auto-vect speedup: 1x

Test kernel: [0.1, 0.2408, 0.3184, 0.2408, 0.1]
2014-12-19 22:42:31 +02:00
orestis
37e018454d SymmColumnSmallVec_32s16s 3x1 asymm
NEON speedup: 2.12x
Auto-vect speedup: 1.01x

Test kernel: [-2, 0, 2]
2014-12-19 22:40:55 +02:00
orestis
4443d6b0a1 SymmColumnSmallVec_32s16s [-1, 0, 1]
NEON speedup: 3.27x
Auto-vect speedup: 1.01x
2014-12-19 22:37:52 +02:00
orestis
99e782e62c SymmColumnSmallVec_32s16s 3x1
NEON speedup: 1.75x
Auto-vect speedup: 1x
2014-12-19 22:36:46 +02:00
orestis
33dfeb85be SymmColumnSmallVec_32s16s [3, 10, 3] Scharr
NEON speedup: 2.04x
Auto-vect speedup: 1x
2014-12-19 22:35:52 +02:00
orestis
61a7f48bf4 SymmColumnSmallVec_32s16s [1, -2, 1]
NEON speedup: 2.75x
Auto-vect speedup: 1.01x
2014-12-19 22:34:11 +02:00
orestis
4f906372e2 SymmColumnSmallVec_32s16s [1, 2, 1]
NEON speedup: 2.66x
Auto-vect speedup: 1x
2014-12-19 22:33:11 +02:00
orestis
80a0364465 SymmColumnVec_32s8u asymm
NEON speedup: 2.95x
Auto-vect speedup: 1x

Test kernel: [-0.9432, -1.1528, 0, 1.1528, 0.9432]
2014-12-19 22:29:54 +02:00
orestis
4f5916f12d SymmColumnVec_32s8u
NEON speedup: 1.96x
Auto-vect speedup: 1x

Test kernel: [0.0708, 0.2445, 0.3694, 0.2445, 0.0708]
2014-12-19 22:26:41 +02:00
orestis
1fb966dc61 SymmRowSmallVec_8u32s 1x5 asymm
NEON speedup: 3.14x
Auto-vect speedup: 1.6x

Test kernel: [-5, -2, 0, 2, 5]
2014-12-19 22:23:09 +02:00
orestis
2e7b9a2c0f SymmRowSmallVec_8u32s 1x3 asymmetric
NEON speedup: 1.95x
Auto-vect speedup: 1.17x

Test kernel: [-2, 0, 2]
2014-12-19 22:15:37 +02:00
orestis
969a218057 SymmRowSmallVec_8u32s [-1, 0, 1]
NEON speedup: 1.84x
Auto-vect speedup: 1.2x
2014-12-19 22:11:52 +02:00
orestis
c0019a42e4 SymmRowSmallVec_8u32s 1x5 general
NEON speedup: 3.86x
Auto-vect speedup: 1.67x

Test kernel: [0.0708, 0.2445, 0.3694, 0.2445, 0.0708]
2014-12-19 22:10:58 +02:00
orestis
cb48d7798d SymmRowSmallVec_8u32s 1x3 general
NEON speedup: 2.56x
Auto-vect speedup: 1.26x

Test kernel: [1, 3, 1]
2014-12-19 22:08:23 +02:00
orestis
0ba3b06efd SymmRowSmallVec_8u32s [1, 2, 1]
NEON speedup: 4.1
Auto-vect speedup: 2.25
2014-12-19 22:02:57 +02:00
Maksim Shabunin
c485aee464 Included c-headers for better 2.4 compatibility 2014-12-19 17:05:26 +03:00
Joe Howse
13c04120dd For Java compatibility, avoiding explicit pseudonym in enum 2014-12-16 21:37:14 -04:00
Ana Huaman Quispe
1ad1b737c2 Fixed registration bug: It was ALWAYS OFF - even after changing the property 2014-12-16 19:45:50 -05:00
Joe Howse
620a969285 Allow BGR, RGB, or gray capture via libv4l 2014-12-16 20:07:37 -04:00
Artur Wieczorek
854a722c70 Implement VideoCapture::get, CvCapture::getProperty, IVideoCapture::getProperty as constant methods. 2014-12-16 16:08:22 +01:00
Florian Verdet
f87f0cc481 fix obvious copy+paste typo in computeDistance()
(with this else-branch, argument contour2 would not be used at all)
2014-12-16 12:46:07 +01:00
Yan Wang
efa84d8225 Use preprocessor for constant values in OpenCL kernel instead of
the parameter variable.

It could improve the performance of
OCL_Cascade_Image_MinSize_CascadeClassifier.CascadeClassifier/*.
Especially,
OCL_Cascade_Image_MinSize_CascadeClassifier.CascadeClassifier/15
OCL_Cascade_Image_MinSize_CascadeClassifier.CascadeClassifier/16
could be improved about 2% in Intel platform.

Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
2014-12-16 16:21:05 +08:00
Yan Wang
fd2d800c06 Remove unnecessary local variable "size".
It should also be better for optimizing when compiling kernel.

Signed-off-by: Yan Wang <yan.wang@linux.intel.com>
2014-12-16 14:25:24 +08:00
Ana Huaman Quispe
0b429fee7b Changed CV_DbgAssert to CV_Assert when setting video modes for OpenNI2. Otherwise, in release mode the default modes never get set 2014-12-15 18:16:25 -05:00
Vadim Pisarevsky
009aec5164 Merge pull request #3491 from mshabunin:ios-extra-world 2014-12-15 18:07:09 +00:00
Vadim Pisarevsky
3c74c23bad Merge pull request #3473 from TobyWanKenobi:master 2014-12-15 18:04:01 +00:00
Vadim Pisarevsky
d54b069ae1 Merge pull request #3448 from Ashod:highgui_trackbar_improvements 2014-12-15 18:03:01 +00:00
StevenPuttemans
edb608d206 fix documentation bug 2432 2014-12-15 11:53:55 +01:00
vincentweb
4d12beb723 Added better OpenNI2 support to the Asus Xtion and Occipital Structure
sensors which do not have image generators.
2014-12-14 20:52:24 +01:00
Sync-my-L2P
5a43c7a28e Update segmentation.cpp
removed trailing whitespaces
2014-12-11 17:36:36 +01:00
Vadim Pisarevsky
25378587e2 Merge pull request #3479 from mshabunin:doxygen-tutorials 2014-12-09 14:06:23 +00:00
Vadim Pisarevsky
10dc5a3759 Merge pull request #3492 from Dmitry-Me:reduceVariablesScope1 2014-12-09 14:05:35 +00:00
Alexander Alekhin
0f7721e915 Merge pull request #3486 from Chuanbo-Weng:repeat-perf 2014-12-08 15:49:21 +00:00
Dmitry-Me
f269828160 Reduce variables scope, move declaration to first use point 2014-12-08 18:21:17 +03:00
TobyWanKenobi
b35f5d115f Removed "FORMAT_XML" to generalize format
Removed the "FileStorage::FORMAT_XML" to generalize format of the String
model.
2014-12-08 09:21:55 +01:00
orestis
c762da9893 Fix SymmColumnSmallVec_32s16s SSE code
Specifically, in general antisymmetric case src[-1] (S0) should be
subtracted from from src[1] (S2), and not the opposite.
2014-12-06 19:53:07 +02:00