Commit Graph

108 Commits

Author SHA1 Message Date
cudawarped
0867e3188d Merge pull request #15290 from cudawarped:ffmpeg_raw_retrieve
Add retrieve encoded frame to VideoCapture

* Add capacity to retrieve the encoded frame from a VideoCapture object.

* Correct raw codec and pixle format output from ffmpeg capture.

* Remove warnings from build.

* Added VideoCaptureRaw subclass.

* Include abstract base class VideoCaptureBase and rename new subclass VideoContainer as suggested by mshabunin.

* Remove using.

* Change base class name for compatibility with jave bindings generator.

* Move grab and retrieve and add override specifier

* Add setRaw and readRaw to IVideoCapture interface
-setRaw to disable video decoding and enable bitstream filters from mp4 to h254 and h265.
-readRaw to return the raw undecoded/filtered bitstream.
Add createRawCapture to initiate a backend with setRaw enabled.
Remove inheritance and use an independant VideoContainer subclass with IVideoCapture member.

* Address unused parameter warings.
Remove VideoContainer from python bindings as it no longer returns a Mat.
Use opencv type uchar instead of unsigned char.
Add missing destructor to VideoContainer class.

* Address build warnings and include all params in documentation.

* Include deprecated bitstream filtering API.

* Update codec_id query to work with older ffmpeg api's.
Change api version defines to be consistent - most recent api version first.

* Fix typo.

* Update test to work with naming of new files in the extra repo

* Investigate test failure

* Check bytes read by ffmpeg

* Removed mp4 video container test

* Applied suggested changes.

* videoio: rework API for extraction of RAW video streams

- FFmpeg only

* address review comments
2019-11-18 17:07:06 +03:00
Maxim Pashchenkov
1acadd363b Merge pull request #15100 from Volskig:cam_multiplexing_function_v
Implement Camera Multiplexing API

* IdideoCapture + two wrong function

function waitAny

Add errors catcher

Stub for Python added.

Sifting warnings

One test added

Two tests for camera and Perf tests added

* Perf sync and async tests for waitAny() added, waitAnyInterior() deleted, getDeviceHandle() deleted

* Variable OPENCV_TEST_CAMERA_LIST added

* Without fps set

* ASSERT_FAILED for environment variable

* Perf tests is DISABLED_

* --Trailing whitespace

* Return false from cap.cpp deleted

* Two functions deleted from interface, +range for, +environment variable in test_camera

* Space deleted

* printf deleted, perror added

* CV_WRAP deleted, cv2 cleared from stubs

* -- space

* default timeout added

* @param changed

* place of waitAny changed

* --whitespace

* ++function description

* function description changed

* revert unused changes

* videoio: rework API for VideoCapture::waitAny()
2019-11-15 19:42:12 +03:00
luz.paz
ec43292e1e Fix modules/ typos
Found using `codespell -q 3 -S ./3rdparty -L activ,amin,ang,atleast,childs,dof,endwhile,halfs,hist,iff,nd,od,uint`
2019-08-15 18:02:09 -04:00
Alexander Alekhin
ddcf388270 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2019-06-07 19:02:55 +03:00
Ahmed Ashour
5c56b8ce92 java: generated code to have javadoc 2019-06-05 12:44:03 +02:00
Maksim Shabunin
bcf7286ad9 Docs: updated videoio module overview 2019-05-22 15:35:34 +03:00
Pavel Rojtberg
15bb0b86ce VideoCapture: add exception error mode similar to fstream + test 2019-04-10 13:41:57 +02:00
Alexander Alekhin
11fd9e5fdc videoio: revert registry chages, update cap.cpp 2019-03-04 21:37:20 +00:00
Maksim Shabunin
9702987209 Framework for dynamic videoio backends, FFmpeg and GStreamer plugins 2019-02-26 13:50:30 +03:00
Maksim Shabunin
73959fed45 Merge pull request #13422 from mshabunin:split-videoio-cmake
* Split videoio dependencies search into pieces, removed obsolete backends
2018-12-26 15:50:20 +03:00
Tsukasa Sugiura
09b3dcb6db Merge pull request #13341 from UnaNancyOwen:fix_librealsense
* videoio(librealsense): fix pipeline start with config

fix to apply pipeline settings by passing config to start.

* videoio(librealsense): add support get props

add support get some props.
2018-12-05 20:12:25 +03:00
Alexander Alekhin
a574788e89 move legacy C-API constants into separate files 2018-11-17 23:47:51 +00:00
Pavel Rojtberg
846a500fb4 videoio: drop VideoCaptureModes enum in favour of fourcc 2018-11-13 17:20:24 +01:00
Pavel Rojtberg
0d65397ae7 videoio: remove cap_libv4l in favour of cap_v4l
cap_libv4l depends on an external library (libv4l) yet is still larger
(1966 loc vs 1822 loc).
It was initially introduced copy pasting cap_v4l in order to offload
various color conversions to libv4l.
However nowadays we handle most of the needed color conversions inside
OpenCV. Our own implementation is better tested and (probably) also
better performing. (as it can optionally leverage IPP/ OpenCL)

Currently cap_v4l is better maintained and generally the code is in
better shape. There is however an API
difference in getting unconverted frames:
* on cap_libv4l one need to set `CV_CAP_MODE_GRAY=1` or
`CV_CAP_MODE_YUYV=1`
* on cap_v4l one needs to set `CV_CAP_PROP_CONVERT_RGB=0`

the latter is more flexible though as it also allows accessing undecoded
JPEG images.

fixes #4563
2018-11-12 13:38:59 +03:00
Alexander Alekhin
1913482cf5 Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-11-10 20:50:26 +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
5869415a57 videoio: drop obsolete backends
- VFW
- QuickTime/QtKit
- Unicap - GPL, no active support: https://github.com/unicap/unicap
- DC1394 (1st version) / CMU1394
2018-11-07 19:49:09 +03:00
Alexander Alekhin
4395c1b9f8 videoio: backport "VideoCapture(int index, int apiPreference)" interface 2018-11-04 17:27:47 +00:00
Alexander Alekhin
50bec53afc Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-10-26 17:56:55 +03:00
wanghanmin
eb981cc7d7 Merge pull request #12138 from wanghanmin:wanghanmin-patch-videoio_crossbarsetting-1
* Update videoio.hpp

add VideoCapturePropertie for clossbar input pin setting

* Update cap_dshow.cpp

For some kind of capture card, such as "avermedia cv710 " , it use SerialDigital as input pin and so it can not work.
Here added new PhysicalConnectorType enumeration: PhysConn_Video_YRYBY and PhysConn_Video_SerialDigital to support it.
And also provide new property parameter CAP_CROSSBAR_INPIN_TYPE to set the crossbar input pin type which will be used in videoInput::start(int deviceID, videoDevice *VD):
" if(VD->useCrossbar)
    {
        DebugPrintOut("SETUP: Checking crossbar\n");
        routeCrossbar(&VD->pCaptureGraph, &VD->pVideoInputFilter, VD->connection, CAPTURE_MODE);

    }
"

And at last ,fixed one issue for function setSizeAndSubtype, added code 
pVih->rcSource.top = pVih->rcSource.left = pVih->rcTarget.top =pVih->rcTarget.left=0;
pVih->rcSource.right = pVih->rcTarget.right= attemptWidth;
pVih->rcSource.bottom = pVih->rcTarget.bottom = attemptHeight;

without these code , rcSource and rcTarget will keeping use default resolution and cause fail in hr = VD->streamConf->SetFormat(VD->pAmMediaType) and cannot find suitable MediaType.

Tested with python3 and mfc (Avermedia cv710)
Python3 code:
import cv2
print("test cv")
cap=cv2.VideoCapture(0)
cap.set(5,60)
cap.set(3,1920)
cap.set(4,1080)
cap.set(31,6)


ret,img=cap.read()
cv2.namedWindow("cap",cv2.WINDOW_NORMAL)
cv2.resizeWindow("cap",960,640);
while True:
    ret,img=cap.read()
    if ret==False:
        continue
    cv2.imshow("cap",img)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()

cv2.destroyAllWindows()

MFC code:
void CcvtestDlg::OnBnClickedButton1()
{
VideoCapture cap(0);
cap.set(CAP_PROP_FRAME_WIDTH, 1920);
cap.set(CAP_PROP_FRAME_HEIGHT, 1080);

cap.set(CAP_CROSSBAR_INPIN_TYPE , 6);
Mat img;
namedWindow("test", WINDOW_NORMAL);
resizeWindow("test", 960, 640);
while (1)
{
if (cap.read(img))
{
imshow("test", img);
if ('q' ==waitKey(1))
break;
}
}
destroyAllWindows();
cap.release();
}

* Update cap_dshow.cpp

* Update videoio.hpp

move enum value of CAP_CROSSBAR_INPIN_TYPE to the end of list

* Update videoio.hpp

* Update cap_dshow.cpp

removed trailing whitespace

* Update test_camera.cpp

Add test for capture device using PhysConn_Video_SerialDigital as crossbar input pin

* Update test_camera.cpp

Correction of misunderstanding about how to add test case.
2018-10-25 19:41:37 +03:00
Alexander Alekhin
a1bd39441f videoio: fix typo 2018-10-24 19:12:35 +03:00
Suleyman TURKMEN
59bf2a34fa Update videoio 2018-10-10 21:58:04 +03:00
Alexander Alekhin
a8b0db4e5d Merge remote-tracking branch 'upstream/3.4' into merge-3.4 2018-09-28 14:14:47 +03:00
Alexander Alekhin
d3eed2cf23 videoio: CAP_PROP_BACKEND property interface 2018-09-18 16:25:01 +00:00
Alexander Alekhin
b35fbff675 videoio: added '.getBackendName()' method 2018-09-18 16:19:19 +00:00
Alexander Alekhin
b80c978f5d core: change cv::Ptr DefaultDeleter 2018-09-12 12:20:15 +00:00
Hamdi Sahloul
a39e0daacf Utilize CV_UNUSED macro 2018-09-07 20:33:52 +09:00
Suleyman TURKMEN
c61bc3a0cb Update documentation and samples 2018-08-17 14:21:29 +03:00
Alexander Alekhin
0bef42ba12 videoio: add note about image BGR format VideoWriter::write() 2018-07-28 09:08:09 +00:00
Alexander Alekhin
270cc3bcbc videoio: add routines to query information about backends API
into cv::videoio_registry namespace
2018-07-19 17:27:37 +03:00
Maksim Shabunin
53eb27f508 AVI container: use C++ streams for file operations, check some operations for overflow 2018-07-16 13:46:28 +03:00
Alexander Alekhin
84db82a329 build: fix warnings 2018-04-24 16:15:22 +03:00
Maksim Shabunin
a9bdf75c5b videoio: refactored XINE backend 2018-04-20 15:20:46 +03:00
Alexander Alekhin
9819ebc095 videoio: add missing CAP_PROP_SAR_NUM/DEN propepties into .hpp file
reuse av_guess_sample_aspect_ratio() if available in ffmpeg
2018-02-21 19:14:04 +03:00
Alexander Nesterov
df8f61877e Added avi-container with tests 2018-02-15 17:34:49 +03:00
luz.paz
d05714995c Misc. modules/ cont. pt2
Found via `codespell`
2018-02-13 11:28:11 -05:00
Suleyman TURKMEN
89480801b8 some improvements on tutorials 2017-07-29 20:08:19 +03:00
Alexander Alekhin
460e9bf0af videoio: drop changes from legacy C-API header 2017-06-25 23:25:56 +03:00
Alexander Alekhin
23f4bff742 videoio: update VideoWriter apiPreference parameter position 2017-06-25 22:57:24 +03:00
Maksim Shabunin
c06f3d63e8 Initial version of MediaSDK integration:
- cmake dependencies search (WITH_MFX option)
- raw H264, H265, MPEG2 encoding and decoding
- tests for supported formats
2017-06-20 12:15:10 +03:00
Vladislav Sovrasov
f1c16f42b4 video: add one more constructor for VideoWriter 2017-06-19 12:11:14 +03:00
PkLab.net
eb768514c3 Fix misplaced description CAP_PROP_SETTINGS and others minor changes in videoio doc 2017-01-26 17:10:32 +01:00
Dal Rupnik
c10283b2b6 Replaced macro with built-in OpenCV export 2017-01-24 10:26:19 +01:00
Dal Rupnik
a50efda49d Added export functions for ObjC classes 2017-01-23 17:15:17 +01:00
Alexander Alekhin
e547bbbc3f videoio: preserve conflict with common properties
Usage:
    writer.set(cv::CAP_PROP_IMAGES_BASE + cv::IMWRITE_JPEG_QUALITY, 80);
2016-12-01 15:37:12 +03:00
sourin
94b5a74067 Fixed with review comments. 2016-11-15 12:16:15 +05:30
ArkadiuszRaj
8bd595acfe fourcc support, improved buffer handling, check if exposure, gain & fps properties are available 2016-10-09 16:58:30 +02:00
ArkadiuszRaj
48ae99ecef Support for MONO8 & MONO12 pixel formats 2016-10-08 13:01:01 +02:00
ArkadiuszRaj
70c12e5407 Basic support for GigE cameras via Aravis SDK 2016-10-07 21:55:49 +02:00