[libcamera-devel,RFC,0/5] libcamera: camera: Add support for stream usage hint
mbox series

Message ID 20190402005332.25018-1-niklas.soderlund@ragnatech.se
Headers show
Series
  • libcamera: camera: Add support for stream usage hint
Related show

Message

Niklas Söderlund April 2, 2019, 12:53 a.m. UTC
Hi,

This RFC changes how the default configuration is retrieved from a 
camera. It replaces the current method where applications have to 
enumerate a cameras streams and pick a set of them to ask for a default 
configuration and then try to tune them to its use-case.

Instead the application asks libcamera for a set of streams to fit its 
use-case and receives in returns a set of streams with a default 
configuration (which it then can try and fine tune).

The goal of this series is to define the API towards the application and 
not to implement smart choices in the pipeline handlers to actually 
select streams. The main reason for this limitation in scope are that 
all upstream pipeline handlers only support one stream so the new API is 
not really useful for pipeline handlers yet.

The code is however tested with a modified cam tool for which patches 
will be posted momentarily together with out of tree IPU3 patches to 
extend it to expose more then one stream per camera. So the API is 
proven to work with multiple streams and can support capturing multiple 
streams in the same request.

Niklas Söderlund (5):
  cam: Rework how streams configuration is prepared
  test: camera: Remove streams argument from configurationValid()
  test: camera: Remove test for bad Stream IDs
  libcamera: stream: Add basic stream usage hints definitions
  libcamera: camera: Add support for stream usage hints

 include/libcamera/camera.h               |  3 +-
 include/libcamera/stream.h               | 39 +++++++++++
 src/cam/main.cpp                         | 35 +++++-----
 src/libcamera/camera.cpp                 | 30 +++------
 src/libcamera/include/pipeline_handler.h |  2 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp     |  4 +-
 src/libcamera/pipeline/uvcvideo.cpp      |  6 +-
 src/libcamera/pipeline/vimc.cpp          |  6 +-
 src/libcamera/pipeline_handler.cpp       |  4 +-
 src/libcamera/stream.cpp                 | 84 ++++++++++++++++++++++++
 src/qcam/main_window.cpp                 |  5 +-
 test/camera/camera_test.cpp              | 26 +++-----
 test/camera/camera_test.h                |  3 +-
 test/camera/capture.cpp                  |  7 +-
 test/camera/configuration_default.cpp    | 32 ++-------
 test/camera/configuration_set.cpp        |  5 +-
 test/camera/statemachine.cpp             |  4 +-
 17 files changed, 188 insertions(+), 107 deletions(-)