Commit Graph

57 Commits

Author SHA1 Message Date
Alexander Alekhin
801c943009 fix coverity reports 2018-11-11 13:51:47 +00:00
Pavel Rojtberg
afa0f80c61 videoio: add manual white-balance and implement it for V4L2 2018-11-09 17:14:33 +01:00
Alexey Nikolaev
8396ae6e4f Merge pull request #12893 from aleksey-nikolaev:cap-update
V4L (V4L2): Refactoring. Added missed camera properties. Fixed getting `INF` for some properties. Singlethread as always (#12893)

* cap_v4l:
1 Added cap_properties verbalization.
2 Set Get of properties elementary refactoring.
3 Removed converting parameters to/from [0,1] range.
4 Added all known conversion from V4L2_CID_* to CV_CAP_PROP_*

* cap_v4l:
1. Removed all query for parameters range.
2. Refactored capture initialization.
3. Added selecting input channel by CV_CAP_PROP_MODE. Default value -1 the channels not changed.

* cap_v4l:
1. Refactoring of Convert To RGB

* cap_v4l:
1. Fixed use of video buffer index.
2. Removed extra memcopy for grab image.
3. Removed device closing from autosetup_capture_mode_v4l2

* cap_v4l:
1. The `goto` was eliminated
2. Fixed use of temporary buffer index for V4L2_PIX_FMT_SN9C10X
3. Fixed use of the bufferIndex
4. Removed trailing spaces and unused variables.

* cap_v4l:
1. Alias for capture->buffers[capture->bufferIndex]
2. Reduced size of data for memcpy: bytesused instead of length
3. Refactoring. Code duplication. More info for debug

* cap_v4l:
1. Added the ability to grab and retrieveFrame independently several times

* cap_v4l:
1. Not need to close/open device for new capture parameters applying.
2. Removed using of device name as a flag that the capture is closed. Added sufficient function.
3. Refactoring. Added requestBuffers and createBuffers

* cap_v4l:
1. Added tryIoctl with `select` like was in mainloop_v4l2.
2. Fixed buffer request for device without closing the device.
3. Some static function moved to CvCaptureCAM_V4L
4. Removed unused defines

* cap_v4l:
1. Thread-safe now

* cap_v4l:
1. Fixed thread-safe destructor
2. Fixed FPS setting

* Missed brake

* Removed thread-safety

* cap_v4l:
1. Reverted conversion parameters to/from [0,1] by default for backward compatibility.
2. Added setting for turn off compatibility mode: set CV_CAP_PROP_MODE to 65536
3. Most static functions moved to CvCaptureCAM_V4L
4. Refactoring of icvRetrieveFrameCAM_V4L and using of frame_allocated flag

* cap_v4l:
1. Added conversion to RGB from NV12, NV21
2. Refactoring. Removed wrappers for known format conversions.

* Added `CAP_PROP_CHANNEL` to the enum VideoCaptureProperties.
CAP_V4L migrated to use VideoCaptureProperties.

* 1. Update comments.
2. Environment variable `OPENCV_VIDEOIO_V4L_RANGE_NORMALIZED` for setting default backward compatibility mode.
3. Revert getting of `CAP_PROP_MODE` as fourcc code in backward compatibility mode.

* videoio: update cap_v4l - compatibilityMode => normalizePropRange

* videoio(test): V4L2 MJPEG test

`v4l2-ctl --list-formats` should have 'MJPG' entry

* videoio: fix buffer initialization

to avoid "munmap: Invalid argument" messages
2018-11-08 21:27:45 +03:00
Alexander Alekhin
b54a70a538 videoio: return -1 is incorrect for function with 'bool' result 2018-10-15 18:20:15 +00:00
Alexander Alekhin
b35fbff675 videoio: added '.getBackendName()' method 2018-09-18 16:19:19 +00:00
Alexander Alekhin
8a3c394d6a don't use constructors for C API structures 2018-09-06 14:34:16 +03:00
Todor Tomov
9988e1b6ee cap_v4l: Fix private control enumeration end condition
Currently the private control enumeration will be stopped when QUERYCTRL
returns -EINVAL only. It is possible however that other errors occur.

One particular case is when the v4l2 device doesn't support any controls
and doesn't implement the QUERYCTRL ioctl. In that case the v4l2
framework returns -ENOTTY. In that case the current control enumeration
will go in an endless loop.

To fix this change the control enumeration stop condition. If any errors
occur, end the control enumeration.

Signed-off-by: Todor Tomov <todor.tomov@linaro.org>
2018-09-04 11:33:08 +03:00
Kaartic Sivaraam
a527e8cc73 cap-v4l: remove unwanted loop in V4L2 mainloop
The while loop would run only once making it useless and leading
to confusion.

So, remove the unwanted while loop and just keep an infinite for
loop.
2018-08-21 16:41:01 +05:30
Maksim Shabunin
a2daf0c83c videoio: added YUV420 format (UV order) support to v4l capture 2018-08-02 18:34:11 +03:00
Teng Yiliang
dadde75ef0 use struct member width_set/height_set to replace static width/height.
the static variables will cause race-condition when operating in
multithread scenarios.

Signed-off-by: Teng Yiliang <ylteng@outlook.com>
Signed-off-by: Teng Yiliang <yiliang.teng@weimob.com>
2018-07-21 07:27:17 +08:00
Alexander Alekhin
c94fe0c7e7 videoio(v4l): eliminate global variable 2018-05-31 15:11:20 +03:00
Alexander Alekhin
83d915eca1 videoio(v4l): don't pre-scan or cache list of available cameras 2018-05-31 15:11:20 +03:00
Alexander Alekhin
22f435ff4d videoio(v4l): fix code indentation, tabs 2018-05-31 15:11:20 +03:00
tlanclos
a2c7afad77 V4L Buffer: Support CV_CAP_PROP_BUFFERSIZE in cap_v4l (#11047) 2018-04-09 17:34:00 +03:00
Alexander Alekhin
8f0669c300 videoio: apply CV_OVERRIDE/CV_FINAL 2018-03-28 17:57:59 +03:00
Eugene Mikhantiev
c790299906 Fix return code in case of timeout 2018-03-07 17:26:34 +07:00
luz.paz
d05714995c Misc. modules/ cont. pt2
Found via `codespell`
2018-02-13 11:28:11 -05:00
Vitaly Tuzov
ad051cdd99 Fixed CAP_PROP_FORMAT evaluation in case CvCaptureCAM_V4L returns CV_16U image 2017-10-19 20:51:00 +03:00
Alexander Alekhin
897b071b97 videoio(v4l): move MJPEG/JPEG to the end of probe list 2017-08-27 10:26:05 +03:00
Alexander Alekhin
602f047fe8 build: replace WIN32 => _WIN32 2017-07-25 13:30:48 +03:00
Maksim Shabunin
7cefb52fda V4L: do not return frame if it can not be retrieved 2017-05-23 18:03:17 +03:00
kvaghel1
6fd9edc50f Fix frame timestamp in VideoCapture::get 2017-05-22 21:22:35 -04:00
Pavel Rojtberg
d92d82d194 cap_v4l: SetProperty - do not return false while setting video size 2017-04-04 15:07:02 +02:00
Jake Kesinger
bd50553149 videoio: Fix for valgrind warning in icvGetPropertyCAM_V4L
https://github.com/opencv/opencv/issues/7380
2016-10-18 14:18:35 -04:00
Guillaume Jacob
df2b591896 videoio: fix segfault if CONVERT_RGB is false (issue #7465) 2016-10-17 23:01:30 +02:00
Gregory Kramida
0d626c8fef v4l2 backend: Y16 default behavior fixed & FOURCC setting added
1) Cameras started with Y16 (V4L2_PIX_FMT_Y16) format via v4l2 backend will now exhibit default camera behavior, i.e. convert the 16-bit image to BGR as with all other formats. 16-bit 1-channel output will now only be produced for Y16 if CV_CAP_PROP_CONVERT_RGB is set to "false" using VideoCap::set method.
2) v4l2 videoio backend now supports setting CV_CAP_PROP_FOURCC explicitly (icvSetPropertyCAM_V4L function in cap_v4l.cpp), allowing users to manually set the codec on cameras that support multiple codecs.
2016-09-15 21:02:24 -04:00
stbnps
a4a6ee34bf Added support for V4L2_PIX_FMT_Y16 2016-09-15 11:06:15 -04:00
Alexander Alekhin
ddc0b42bc3 migration: github.com/opencv/opencv 2016-07-12 12:51:12 +03:00
Alexander Alekhin
289b6ff2a5 Merge pull request #6393 from paroj:v4l_exposure 2016-04-18 15:14:21 +00:00
Alexander Alekhin
2b29db860c Merge pull request #6391 from virtuald:v4l-device-name 2016-04-12 12:57:21 +00:00
Pavel Rojtberg
91678ff828 cap_v4l: allow manually controlling exposure 2016-04-12 12:10:54 +02:00
Dustin Spicuzza
e489f29d0f v4l/libv4l: allow opening device by name
- Allows using non-default device names such as /dev/v4l/by-path/pci-0000:00:1d.0-usb-0:1.1:1.0-video-index0
2016-04-12 01:25:34 -04:00
Lucas Solomon
d2d5d32fe0 remove trailing whitespace 2016-03-22 22:31:16 -07:00
Lucas Solomon
688b4d9d7a return 0 from VideoCapture::read() when cannot connect to camera 2016-03-22 19:03:28 -07:00
Krishnaraj Bhat
9b8013d193 gcc6: fix misleading indentation warning
cosmetic changes to fix this warning.
real bugs not found
2016-03-07 17:06:16 +05:30
Pavel Rojtberg
955f489621 make CV_CAP_PROP_FORMAT consider the current channel count 2015-11-08 17:01:03 +01:00
Pavel Rojtberg
05f52b697f replace uyvy_to_rgb24 by tested and conformant cvtColor 2015-11-08 17:01:02 +01:00
Pavel Rojtberg
ad68b79630 replace yuv420p_to_rgb24 by tested and conformant cvtColor
Conversion was not ITU 601 conformant. Also add YVU420 format to allowed
zero copy access.
2015-11-08 17:01:02 +01:00
Pavel Rojtberg
8527d895bb replace rgb24_to_rgb24 by tested cvtColor
internally using ipp this conversion is now roughly 2x faster.
also add RGB/ BGR formats to allowed zero copy access.
2015-11-08 17:01:02 +01:00
Pavel Rojtberg
f50817120e v4l: remove needless CvCaptureCAM_V4L_CPP wrapper
possible source of memory leaks and unneeded complexity
2015-11-08 17:01:02 +01:00
Pavel Rojtberg
93d6e800b6 v4l: Fixed memory leaks and inconsistent status return values
by updating to c++ coding conventions

 - const correctness
 - use bool as return value
 - use explicit initialization instead of CLEAR macro/ memset
 - use cv namespace
2015-11-08 17:01:02 +01:00
Pavel Rojtberg
a581ddd896 remove support of Video4Linux1 API
the last kernel that allowed compiling this code was 2.6.37 which was
released almost 5 Years ago. So probably it does not get much testing
any more. Furthermore even back then one was better off using the V4L2
API.

The only change touching currently used code is the removal of the
global V4L2_SUPPORT variable.
2015-11-08 17:01:02 +01:00
Pavel Rojtberg
eac5cab5cb cap_v4l: implement PROP_CONVERT_RGB
allows disabling automatic conversion to RGB for certain formats. If
conversion is disabled the returned image just points to the underlying
buffer, so no memcpy is performed.

Note that we do not check image size in retrieve frame any more as it
can not possibly while the device is streaming.
Furthermore this code was disabled altogether by the wrong ifdef in the
previous commit.
2015-10-18 14:14:20 +02:00
Pavel Rojtberg
5e62e71b13 fix wrong ifdef bracketing
in the case of HAVE_CAMV4L2 && !HAVE_CAMV4L there was no body for the if
statement.
2015-10-18 14:13:44 +02:00
Pavel Rojtberg
838947bb8e replace custom yuyv_to_rgb24 implementation by cvtColor 2015-10-18 13:51:20 +02:00
Pavel Rojtberg
80747088e3 avoid needless copies during mjpeg decoding 2015-10-18 13:51:20 +02:00
Pavel Rojtberg
56dd7eda0d remove additional V4L2 pixelformat defines
they are upstream since at least linux 2.6.8 (10 Years)
http://lxr.oss.org.cn/ident?v=2.6.8&i=V4L2_PIX_FMT_SBGGR8
2015-10-18 13:51:20 +02:00
Pavel Rojtberg
588eba3b37 simplify autosetup_capture_mode_v4l2 by using a for loop 2015-10-18 13:51:20 +02:00
Pavel Rojtberg
5525cc4d09 implement CAP_PROP_MODE, CAP_PROP_FOURCC and CAP_PROP_FORMAT
do not use a custom enum instead of the V4L2 fourcc defines for palette.
This way we can easily implement CAP_PROP_FOURCC and CAP_PROP_MODE.
2015-10-18 13:51:20 +02:00
Pavel Rojtberg
c0fe522c9d allow changing FPS and Image Size using V4L2
use logic similar to cap_libv4l: replace icvSetVideoSize by v4l2_reset
as it was not used for V4L1, the actual frame format is negotiated in
try_palette_v4l2 and the stream has to restarted anyway.
2015-10-18 13:51:16 +02:00