Commit Graph

101 Commits

Author SHA1 Message Date
Peter Johnson
d6ef2c04a5 Start refactoring source property implementations. 2016-12-22 21:19:50 -08:00
Peter Johnson
ce69783871 UsbCamera: Scale some properties to make them constently percentages.
The "raw" version of these properties are still available, just prefixed
with "raw_".
2016-12-22 20:51:04 -08:00
Peter Johnson
10b13da3da Refactor USB vendor/product to product string to UsbUtil.h.
Also implement reading of /var/lib/usbutils/usb.ids for systems that
have it (e.g. desktop Linux).
2016-12-21 10:56:40 -08:00
Peter Johnson
88afefe464 Avoid crash in SourceImpl constructor.
The Frame constructor calls back into SourceImpl (the passed this reference),
and when in-place constructed in the SourceImpl constructor, SourceImpl
is only partially constructed.
2016-12-21 10:56:40 -08:00
Peter Johnson
80abf6bf24 Support per-stream resolution settings.
The code now automatically resizes as required.

This change also disconnects camera resolution settings from MJPEG
stream connections; setting the camera resolution can now only be done
via code.
2016-12-20 20:48:31 -08:00
Peter Johnson
8501b7c9e2 CvSourceImpl::CreateProperty(): Use lock_guard instead of unique_lock. 2016-12-18 09:13:52 -08:00
Peter Johnson
e1dabbc2d5 cscore_cpp.cpp: Fix include order. 2016-12-18 09:13:01 -08:00
Peter Johnson
c08a489e27 Improve error message for VIDIOC_STREAMON "no space left on device". 2016-12-18 09:13:01 -08:00
Peter Johnson
28a2ba4bf8 Add external logger interface. 2016-12-18 09:13:01 -08:00
Peter Johnson
2b8b8e7403 Improve logging consistency by using source/sink name throughout. 2016-12-18 09:12:59 -08:00
Peter Johnson
7c2f994a66 Refactor source IsConnected() and connected notification. 2016-12-18 09:05:03 -08:00
Peter Johnson
b5fd15e052 CvSink::GrabFrame(): Add delays like MjpegServer to avoid consuming CPU. 2016-12-04 21:45:37 -08:00
Peter Johnson
ecfc684174 MjpegServer: Increase bad frame wait from 10 to 20 ms. 2016-12-04 21:45:37 -08:00
Peter Johnson
4600ea135c Frame: Make Data struct public. 2016-12-04 21:45:37 -08:00
Peter Johnson
3b82ba8945 Refactor JPEG functions to JpegUtil. 2016-12-04 21:45:37 -08:00
Peter Johnson
c32fc57ce1 Refactor HTTP utilities. 2016-12-04 21:45:37 -08:00
Peter Johnson
9a8f66e3e5 SourceImpl: Add no-copy PutFrame. 2016-12-04 21:45:37 -08:00
Peter Johnson
ef39713219 Revert "Don't output \r\n before boundary. This throws off some clients."
This reverts commit ae8c8ec230.
2016-12-04 21:45:37 -08:00
Peter Johnson
1f93a4ab4f Change acronym class names to use MixedCase (UsbCamera, MjpegServer). (#22) 2016-12-04 00:08:47 -08:00
Thad House
3625f11e08 Adds C methods that take a cv::Mat* (#21)
Some implementations of OpenCV use cv::Mat as their native pointer
rather then CvMat, so we need to support both in the C interface
2016-11-30 22:00:44 -08:00
Peter Johnson
ae8c8ec230 Don't output \r\n before boundary. This throws off some clients. 2016-11-18 19:52:22 -08:00
Peter Johnson
ec8c0eb3c2 Fix FPS setting and crash in reapplying settings. 2016-11-18 19:23:35 -08:00
Peter Johnson
3d898dd8f7 MJPEGServer: Fix URI %xx-decoding. 2016-11-18 19:03:35 -08:00
Peter Johnson
df18e178ee MJPEGServer: Provide a bare-bones HTML root page. 2016-11-18 18:58:03 -08:00
Peter Johnson
71a6e08988 MJPEGServer: Make a couple of tweaks for Axis camera compatibility. 2016-11-18 18:33:49 -08:00
Peter Johnson
a05636d9a6 Add data accessors for USBCamera and MJPEGServer.
USBCamera: getPath()

MJPEGServer: getListenAddress() and getPort()
2016-11-18 17:21:03 -08:00
Peter Johnson
5eecbfd9bf Implement immediate notify on network interfaces event. 2016-11-18 16:27:26 -08:00
Peter Johnson
65514b3028 USBCamera: Update description on reconnect. 2016-11-18 16:16:04 -08:00
Peter Johnson
bad4ca4666 Add event for network interfaces change. 2016-11-18 12:41:08 -08:00
Peter Johnson
5fecc57e8a Add methods to get the hostname and network interfaces. 2016-11-18 12:41:08 -08:00
Peter Johnson
9945459a41 Notify sink enable and disable events. 2016-11-18 12:41:08 -08:00
Peter Johnson
22c11fad36 Notify source property events. 2016-11-18 12:41:08 -08:00
Peter Johnson
c6b527d452 Notify source connect, disconnect, and video mode changes. 2016-11-18 12:41:08 -08:00
Peter Johnson
8e9911d330 Notify on sink source change. 2016-11-18 12:41:08 -08:00
Peter Johnson
b245725941 Notify on source and sink create and destroy. 2016-11-18 12:41:08 -08:00
Peter Johnson
154ae5dcbf Notifier: Take Impl rather than handle in notification functions.
Also take CS_EventKind rather than RawEvent::Kind.

Still provide the handle methods for the basic events (this is particularly
useful for create and destroy events).

This makes these functions easier to use from within the implementation.
2016-11-18 12:41:08 -08:00
Peter Johnson
bae2037086 Handle: Add methods to get Data struct from Impl pointer.
Also make a number of methods in UnlimitedHandleResource inline.
2016-11-18 12:41:08 -08:00
Peter Johnson
791cabbc26 Rename Type to Kind. 2016-11-18 12:41:08 -08:00
Peter Johnson
3381340eb5 Add method to get source/sink type.
Also provide convenience method to enumerate all sinks connected to a source.
2016-11-18 12:41:08 -08:00
Peter Johnson
0bcafedebf MJPEGServerImpl: Refactor NeedsDHT. 2016-11-18 12:40:31 -08:00
Peter Johnson
7e0e8286eb SourceImpl: Refactor frame allocation into AllocFrame. 2016-11-18 12:40:31 -08:00
Peter Johnson
5ae1162378 Move MJPEG DHT insertion from SourceImpl to MJPEGServerImpl.
OpenCV imdecode supports images with no DHT, so it's not necessary to
add it on the source side.
2016-11-18 12:40:31 -08:00
Peter Johnson
c80c4ae55c MJPEGServer: Use worker thread model.
Also make the worker thread a class for future per-client configuration use.

Depends on wpiutil #153.
2016-11-18 12:40:31 -08:00
Peter Johnson
254b88bdbe Start adding support for non-MJPEG frame types.
Not yet supported by MJPEGServer.
2016-11-18 12:40:31 -08:00
Peter Johnson
f83ff41e47 Rename from cameraserver to cscore.
This is primarily to avoid header naming conflicts with wpilib.
2016-11-05 22:11:55 -07:00
Peter Johnson
29d8d1d74c Implement listener interfaces. 2016-11-05 13:19:02 -07:00
Peter Johnson
8d2efb2838 Improve listener interface.
Now a structure is passed back, enabling combining the existing source
and sink listeners and adding property listeners as well.
2016-11-05 13:19:02 -07:00
Peter Johnson
46085824ae Add DHT data to MJPEG source images if not present. 2016-11-02 21:32:13 -07:00
Peter Johnson
e10b399f51 CvSource: Implement NotifyError. 2016-10-28 00:47:18 -07:00
Peter Johnson
39a8195386 CvSourceImpl: Add stub for CreateProperty(callback). 2016-10-28 00:46:43 -07:00