[libcamera-devel] [PATCH v4 0/8] libcamera: stream: Add basic stream usages

Niklas Söderlund niklas.soderlund at ragnatech.se
Tue Apr 9 17:50:06 CEST 2019


Hi,

With Laurents comment fixed pushed to master.

On 2019-04-08 15:48:09 +0200, Niklas Söderlund wrote:
> Hi,
> 
> This series 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 stream usages 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 tested with a modified cam tool (patches posted in a
> different series) 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.
> 
> * Changes since v1
> - Renamed StreamRole to StreamUsage
> - Made geometry.h public header and use Size.
> - Added CameraConfiguration object to handle mapping of stream usages to
>   stream configurations.
> - Added more documentation, thanks all patient reviewers!
> 
> - Changes since v2
> - Extend CameraConfiguratio with .valid(), ability use operator[](Stream
>   *) in a const context and add operator[](unsinged int) to fetch stream
>   pointers based on insertion index.
> - Fixed up a lot of documentation.
> - Added geometry.h to meason.build.
> - Camera::configureStreams() and PipelineHandler::configureStreams()
>   take a const CameraConfiguration.
> - Dropped #include <libcamera/stream.h> from camera.h.
> 
> - Changes since v3
> - Add const Stream *CameraConfiguration::front() const.
> - Rename empty() and valid() to isEmpty() and isValid().
> - Improved the documentation.
> 
> Niklas Söderlund (8):
>   cam: Rework how streams configuration is prepared
>   test: camera: Remove streams argument from configurationValid()
>   test: camera: Remove test for bad Stream IDs
>   libcamera: Make geometry.h a public header
>   libcamera: stream: Add basic stream usages
>   libcamera: camera: Add support for stream usages
>   libcamera: camera: Add CameraConfiguration
>   libcamera: Switch to CameraConfiguration
> 
>  include/libcamera/camera.h                    |  36 ++-
>  .../include => include/libcamera}/geometry.h  |   0
>  include/libcamera/meson.build                 |   1 +
>  include/libcamera/stream.h                    |  40 +++
>  src/cam/main.cpp                              |  34 +--
>  src/libcamera/camera.cpp                      | 243 +++++++++++++++---
>  src/libcamera/geometry.cpp                    |   2 +-
>  src/libcamera/include/formats.h               |   2 +-
>  src/libcamera/include/pipeline_handler.h      |   8 +-
>  src/libcamera/include/v4l2_subdevice.h        |   3 +-
>  src/libcamera/pipeline/ipu3/ipu3.cpp          |  14 +-
>  src/libcamera/pipeline/uvcvideo.cpp           |  18 +-
>  src/libcamera/pipeline/vimc.cpp               |  18 +-
>  src/libcamera/pipeline_handler.cpp            |  16 +-
>  src/libcamera/stream.cpp                      |  92 +++++++
>  src/libcamera/v4l2_subdevice.cpp              |   3 +-
>  src/qcam/main_window.cpp                      |   5 +-
>  src/qcam/main_window.h                        |   2 +-
>  test/camera/camera_test.cpp                   |  27 --
>  test/camera/camera_test.h                     |   3 -
>  test/camera/capture.cpp                       |  11 +-
>  test/camera/configuration_default.cpp         |  40 +--
>  test/camera/configuration_set.cpp             |   9 +-
>  test/camera/statemachine.cpp                  |   6 +-
>  test/v4l2_subdevice/list_formats.cpp          |   3 +-
>  25 files changed, 462 insertions(+), 174 deletions(-)
>  rename {src/libcamera/include => include/libcamera}/geometry.h (100%)
> 
> -- 
> 2.21.0
> 

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list