[libcamera-devel,00/17] libcamera: Add support for format information and validation
mbox series

Message ID 20190527001543.13593-1-niklas.soderlund@ragnatech.se
Headers show
Series
  • libcamera: Add support for format information and validation
Related show

Message

Niklas Söderlund May 27, 2019, 12:15 a.m. UTC
Hi,

This series aim to add support for format information exposed to 
applications and to ease format validation by allowing formats to be 
enumerate on v4l2 devices. The series also enhance the format 
enumeration of v4l2 subdevices. Further more it extends the cam utility 
to demonstrate the usage of how formats can examined and validated.

One shortcoming of this series is that it only extends the uvcvideo 
pipeline with code to gather format information and perform validation.  
This however do not impact other existing pipeline handlers as they keep 
functioning as before this series. That is no format information can be 
retrieved and format validation is still supported all yet as simple as 
before this series.

Niklas Söderlund (17):
  meson: Allow partially initializing objects
  libcamera: geometry: SizeRange: Add constructor for a single size
  libcamera: geometry: SizeRange: Extend with stepping information
  libcamera: geometry: SizeRange: Add toString()
  libcamera: formats: Add V4L2DeviceFormats and V4L2DeviceFormats
  libcamera: v4l2_subdevice: Breakout mbus code enumeration
  libcamera: v4l2_subdevice: Rework enumPadSizes()
  libcamera: v4l2_subdevice: Replace FormatEnum with
    V4L2SubdeviceFormats
  libcamera: v4l2_device: Add enumeration of pixelformats and frame
    sizes
  libcamera: stream: Define log object
  libcamera: stream: Add StreamFormats
  libcamera: stream: StreamConfiguration: Add StreamFormats information
  test: stream: Add test for StreamFormat
  cam: Move camera configuration preparation to CamApp
  cam: Validate camera configuration
  cam: Add --info option to print information about stream(s)
  libcamera: pipeline: uvcvideo: Add format information and validation

 include/libcamera/geometry.h           |  22 ++-
 include/libcamera/stream.h             |  24 ++-
 meson.build                            |   1 +
 src/cam/capture.cpp                    |  84 +--------
 src/cam/capture.h                      |   7 +-
 src/cam/info.cpp                       |  44 +++++
 src/cam/info.h                         |  18 ++
 src/cam/main.cpp                       |  95 +++++++++-
 src/cam/main.h                         |   1 +
 src/cam/meson.build                    |   1 +
 src/libcamera/camera_sensor.cpp        |  12 +-
 src/libcamera/formats.cpp              | 159 +++++++++++++++-
 src/libcamera/geometry.cpp             |  66 +++++++
 src/libcamera/include/formats.h        |  35 +++-
 src/libcamera/include/v4l2_device.h    |   5 +
 src/libcamera/include/v4l2_subdevice.h |   7 +-
 src/libcamera/pipeline/uvcvideo.cpp    |  46 ++++-
 src/libcamera/stream.cpp               | 239 +++++++++++++++++++++++++
 src/libcamera/v4l2_device.cpp          | 104 +++++++++++
 src/libcamera/v4l2_subdevice.cpp       |  98 +++++-----
 test/meson.build                       |   1 +
 test/stream/meson.build                |  11 ++
 test/stream/stream_formats.cpp         | 102 +++++++++++
 test/v4l2_subdevice/list_formats.cpp   |  10 +-
 24 files changed, 1026 insertions(+), 166 deletions(-)
 create mode 100644 src/cam/info.cpp
 create mode 100644 src/cam/info.h
 create mode 100644 test/stream/meson.build
 create mode 100644 test/stream/stream_formats.cpp