99 Commits

Author SHA1 Message Date
noahwilliamsson
d36c2d590c device/libcamera: fix libcamera::Span API breakage (#11)
After upgrading from the July, 2022 releases of Raspberry Pi's libcamera packages to the Aug, 2022 releases, compilation fails with:

```
g++ -std=c++17 -MMD -Werror -Wall -g -I/tmp/camera-streamer -D_GNU_SOURCE -DUSE_FFMPEG -DUSE_LIBCAMERA -I/usr/include/libcamera -DUSE_RTSP -I/usr/include/liveMedia -I/usr/include/groupsock -I/usr/include/BasicUsageEnvironment -I/usr/include/UsageEnvironment -DUSE_LIBDATACHANNEL -Ithird_party/libdatachannel/include -Ithird_party/libdatachannel/deps/json/include -c -o device/libcamera/device.o device/libcamera/device.cc
In file included from device/libcamera/libcamera.hh:22,
                 from device/libcamera/device.cc:2:
/usr/include/libcamera/libcamera/controls.h: In instantiation of 'void libcamera::ControlList::set(const libcamera::Control<T>&, const std::initializer_list<_Up>&) [with T = libcamera::Span<const long int, 2>; V = long int]':
device/libcamera/device.cc:126:100:   required from here
/usr/include/libcamera/libcamera/controls.h:403:14: error: no matching function for call to 'libcamera::ControlValue::set<libcamera::Span<const long int, 2> >(libcamera::Span<const long int, 18446744073709551615>)'
  403 |   val->set<T>(Span<const typename std::remove_cv_t<V>>{ value.begin(), value.size() });
      |   ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/libcamera/libcamera/controls.h:178:7: note: candidate: 'template<class T, typename std::enable_if<((! libcamera::details::is_span<U>::value) && (! std::is_same<std::__cxx11::basic_string<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value)), std::nullptr_t>::type <anonymous> > void libcamera::ControlValue::set(const T&)'
  178 |  void set(const T &value)
      |       ^~~
/usr/include/libcamera/libcamera/controls.h:178:7: note:   template argument deduction/substitution failed:
/usr/include/libcamera/libcamera/controls.h:177:30: error: no type named 'type' in 'struct std::enable_if<false, std::nullptr_t>'
  177 |            std::nullptr_t> = nullptr>
      |                              ^~~~~~~
/usr/include/libcamera/libcamera/controls.h:190:7: note: candidate: 'template<class T, typename std::enable_if<(libcamera::details::is_span<U>::value || std::is_same<std::__cxx11::basic_string<char>, typename std::remove_cv< <template-parameter-1-1> >::type>::value), std::nullptr_t>::type <anonymous> > void libcamera::ControlValue::set(const T&)'
  190 |  void set(const T &value)
      |       ^~~
/usr/include/libcamera/libcamera/controls.h:190:7: note:   template argument deduction/substitution failed:
/usr/include/libcamera/libcamera/controls.h:403:14: note:   cannot convert 'libcamera::Span<const long int, 18446744073709551615>((& value)->std::initializer_list<long int>::begin(), (& value)->std::initializer_list<long int>::size())' (type 'libcamera::Span<const long int, 18446744073709551615>') to type 'const libcamera::Span<const long int, 2>&'
  403 |   val->set<T>(Span<const typename std::remove_cv_t<V>>{ value.begin(), value.size() });
      |   ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
```

After introducing this change (see raspberrypi/libcamera-apps PR 342), it works with both versions mentioned below:

```
$ apt list --installed
libcamera-apps/now 0~git20220707+35266e8-1 arm64 [installed,upgradable to: 0~git20220830+1bf0cca-1]
libcamera-dev/now 0~git20220705+f30ad033-1 arm64 [installed,upgradable to: 0~git20220826+3fad116f-1]
libcamera-tools/now 0~git20220705+f30ad033-1 arm64 [installed,upgradable to: 0~git20220826+3fad116f-1]
libcamera0/now 0~git20220705+f30ad033-1 arm64 [installed,upgradable to: 0~git20220826+3fad116f-1]
```
2022-09-06 13:52:47 +02:00
Kamil Trzciński
878ad95598 Fix bug introduced by 3c818772d1 (diff-6eb6287b4cf8659acef0809a500f07e26feac08a34f12b17a8897127a5d84ab8) 2022-09-04 19:19:13 +00:00
Kamil Trzcinski
6eaaa57d0b Do not use ISP to produce concurrently low resolution 2022-09-04 20:30:27 +02:00
Kamil Trzcinski
5031cd99f6 Register buffer_lock as a global output 2022-09-04 20:30:26 +02:00
Kamil Trzcinski
3c818772d1 Add scripts to create build env for other architectures 2022-09-04 20:27:42 +02:00
Kamil Trzcinski
0a37c63d00 Enumerate v4l2 devices 2022-09-03 10:21:46 +02:00
Kamil Trzcinski
dd3aa47805 Move http/ and rtsp/ into output/ 2022-09-02 22:06:19 +02:00
Kamil Trzcinski
17ec167dd9 Move part of http/ into util/http/ 2022-09-02 22:02:41 +02:00
Kamil Trzcinski
f5726fc9b2 Move opts/ into util/opts/ 2022-09-02 22:00:01 +02:00
Kamil Trzcinski
d430d68fc7 Improve RTSP support to configure port and expose low res stream 2022-08-27 20:38:15 +02:00
Kamil Trzcinski
d49169070a Add RTSP support via live555 2022-08-25 17:16:24 +02:00
Kamil Trzcinski
a9c65fae0d Allow to set -camera-vflip and -camera-hflip 2022-08-24 17:48:55 +02:00
Kamil Trzcinski
8b1d066dfc Fix compilation of device/libcamera/fake_camera.c on 32bits 2022-07-20 12:21:33 +02:00
Kamil Trzcinski
6530e5f5b6 Implement FAKE_CAMERA_SENSOR to allow fake image sensor used
Example, make `arducam_64mp` to behave as `imx519` as `imx519`
does have auto exposure control:

```
FAKE_CAMERA_SENSOR=arducam_64mp=imx519
```
2022-07-14 14:19:02 +02:00
Kamil Trzcinski
4e641dea1e Open default camera of a given type 2022-07-12 21:59:02 +02:00
Kamil Trzcinski
1857cd8d77 Improve options handling 2022-07-12 21:49:49 +02:00
Kamil Trzcinski
b052e5eb04 Remove the controls::draft::AfTrigger since it is an exposed control now via controls::AfTrigger 2022-07-12 11:10:25 +02:00
Kamil Trzcinski
883a951cea Expose options for v4l2 2022-07-08 12:41:08 +02:00
Kamil Trzcinski
6460d1b902 Emit options of all devices 2022-07-08 12:20:09 +02:00
Kamil Trzcinski
b4668aa320 Output all properties and options 2022-07-08 12:12:30 +02:00
Kamil Trzcinski
9051518082 Better print available cameras 2022-07-08 10:54:18 +02:00
Kamil Trzcinski
f7e5b0bcbe Better output controls and properties from libcamera 2022-07-07 14:19:45 +02:00
Kamil Trzcinski
99dd89796d Dump libcamera metadata in verbose 2022-07-07 12:09:05 +02:00
Kamil Trzcinski
1f5262afd8 Add -camera-auto-focus option 2022-07-07 12:08:56 +02:00
Kamil Trzcinski
4e8e74c716 Fix dynamic setting of auto-focus 2022-07-07 11:37:36 +02:00
Kamil Trzcinski
07a46ee7cc Make libcamera to support some formats 2022-07-07 11:37:19 +02:00
Kamil Trzcinski
4eaa42f1ea Add Af-Trigger 2022-07-05 12:05:17 +02:00
Kamil Trzcinski
26d94709e3 Fix printf warnings 2022-07-05 11:25:20 +02:00
Kamil Trzcinski
ff95a28977 Fix compilation errors
Resolves: https://github.com/ayufan-research/camera-streamer/issues/2
2022-07-04 17:44:35 +00:00
Kamil Trzcinski
9c7f5fed12 Enable -Wall 2022-04-14 10:13:44 +02:00
Kamil Trzcinski
ae18e06098 Fail on wrong resolution 2022-04-12 10:05:03 +02:00
Kamil Trzcinski
ddca582551 Automatically reconnect 2022-04-12 09:23:46 +02:00
Kamil Trzcinski
a1c974c9be Remove camera_legacy_isp.c 2022-04-12 09:18:40 +02:00
Kamil Trzcinski
04bf3a2442 Optimize decoder 2022-04-12 09:17:56 +02:00
Kamil Trzcinski
5ab25f435a Improve how options are handled 2022-04-12 08:59:04 +02:00
Kamil Trzcinski
b9fd63154c Improve regular messages 2022-04-12 08:51:19 +02:00
Kamil Trzcinski
887b88fdda Print links pipeline (for informational purposes) 2022-04-12 08:49:19 +02:00
Kamil Trzcinski
d688f7127f Support all rescaling aspects 2022-04-12 01:01:06 +02:00
Kamil Trzcinski
5160bdeb3d Use legacy isp to rescale outputs 2022-04-12 00:38:27 +02:00
Kamil Trzcinski
80b69bd3eb Rework links handling to create a complete pipeline 2022-04-12 00:33:24 +02:00
Kamil Trzcinski
a4d6f35004 Get rid of pipeline 2022-04-11 22:06:19 +02:00
Kamil Trzcinski
8dd470cb49 Make device to support composite devices (single output, many captures) 2022-04-11 22:02:22 +02:00
Kamil Trzcinski
d7c263bae9 Remove dependency on output_list and capture_list to create a pipeline 2022-04-11 21:50:48 +02:00
Kamil Trzcinski
4497c91ae8 Make buffer_list_t *device_open_buffer_list_capture 2022-04-11 21:09:30 +02:00
Kamil Trzcinski
cde6185963 Make buffer_list_t *device_open_buffer_list_output 2022-04-11 21:07:04 +02:00
Kamil Trzcinski
d4b18aac2a Make buffer_list_t *device_open_buffer_list to return buffer_list 2022-04-11 20:58:30 +02:00
Kamil Trzcinski
5a9e871484 Introduce buffer_format_t and use it for buffer_list_open 2022-04-11 20:48:09 +02:00
Kamil Trzcinski
a3e8ef1e24 Make buffer_list_open to accept const char *path 2022-04-11 19:14:06 +02:00
Kamil Trzcinski
753e9d4255 Clone dev->dev_fd to provide buf_list->dev_fd 2022-04-11 19:00:06 +02:00
Kamil Trzcinski
e69f707ef0 Fix frame rate 2022-04-11 17:07:35 +02:00