[libcamera-devel] [PATCH 3/5] libcamera: ipu3: Break-out ipu3 header file
Jacopo Mondi
jacopo at jmondi.org
Wed Feb 20 14:17:55 CET 2019
As the class grows, break out the class definitions in a separate header
file, which can be used by other ipu3-related cpp files that will be
added in next commits.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
---
src/libcamera/pipeline/ipu3/ipu3.cpp | 56 +-----------------
src/libcamera/pipeline/ipu3/ipu3.h | 85 ++++++++++++++++++++++++++++
2 files changed, 86 insertions(+), 55 deletions(-)
create mode 100644 src/libcamera/pipeline/ipu3/ipu3.h
diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 9065073913a2..07029dd763c9 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -14,6 +14,7 @@
#include "device_enumerator.h"
#include "log.h"
+#include "ipu3.h"
#include "media_device.h"
#include "pipeline_handler.h"
#include "utils.h"
@@ -24,61 +25,6 @@ namespace libcamera {
LOG_DEFINE_CATEGORY(IPU3)
-class PipelineHandlerIPU3 : public PipelineHandler
-{
-public:
- PipelineHandlerIPU3(CameraManager *manager);
- ~PipelineHandlerIPU3();
-
- std::map<Stream *, StreamConfiguration>
- streamConfiguration(Camera *camera,
- std::vector<Stream *> &streams) override;
- int configureStreams(Camera *camera,
- std::map<Stream *, StreamConfiguration> &config) override;
-
- int allocateBuffers(Camera *camera, Stream *stream) override;
- int freeBuffers(Camera *camera, Stream *stream) override;
-
- int start(const Camera *camera) override;
- void stop(const Camera *camera) override;
-
- int queueRequest(const Camera *camera, Request *request) override;
-
- bool match(DeviceEnumerator *enumerator);
-
-private:
- class IPU3CameraData : public CameraData
- {
- public:
- IPU3CameraData()
- : cio2_(nullptr), csi2_(nullptr), sensor_(nullptr) {}
-
- ~IPU3CameraData()
- {
- delete cio2_;
- delete csi2_;
- delete sensor_;
- }
-
- V4L2Device *cio2_;
- V4L2Subdevice *csi2_;
- V4L2Subdevice *sensor_;
-
- Stream stream_;
- };
-
- IPU3CameraData *cameraData(const Camera *camera)
- {
- return static_cast<IPU3CameraData *>(
- PipelineHandler::cameraData(camera));
- }
-
- void registerCameras();
-
- std::shared_ptr<MediaDevice> cio2_;
- std::shared_ptr<MediaDevice> imgu_;
-};
-
PipelineHandlerIPU3::PipelineHandlerIPU3(CameraManager *manager)
: PipelineHandler(manager), cio2_(nullptr), imgu_(nullptr)
{
diff --git a/src/libcamera/pipeline/ipu3/ipu3.h b/src/libcamera/pipeline/ipu3/ipu3.h
new file mode 100644
index 000000000000..48c2a3e16980
--- /dev/null
+++ b/src/libcamera/pipeline/ipu3/ipu3.h
@@ -0,0 +1,85 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2019, Google Inc.
+ *
+ * ipu3.h - Pipeline handler for Intel IPU3
+ */
+
+#ifndef __LIBCAMERA_PIPELINE_IPU3_H__
+#define __LIBCAMERA_PIPELINE_IPU3_H__
+
+#include <memory>
+#include <vector>
+
+#include <libcamera/camera.h>
+#include <libcamera/request.h>
+#include <libcamera/stream.h>
+
+#include "device_enumerator.h"
+#include "media_device.h"
+#include "pipeline_handler.h"
+#include "v4l2_device.h"
+#include "v4l2_subdevice.h"
+
+namespace libcamera {
+
+class PipelineHandlerIPU3 : public PipelineHandler
+{
+public:
+ PipelineHandlerIPU3(CameraManager *manager);
+ ~PipelineHandlerIPU3();
+
+ std::map<Stream *, StreamConfiguration>
+ streamConfiguration(Camera *camera,
+ std::vector<Stream *> &streams) override;
+ int configureStreams(Camera *camera,
+ std::map<Stream *, StreamConfiguration> &config) override;
+
+ int allocateBuffers(Camera *camera, Stream *stream) override;
+ int freeBuffers(Camera *camera, Stream *stream) override;
+
+ int start(const Camera *camera) override;
+ void stop(const Camera *camera) override;
+
+ int queueRequest(const Camera *camera, Request *request) override;
+
+ bool match(DeviceEnumerator *enumerator);
+
+private:
+ class IPU3CameraData : public CameraData
+ {
+ public:
+ IPU3CameraData()
+ : cio2_(nullptr), csi2_(nullptr), sensor_(nullptr) {}
+
+ ~IPU3CameraData()
+ {
+ delete cio2_;
+ delete csi2_;
+ delete sensor_;
+ }
+
+ V4L2Device *cio2_;
+ V4L2Subdevice *csi2_;
+ V4L2Subdevice *sensor_;
+
+ Stream stream_;
+ };
+
+ IPU3CameraData *cameraData(const Camera *camera)
+ {
+ return static_cast<IPU3CameraData *>(
+ PipelineHandler::cameraData(camera));
+ }
+
+ void registerCameras();
+
+ std::shared_ptr<MediaDevice> cio2_;
+ std::shared_ptr<MediaDevice> imgu_;
+ IMGUDevice imgu0_;
+ IMGUDevice imgu1_;
+};
+
+} /* namespace libcamera */
+
+#endif /* __LIBCAMERA_PIPELINE_IPU3_H__ */
--
2.20.1
More information about the libcamera-devel
mailing list