From patchwork Thu Oct 3 17:49:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Niklas_S=C3=B6derlund?= X-Patchwork-Id: 2083 Return-Path: Received: from bin-mail-out-06.binero.net (bin-mail-out-06.binero.net [195.74.38.229]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 83A4560BE9 for ; Thu, 3 Oct 2019 19:50:37 +0200 (CEST) X-Halon-ID: 2a7becc1-e606-11e9-837a-0050569116f7 Authorized-sender: niklas@soderlund.pp.se Received: from bismarck.berto.se (unknown [84.172.88.101]) by bin-vsp-out-03.atm.binero.net (Halon) with ESMTPA id 2a7becc1-e606-11e9-837a-0050569116f7; Thu, 03 Oct 2019 19:49:47 +0200 (CEST) From: =?utf-8?q?Niklas_S=C3=B6derlund?= To: libcamera-devel@lists.libcamera.org Date: Thu, 3 Oct 2019 19:49:30 +0200 Message-Id: <20191003174941.1296988-1-niklas.soderlund@ragnatech.se> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v4 00/11] libcamera: ipa: Add basic IPA support X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Oct 2019 17:50:37 -0000 Hi, This series adds basic support for Image Processing Algorithms (IPA). It extends the pipeline handler framework to optionally allow an IPA plugin to interact with buffers and to send actions to the pipeline. This series adds an Auto Exposure control and extends the rkisp1 pipeline with and IPA that implements a very basic control loop for exposure time and gain. The series compared to v2 have been merged with the meta data series that was developed on top of this and now supports reporting meta data back to the application about the control loop state. The series depends on the ControlList series which currently are out of tree. Future work which can be done on top of this is the use the ControlList in the IPAOperationsData to carry v4l2 controls once that support is ready. * Changes since v3 - Rebase to make use of ControlList's. - Total redesign on the IPA/pipeline interface. Fall out of this is mor or less all patches in the series have been reworked compared to v3. * Changes since v2 - The series is more or less rewritten from v2 so a meaningful change log is hard to produce. Niklas Söderlund (11): libcamera: pipeline: Move IPA from pipeline to camera data libcamera: controls: Add AeEnable control libcamera: controls: Add AeLocked control libcamera: request: Add meta data information libcamera: ipa: meson: Allow access to internal libcamera headers libcamera: ipa: Extend to support IPA interactions libcamera: timeline: Add a basic timeline implementation test: Add timeline test include: linux: Add rkisp1 kernel header and format definitions libcamera: ipa: rkisp1: Add basic control of auto exposure libcamera: pipeline: rkisp1: Attach to an IPA include/ipa/ipa_interface.h | 37 + include/ipa/rkisp1.h | 23 + include/libcamera/request.h | 2 + include/linux/rkisp1-config.h | 816 +++++++++++++++++++++ include/linux/videodev2.h | 4 + src/ipa/ipa_dummy.cpp | 7 +- src/ipa/ipa_rkisp1.cpp | 278 +++++++ src/ipa/meson.build | 15 +- src/libcamera/control_ids.yaml | 14 + src/libcamera/include/meson.build | 1 + src/libcamera/include/pipeline_handler.h | 2 + src/libcamera/include/timeline.h | 71 ++ src/libcamera/ipa_interface.cpp | 132 ++++ src/libcamera/meson.build | 1 + src/libcamera/pipeline/rkisp1/meson.build | 1 + src/libcamera/pipeline/rkisp1/rkisp1.cpp | 326 +++++++- src/libcamera/pipeline/rkisp1/rkisp1.h | 78 ++ src/libcamera/pipeline/rkisp1/timeline.cpp | 56 ++ src/libcamera/pipeline/vimc.cpp | 12 +- src/libcamera/pipeline_handler.cpp | 8 + src/libcamera/proxy/ipa_proxy_linux.cpp | 14 +- src/libcamera/request.cpp | 12 + src/libcamera/timeline.cpp | 267 +++++++ test/meson.build | 1 + test/timeline.cpp | 97 +++ 25 files changed, 2245 insertions(+), 30 deletions(-) create mode 100644 include/ipa/rkisp1.h create mode 100644 include/linux/rkisp1-config.h create mode 100644 src/ipa/ipa_rkisp1.cpp create mode 100644 src/libcamera/include/timeline.h create mode 100644 src/libcamera/pipeline/rkisp1/rkisp1.h create mode 100644 src/libcamera/pipeline/rkisp1/timeline.cpp create mode 100644 src/libcamera/timeline.cpp create mode 100644 test/timeline.cpp