add gstreamer backend, update docs, add new threaded camera bare bones, add network camera, update camera and camera traits, add new macros for future update conveince, add extensive example app

This commit is contained in:
l1npengtul
2021-06-28 18:07:02 +09:00
parent 38e99b6dcd
commit ec51884e64
18 changed files with 1263 additions and 210 deletions
+24
View File
@@ -34,14 +34,38 @@ loop {
```
They can be found in the `examples` folder.
## API Support
The table below lists current Nokhwa API support.
- The `Backend` column signifies the backend.
- The `Input` column signifies reading frames from the camera
- The `Query` column signifies system device list support
- The `Query-Device` column signifies reading device capabilities
- The `OS` column signifies what OS this is availible on.
| Backend | Input | Query | Query-Device | OS |
|--------------------------------|--------------------|--------------------|--------------------|---------------------|
| Video4Linux(`input-v4l`) | :white_check_mark: | :white_check_mark: | :white_check_mark: | Linux |
| libuvc(`input-uvc`) | :white_check_mark: | :white_check_mark: | :white_check_mark: | Linux, Windows, Mac |
| OpenCV(`input-opencv`) | :white_check_mark: | :x: | :x: | Linux, Windows, Mac |
| IPCamera(`input-ipcam`/OpenCV) | :white_check_mark: | :x: | :x: | Linux, Windows, Mac |
| GStreamer(`input-gst`) | :white_check_mark: | :white_check_mark: | :white_check_mark: | Linux, Windows, Mac |
| FFMpeg | * | * | * | Linux, Windows, Mac |
| AVFoundation | * | * | * | Mac |
| MSMF | * | * | * | Windows |
| JS/WASM | * | * | * | Web |
:white_check_mark: : Working, :warning: : Experimental, :x: : Not Supported, *: Planned
## Feature
The default feature includes nothing. Anything starting with `input-*` is a feature that enables the specific backend.
As a general rule of thumb, you would want to keep at least `input-uvc` or other backend that has querying enabled so you can get device information from `nokhwa`.
`input-*` features:
- `input-v4l`: Enables the `Video4Linux` backend (linux)
- `input-uvc`: Enables the `libuvc` backend (cross-platform, libuvc statically-linked)
- `input-opencv`: Enables the `opencv` backend (cross-platform)
- `input-ipcam`: Enables the use of IP Cameras, please see the `NetworkCamera` struct. Note that this relies on `opencv`, so it will automatically enable the `input-opencv` feature.
- `input-gst`: Enables the `gstreamer` backend (cross-platform).
Conversely, anything that starts with `output-*` controls a feature that controls the output of something (usually a frame from the camera)