[libcamera-devel] [PATCH v5 0/9] Introduce camera properties

Jacopo Mondi jacopo at jmondi.org
Thu Feb 6 02:25:52 CET 2020


Hello,
   this series contains the first 9 patches sent as part of the
"Properties and compound controls" series.
I'm mixing up a bit version numbers, I know..

All patches here are tagged, but I have not merged them yet for the following
reasons:

1) what to do with [1/9] ?
   I'm a bit in two minds here, as I see two possible things to happen
   1) we merge the series knowing we'll have to change the header with the
      version that will hit mainline. This should be safe as long as the
      only drivers using this definitions are our downstream devices for
      testing. Although having code in master that we don't want to be used
      even if for a short time makes me feel uncomfortable
   2) we keep the series warm until we don't get kernel support and some users
      in mainline. We would delay this features too long imho.

   Unless you have other ideas, 1 seems to be unavoidable in order to merge
   properties support and start building the definitions of others on top.

2) I have updated the "Rotation" definition with Laurent's suggestions. It
   is now reviewed.

3) I have changed the way enum values are defined in yaml.

   We previously had:

   enum:
     - entry:
       value: x
       description: ".."

   Which is parsed as

   {
        "entry": ,
  	"value" : x,
	"description": "...",
   }

   This required to extract the "entry" value by accessing the first of the
   dictionaries keys. This triggered an error I started noticing when building
   for CrOS, but could have happened earlier, as dictionaries keys are not
   sorted.

   What we actually want is instead

   {
       "entry": {
  	   "value" : x,
	    "description": "...",
       }
   }

   Which is represented in yaml as:

   enum:
     - entry:
         value: x
         description: ".."

   Which is probably also more semantically correct.

Anyway, I have not dropped your tags, but I didn't feel like merging without
pointing out the above.

Thanks
    j

Jacopo Mondi (9):
  [TEMP] include: linux: Update v4l2-controls.h
  libcamera: controls: Parse 'enum' in gen-controls.py
  libcamera: properties: Add location property
  libcamera: properties: Add rotation property
  libcamera: controls: Add default to ControlRange
  libcamera: camera_sensor: Parse camera properties
  libcamera: pipeline_handler: Add Camera properties
  libcamera: camera: Add Camera properties
  android: camera_device: Use Camera properties for static Metadata

 include/libcamera/camera.h               |   1 +
 include/libcamera/controls.h             |   5 +-
 include/libcamera/meson.build            |  26 +-
 include/libcamera/property_ids.h.in      |  33 +++
 include/linux/v4l2-controls.h            |   7 +
 src/android/camera_device.cpp            |  29 +-
 src/libcamera/camera.cpp                 |  16 +-
 src/libcamera/camera_sensor.cpp          |  49 +++-
 src/libcamera/controls.cpp               |  12 +-
 src/libcamera/gen-controls.py            |  50 +++-
 src/libcamera/include/camera_sensor.h    |   7 +-
 src/libcamera/include/pipeline_handler.h |   2 +
 src/libcamera/meson.build                |  21 +-
 src/libcamera/pipeline/ipu3/ipu3.cpp     |   3 +
 src/libcamera/pipeline/rkisp1/rkisp1.cpp |   3 +
 src/libcamera/pipeline/vimc.cpp          |   4 +
 src/libcamera/pipeline_handler.cpp       |  19 ++
 src/libcamera/property_ids.cpp.in        |  43 +++
 src/libcamera/property_ids.yaml          | 357 +++++++++++++++++++++++
 src/libcamera/v4l2_controls.cpp          |   9 +-
 20 files changed, 662 insertions(+), 34 deletions(-)
 create mode 100644 include/libcamera/property_ids.h.in
 create mode 100644 src/libcamera/property_ids.cpp.in
 create mode 100644 src/libcamera/property_ids.yaml

--
2.24.1



More information about the libcamera-devel mailing list