@@ -202,7 +202,7 @@ stub implementations for the overridden class members.
PipelineHandlerVivid(CameraManager *manager);
std::unique_ptr<CameraConfiguration>
- generateConfiguration(Camera *camera, Span<const StreamRole> roles) override;
+ generateConfiguration(Camera *camera, std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -223,7 +223,7 @@ stub implementations for the overridden class members.
std::unique_ptr<CameraConfiguration>
PipelineHandlerVivid::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
return nullptr;
}
@@ -8,6 +8,7 @@
#pragma once
#include <map>
+#include <span>
#include <stdint.h>
#include <string>
#include <sys/types.h>
@@ -16,7 +17,6 @@
#include <libcamera/base/class.h>
#include <libcamera/base/flags.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/unique_fd.h>
namespace libcamera {
@@ -59,11 +59,11 @@ public:
off_t pos() const;
off_t seek(off_t pos);
- ssize_t read(const Span<uint8_t> &data);
- ssize_t write(const Span<const uint8_t> &data);
+ ssize_t read(std::span<uint8_t> data);
+ ssize_t write(std::span<const uint8_t> data);
- Span<uint8_t> map(off_t offset = 0, ssize_t size = -1,
- MapFlags flags = MapFlag::NoOption);
+ std::span<uint8_t> map(off_t offset = 0, ssize_t size = -1,
+ MapFlags flags = MapFlag::NoOption);
bool unmap(uint8_t *addr);
static bool exists(const std::string &name);
@@ -30,11 +30,11 @@ struct is_array<std::array<U, N>> : public std::true_type {
};
template<typename U>
-struct is_span : public std::false_type {
+struct is_libcamera_span : public std::false_type {
};
template<typename U, std::size_t Extent>
-struct is_span<Span<U, Extent>> : public std::true_type {
+struct is_libcamera_span<Span<U, Extent>> : public std::true_type {
};
} /* namespace details */
@@ -153,7 +153,7 @@ public:
template<class Container>
explicit constexpr Span(Container &cont,
- std::enable_if_t<!details::is_span<Container>::value &&
+ std::enable_if_t<!details::is_libcamera_span<Container>::value &&
!details::is_array<Container>::value &&
!std::is_array<Container>::value &&
std::is_convertible<std::remove_pointer_t<decltype(utils::data(cont))> (*)[],
@@ -165,7 +165,7 @@ public:
template<class Container>
explicit constexpr Span(const Container &cont,
- std::enable_if_t<!details::is_span<Container>::value &&
+ std::enable_if_t<!details::is_libcamera_span<Container>::value &&
!details::is_array<Container>::value &&
!std::is_array<Container>::value &&
std::is_convertible<std::remove_pointer_t<decltype(utils::data(cont))> (*)[],
@@ -315,7 +315,7 @@ public:
template<class Container>
constexpr Span(Container &cont,
- std::enable_if_t<!details::is_span<Container>::value &&
+ std::enable_if_t<!details::is_libcamera_span<Container>::value &&
!details::is_array<Container>::value &&
!std::is_array<Container>::value &&
std::is_convertible<std::remove_pointer_t<decltype(utils::data(cont))> (*)[],
@@ -327,7 +327,7 @@ public:
template<class Container>
constexpr Span(const Container &cont,
- std::enable_if_t<!details::is_span<Container>::value &&
+ std::enable_if_t<!details::is_libcamera_span<Container>::value &&
!details::is_array<Container>::value &&
!std::is_array<Container>::value &&
std::is_convertible<std::remove_pointer_t<decltype(utils::data(cont))> (*)[],
@@ -8,6 +8,7 @@
#pragma once
#include <memory>
+#include <span>
#include <string>
#include <sys/types.h>
#include <thread>
@@ -17,7 +18,6 @@
#include <libcamera/base/class.h>
#include <libcamera/base/message.h>
#include <libcamera/base/signal.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
namespace libcamera {
@@ -38,7 +38,7 @@ public:
void exit(int code = 0);
bool wait(utils::duration duration = utils::duration::max());
- int setThreadAffinity(const Span<const unsigned int> &cpus);
+ int setThreadAffinity(std::span<const unsigned int> cpus);
bool isRunning();
@@ -11,6 +11,7 @@
#include <memory>
#include <optional>
#include <set>
+#include <span>
#include <stdint.h>
#include <string>
@@ -18,7 +19,6 @@
#include <libcamera/base/flags.h>
#include <libcamera/base/object.h>
#include <libcamera/base/signal.h>
-#include <libcamera/base/span.h>
#include <libcamera/controls.h>
#include <libcamera/geometry.h>
@@ -136,12 +136,12 @@ public:
const std::set<Stream *> &streams() const;
std::unique_ptr<CameraConfiguration>
- generateConfiguration(Span<const StreamRole> roles = {});
+ generateConfiguration(std::span<const StreamRole> roles = {});
std::unique_ptr<CameraConfiguration>
generateConfiguration(std::initializer_list<StreamRole> roles)
{
- return generateConfiguration(Span(roles.begin(), roles.end()));
+ return generateConfiguration(std::span(roles.begin(), roles.end()));
}
int configure(CameraConfiguration *config);
@@ -10,6 +10,7 @@
#include <assert.h>
#include <map>
#include <optional>
+#include <span>
#include <stdint.h>
#include <string>
#include <string_view>
@@ -18,7 +19,6 @@
#include <libcamera/base/class.h>
#include <libcamera/base/flags.h>
-#include <libcamera/base/span.h>
#include <libcamera/geometry.h>
@@ -43,6 +43,14 @@ enum ControlType {
namespace details {
+template<typename>
+struct is_span : public std::false_type {
+};
+
+template<typename T, std::size_t N>
+struct is_span<std::span<T, N>> : public std::true_type {
+};
+
template<typename T, typename = void>
struct control_type {
};
@@ -120,7 +128,7 @@ struct control_type<Point> {
};
template<typename T, std::size_t N>
-struct control_type<Span<T, N>, std::enable_if_t<control_type<std::remove_cv_t<T>>::size == 0>> : public control_type<std::remove_cv_t<T>> {
+struct control_type<std::span<T, N>, std::enable_if_t<control_type<std::remove_cv_t<T>>::size == 0>> : public control_type<std::remove_cv_t<T>> {
static constexpr std::size_t size = N;
};
@@ -169,8 +177,8 @@ public:
bool isNone() const { return type_ == ControlTypeNone; }
bool isArray() const { return isArray_; }
std::size_t numElements() const { return numElements_; }
- Span<const uint8_t> data() const;
- Span<uint8_t> data();
+ std::span<const uint8_t> data() const;
+ std::span<uint8_t> data();
std::string toString() const;
@@ -332,7 +340,7 @@ public:
explicit ControlInfo(const ControlValue &min = {},
const ControlValue &max = {},
const ControlValue &def = {});
- explicit ControlInfo(Span<const ControlValue> values,
+ explicit ControlInfo(std::span<const ControlValue> values,
const ControlValue &def = {});
const ControlValue &min() const { return min_; }
@@ -458,13 +466,13 @@ public:
}
template<typename T, typename V, size_t Size>
- void set(const Control<Span<T, Size>> &ctrl, const std::initializer_list<V> &value)
+ void set(const Control<std::span<T, Size>> &ctrl, const std::initializer_list<V> &value)
{
ControlValue *val = find(ctrl.id());
if (!val)
return;
- val->set(Span<const typename std::remove_cv_t<V>, Size>{ value.begin(), value.size() });
+ val->set(std::span<const typename std::remove_cv_t<V>, Size>{ value.begin(), value.size() });
}
const ControlValue &get(unsigned int id) const;
@@ -9,12 +9,12 @@
#include <limits>
#include <memory>
+#include <span>
#include <stdint.h>
#include <vector>
#include <libcamera/base/class.h>
#include <libcamera/base/shared_fd.h>
-#include <libcamera/base/span.h>
namespace libcamera {
@@ -37,8 +37,8 @@ struct FrameMetadata {
unsigned int sequence;
uint64_t timestamp;
- Span<Plane> planes() { return planes_; }
- Span<const Plane> planes() const { return planes_; }
+ std::span<Plane> planes() { return planes_; }
+ std::span<const Plane> planes() const { return planes_; }
private:
friend class FrameBuffer;
@@ -58,11 +58,11 @@ public:
unsigned int length;
};
- FrameBuffer(Span<const Plane> planes, unsigned int cookie = 0);
+ FrameBuffer(std::span<const Plane> planes, unsigned int cookie = 0);
FrameBuffer(std::unique_ptr<Private> d);
virtual ~FrameBuffer() {}
- Span<const Plane> planes() const;
+ std::span<const Plane> planes() const;
Request *request() const;
const FrameMetadata &metadata() const;
@@ -7,12 +7,12 @@
#pragma once
+#include <span>
#include <stddef.h>
#include <stdint.h>
#include <type_traits>
#include <libcamera/base/class.h>
-#include <libcamera/base/span.h>
namespace libcamera {
@@ -39,7 +39,7 @@ public:
}
template<typename T>
- int read(const Span<T> &data)
+ int read(std::span<T> data)
{
return read(reinterpret_cast<uint8_t *>(data.data()),
data.size_bytes());
@@ -59,7 +59,7 @@ public:
}
template<typename T>
- int write(const Span<T> &data)
+ int write(std::span<T> data)
{
return write(reinterpret_cast<const uint8_t *>(data.data()),
data.size_bytes());
@@ -8,13 +8,13 @@
#pragma once
#include <memory>
+#include <span>
#include <stdint.h>
#include <string>
#include <variant>
#include <vector>
#include <libcamera/base/class.h>
-#include <libcamera/base/span.h>
#include <libcamera/control_ids.h>
#include <libcamera/controls.h>
@@ -54,7 +54,7 @@ public:
virtual Size resolution() const = 0;
virtual V4L2SubdeviceFormat
- getFormat(Span<const unsigned int> mbusCodes,
+ getFormat(std::span<const unsigned int> mbusCodes,
const Size &size, const Size maxSize = Size()) const = 0;
virtual int setFormat(V4L2SubdeviceFormat *format,
Transform transform = Transform::Identity) = 0;
@@ -76,7 +76,7 @@ public:
virtual Orientation mountingOrientation() const = 0;
virtual const ControlInfoMap &controls() const = 0;
- virtual ControlList getControls(Span<const uint32_t> ids) = 0;
+ virtual ControlList getControls(std::span<const uint32_t> ids) = 0;
virtual int setControls(ControlList *ctrls) = 0;
virtual const std::vector<controls::draft::TestPatternModeEnum> &
@@ -10,11 +10,10 @@
#include <assert.h>
#include <cmath>
#include <optional>
+#include <span>
#include <stdint.h>
#include <vector>
-#include <libcamera/base/span.h>
-
#include <libcamera/geometry.h>
#include <libcamera/transform.h>
@@ -39,7 +38,7 @@ public:
{
}
- int setCoefficients(Span<const double> coeffs);
+ int setCoefficients(std::span<const double> coeffs);
Matrix<double, 3, 3> cm;
Matrix<double, 3, 3> cmNew;
@@ -9,11 +9,11 @@
#pragma once
+#include <span>
#include <sys/types.h>
#include <unistd.h>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/thread.h>
#include <libcamera/base/utils.h>
@@ -118,10 +118,10 @@ public:
void pushEnv(std::vector<std::string> &shaderEnv, const char *str);
- int compileVertexShader(GLuint &shaderId, Span<const unsigned char> shaderData,
- Span<const std::string> shaderEnv);
- int compileFragmentShader(GLuint &shaderId, Span<const unsigned char> shaderData,
- Span<const std::string> shaderEnv);
+ int compileVertexShader(GLuint &shaderId, std::span<const unsigned char> shaderData,
+ std::span<const std::string> shaderEnv);
+ int compileFragmentShader(GLuint &shaderId, std::span<const unsigned char> shaderData,
+ std::span<const std::string> shaderEnv);
int linkProgram(GLuint &programId, GLuint fragmentshaderId, GLuint vertexshaderId);
void dumpShaderSource(GLuint shaderId);
void syncOutput();
@@ -140,8 +140,8 @@ private:
EGLDisplay display_ = EGL_NO_DISPLAY;
EGLContext context_ = EGL_NO_CONTEXT;
- int compileShader(int shaderType, GLuint &shaderId, Span<const unsigned char> shaderData,
- Span<const std::string> shaderEnv);
+ int compileShader(int shaderType, GLuint &shaderId, std::span<const unsigned char> shaderData,
+ std::span<const std::string> shaderEnv);
int createDMABufTexture2D(eGLImage &eglImage, int fd, bool output);
@@ -8,11 +8,11 @@
#pragma once
#include <memory>
+#include <span>
#include <stdint.h>
#include <utility>
#include <libcamera/base/class.h>
-#include <libcamera/base/span.h>
#include <libcamera/fence.h>
#include <libcamera/framebuffer.h>
@@ -24,7 +24,7 @@ class FrameBuffer::Private : public Extensible::Private
LIBCAMERA_DECLARE_PUBLIC(FrameBuffer)
public:
- Private(Span<const Plane> planes, uint64_t cookie = 0);
+ Private(std::span<const Plane> planes, uint64_t cookie = 0);
virtual ~Private();
void setRequest(Request *request) { request_ = request; }
@@ -7,12 +7,12 @@
#pragma once
+#include <span>
#include <stdint.h>
#include <vector>
#include <libcamera/base/class.h>
#include <libcamera/base/flags.h>
-#include <libcamera/base/span.h>
#include <libcamera/framebuffer.h>
@@ -21,7 +21,7 @@ namespace libcamera {
class MappedBuffer
{
public:
- using Plane = Span<uint8_t>;
+ using Plane = std::span<uint8_t>;
~MappedBuffer();
@@ -7,12 +7,12 @@
#pragma once
#include <algorithm>
+#include <span>
#include <sstream>
#include <type_traits>
#include <vector>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include "libcamera/internal/value_node.h"
@@ -22,8 +22,8 @@ LOG_DECLARE_CATEGORY(Matrix)
#ifndef __DOXYGEN__
template<typename T>
-bool matrixInvert(Span<const T> dataIn, Span<T> dataOut, unsigned int dim,
- Span<T> scratchBuffer, Span<unsigned int> swapBuffer);
+bool matrixInvert(std::span<const T> dataIn, std::span<T> dataOut, unsigned int dim,
+ std::span<T> scratchBuffer, std::span<unsigned int> swapBuffer);
#endif /* __DOXYGEN__ */
template<typename T, unsigned int Rows, unsigned int Cols>
@@ -41,7 +41,7 @@ public:
std::copy(data.begin(), data.end(), data_.begin());
}
- Matrix(const Span<const T, Rows * Cols> data)
+ Matrix(std::span<const T, Rows * Cols> data)
{
std::copy(data.begin(), data.end(), data_.begin());
}
@@ -74,16 +74,16 @@ public:
return out.str();
}
- constexpr Span<const T, Rows * Cols> data() const { return data_; }
+ constexpr std::span<const T, Rows * Cols> data() const { return data_; }
- constexpr Span<const T, Cols> operator[](size_t i) const
+ constexpr std::span<const T, Cols> operator[](size_t i) const
{
- return Span<const T, Cols>{ &data_.data()[i * Cols], Cols };
+ return std::span<const T, Cols>{ &data_.data()[i * Cols], Cols };
}
- constexpr Span<T, Cols> operator[](size_t i)
+ constexpr std::span<T, Cols> operator[](size_t i)
{
- return Span<T, Cols>{ &data_.data()[i * Cols], Cols };
+ return std::span<T, Cols>{ &data_.data()[i * Cols], Cols };
}
#ifndef __DOXYGEN__
@@ -105,11 +105,11 @@ public:
Matrix<T, Rows, Cols> inverse;
std::array<T, Rows * Cols * 2> scratchBuffer;
std::array<unsigned int, Rows> swapBuffer;
- bool res = matrixInvert(Span<const T>(data_),
- Span<T>(inverse.data_),
+ bool res = matrixInvert(std::span<const T>(data_),
+ std::span<T>(inverse.data_),
Rows,
- Span<T>(scratchBuffer),
- Span<unsigned int>(swapBuffer));
+ std::span<T>(scratchBuffer),
+ std::span<unsigned int>(swapBuffer));
if (ok)
*ok = res;
return inverse;
@@ -47,7 +47,7 @@ public:
void release(Camera *camera);
virtual std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) = 0;
+ std::span<const StreamRole> roles) = 0;
virtual int configure(Camera *camera, CameraConfiguration *config) = 0;
virtual int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -7,11 +7,11 @@
#pragma once
+#include <span>
#include <string>
#include <libcamera/base/class.h>
#include <libcamera/base/signal.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/unique_fd.h>
namespace libcamera {
@@ -31,8 +31,8 @@ public:
~Process();
int start(const std::string &path,
- Span<const std::string> args = {},
- Span<const int> fds = {});
+ std::span<const std::string> args = {},
+ std::span<const int> fds = {});
ExitStatus exitStatus() const { return exitStatus_; }
int exitCode() const { return exitCode_; }
@@ -7,10 +7,9 @@
#pragma once
+#include <span>
#include <stdint.h>
-#include <libcamera/base/span.h>
-
#if HAVE_CRYPTO
struct evp_pkey_st;
#elif HAVE_GNUTLS
@@ -22,11 +21,11 @@ namespace libcamera {
class PubKey
{
public:
- PubKey(Span<const uint8_t> key);
+ PubKey(std::span<const uint8_t> key);
~PubKey();
bool isValid() const { return valid_; }
- bool verify(Span<const uint8_t> data, Span<const uint8_t> sig) const;
+ bool verify(std::span<const uint8_t> data, std::span<const uint8_t> sig) const;
private:
bool valid_;
@@ -8,6 +8,7 @@
*/
#pragma once
+#include <span>
#include <stdint.h>
#include <string>
#include <sys/mman.h>
@@ -16,7 +17,6 @@
#include <libcamera/base/class.h>
#include <libcamera/base/shared_fd.h>
-#include <libcamera/base/span.h>
namespace libcamera {
@@ -37,7 +37,7 @@ public:
return fd_;
}
- Span<uint8_t> mem() const
+ std::span<uint8_t> mem() const
{
return mem_;
}
@@ -52,7 +52,7 @@ private:
SharedFD fd_;
- Span<uint8_t> mem_;
+ std::span<uint8_t> mem_;
};
template<class T, typename = std::enable_if_t<std::is_standard_layout<T>::value>>
@@ -10,6 +10,7 @@
#include <map>
#include <memory>
#include <optional>
+#include <span>
#include <stdint.h>
#include <vector>
@@ -17,7 +18,6 @@
#include <libcamera/base/log.h>
#include <libcamera/base/signal.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/unique_fd.h>
#include <libcamera/color_space.h>
@@ -38,7 +38,7 @@ public:
const ControlInfoMap &controls() const { return controls_; }
- ControlList getControls(Span<const uint32_t> ids, const V4L2Request *request = nullptr);
+ ControlList getControls(std::span<const uint32_t> ids, const V4L2Request *request = nullptr);
int setControls(ControlList *ctrls, const V4L2Request *request = nullptr);
const struct v4l2_query_ext_ctrl *controlInfo(uint32_t id) const;
@@ -78,7 +78,7 @@ private:
void listControls();
void updateControls(ControlList *ctrls,
- Span<const v4l2_ext_control> v4l2Ctrls);
+ std::span<const v4l2_ext_control> v4l2Ctrls);
void eventAvailable();
@@ -13,10 +13,10 @@
#include <numeric>
#include <optional>
#include <ostream>
+#include <span>
#include <type_traits>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include "libcamera/internal/matrix.h"
#include "libcamera/internal/value_node.h"
@@ -46,7 +46,7 @@ public:
std::copy(data.begin(), data.end(), data_.begin());
}
- constexpr Vector(const Span<const T, Rows> data)
+ constexpr Vector(std::span<const T, Rows> data)
{
std::copy(data.begin(), data.end(), data_.begin());
}
@@ -7,10 +7,11 @@
#pragma once
+#include <span>
+
#include <hardware/camera3.h>
#include <libcamera/base/class.h>
-#include <libcamera/base/span.h>
#include <libcamera/geometry.h>
#include <libcamera/pixel_format.h>
@@ -28,8 +29,8 @@ public:
unsigned int numPlanes() const;
- libcamera::Span<const uint8_t> plane(unsigned int plane) const;
- libcamera::Span<uint8_t> plane(unsigned int plane);
+ std::span<const uint8_t> plane(unsigned int plane) const;
+ std::span<uint8_t> plane(unsigned int plane);
unsigned int stride(unsigned int plane) const;
unsigned int offset(unsigned int plane) const;
@@ -58,11 +59,11 @@ unsigned int CameraBuffer::numPlanes() const \
{ \
return _d()->numPlanes(); \
} \
-Span<const uint8_t> CameraBuffer::plane(unsigned int plane) const \
+std::span<const uint8_t> CameraBuffer::plane(unsigned int plane) const \
{ \
return const_cast<Private *>(_d())->plane(plane); \
} \
-Span<uint8_t> CameraBuffer::plane(unsigned int plane) \
+std::span<uint8_t> CameraBuffer::plane(unsigned int plane) \
{ \
return _d()->plane(plane); \
} \
@@ -11,6 +11,7 @@
#include <array>
#include <cmath>
#include <map>
+#include <span>
#include <stdint.h>
#include <type_traits>
@@ -1083,7 +1084,7 @@ int CameraCapabilities::initializeStaticMetadata()
}
{
- const Span<const Rectangle> rects =
+ const std::span<const Rectangle> rects =
properties.get(properties::PixelArrayActiveAreas).value_or(utils::defopt);
std::vector<int32_t> data{
static_cast<int32_t>(rects[0].x),
@@ -7,7 +7,7 @@
#include "camera_request.h"
-#include <libcamera/base/span.h>
+#include <span>
#include "camera_buffer.h"
@@ -114,7 +114,7 @@ Camera3RequestDescriptor::Camera3RequestDescriptor(
frameNumber_ = camera3Request->frame_number;
/* Copy the camera3 request stream information for later access. */
- const Span<const camera3_stream_buffer_t> buffers{
+ const std::span<const camera3_stream_buffer_t> buffers{
camera3Request->output_buffers,
camera3Request->num_output_buffers
};
@@ -7,7 +7,7 @@
#pragma once
-#include <libcamera/base/span.h>
+#include <span>
#include <libcamera/framebuffer.h>
#include <libcamera/stream.h>
@@ -21,6 +21,6 @@ public:
virtual int configure(const libcamera::StreamConfiguration &cfg) = 0;
virtual int encode(Camera3RequestDescriptor::StreamBuffer *buffer,
- libcamera::Span<const uint8_t> exifData,
+ std::span<const uint8_t> exifData,
unsigned int quality) = 0;
};
@@ -34,7 +34,7 @@ int EncoderJea::configure(const libcamera::StreamConfiguration &cfg)
}
int EncoderJea::encode(Camera3RequestDescriptor::StreamBuffer *buffer,
- libcamera::Span<const uint8_t> exifData,
+ std::span<const uint8_t> exifData,
unsigned int quality)
{
if (!jpegCompressor_)
@@ -21,7 +21,7 @@ public:
int configure(const libcamera::StreamConfiguration &cfg) override;
int encode(Camera3RequestDescriptor::StreamBuffer *buffer,
- libcamera::Span<const uint8_t> exifData,
+ std::span<const uint8_t> exifData,
unsigned int quality) override;
private:
@@ -105,7 +105,7 @@ int EncoderLibJpeg::configure(const StreamConfiguration &cfg)
return 0;
}
-void EncoderLibJpeg::compressRGB(const std::vector<Span<uint8_t>> &planes)
+void EncoderLibJpeg::compressRGB(const std::vector<std::span<uint8_t>> &planes)
{
unsigned char *src = const_cast<unsigned char *>(planes[0].data());
/* \todo Stride information should come from buffer configuration. */
@@ -123,7 +123,7 @@ void EncoderLibJpeg::compressRGB(const std::vector<Span<uint8_t>> &planes)
* Compress the incoming buffer from a supported NV format.
* This naively unpacks the semi-planar NV12 to a YUV888 format for libjpeg.
*/
-void EncoderLibJpeg::compressNV(const std::vector<Span<uint8_t>> &planes)
+void EncoderLibJpeg::compressNV(const std::vector<std::span<uint8_t>> &planes)
{
std::vector<uint8_t> tmprowbuf(compress_.image_width * 3);
@@ -181,7 +181,7 @@ void EncoderLibJpeg::compressNV(const std::vector<Span<uint8_t>> &planes)
}
int EncoderLibJpeg::encode(Camera3RequestDescriptor::StreamBuffer *buffer,
- libcamera::Span<const uint8_t> exifData,
+ std::span<const uint8_t> exifData,
unsigned int quality)
{
MappedFrameBuffer frame(buffer->srcBuffer,
@@ -196,8 +196,8 @@ int EncoderLibJpeg::encode(Camera3RequestDescriptor::StreamBuffer *buffer,
exifData, quality);
}
-int EncoderLibJpeg::encode(const std::vector<Span<uint8_t>> &src,
- Span<uint8_t> dest, Span<const uint8_t> exifData,
+int EncoderLibJpeg::encode(const std::vector<std::span<uint8_t>> &src,
+ std::span<uint8_t> dest, std::span<const uint8_t> exifData,
unsigned int quality)
{
unsigned char *destination = dest.data();
@@ -23,16 +23,16 @@ public:
int configure(const libcamera::StreamConfiguration &cfg) override;
int encode(Camera3RequestDescriptor::StreamBuffer *buffer,
- libcamera::Span<const uint8_t> exifData,
+ std::span<const uint8_t> exifData,
unsigned int quality) override;
- int encode(const std::vector<libcamera::Span<uint8_t>> &planes,
- libcamera::Span<uint8_t> destination,
- libcamera::Span<const uint8_t> exifData,
+ int encode(const std::vector<std::span<uint8_t>> &planes,
+ std::span<uint8_t> destination,
+ std::span<const uint8_t> exifData,
unsigned int quality);
private:
- void compressRGB(const std::vector<libcamera::Span<uint8_t>> &planes);
- void compressNV(const std::vector<libcamera::Span<uint8_t>> &planes);
+ void compressRGB(const std::vector<std::span<uint8_t>> &planes);
+ void compressNV(const std::vector<std::span<uint8_t>> &planes);
struct jpeg_compress_struct compress_;
struct jpeg_error_mgr jerr_;
@@ -190,7 +190,7 @@ void Exif::setRational(ExifIfd ifd, ExifTag tag, ExifRational item)
setRational(ifd, tag, { &item, 1 });
}
-void Exif::setRational(ExifIfd ifd, ExifTag tag, Span<const ExifRational> items)
+void Exif::setRational(ExifIfd ifd, ExifTag tag, std::span<const ExifRational> items)
{
ExifEntry *entry = createEntry(ifd, tag, EXIF_FORMAT_RATIONAL,
items.size(),
@@ -8,14 +8,13 @@
#pragma once
#include <chrono>
+#include <span>
#include <string>
#include <time.h>
#include <vector>
#include <libexif/exif-data.h>
-#include <libcamera/base/span.h>
-
#include <libcamera/geometry.h>
class Exif
@@ -76,7 +75,7 @@ public:
void setFlash(Flash flash);
void setWhiteBalance(WhiteBalance wb);
- libcamera::Span<const uint8_t> data() const { return { exifData_, size_ }; }
+ std::span<const uint8_t> data() const { return { exifData_, size_ }; }
[[nodiscard]] int generate();
private:
@@ -92,7 +91,7 @@ private:
StringEncoding encoding = NoEncoding);
void setRational(ExifIfd ifd, ExifTag tag, ExifRational item);
void setRational(ExifIfd ifd, ExifTag tag,
- libcamera::Span<const ExifRational> items);
+ std::span<const ExifRational> items);
std::tuple<int, int, int> degreesToDMS(double decimalDegrees);
void setGPSDMS(ExifIfd ifd, ExifTag tag, int deg, int min, int sec);
@@ -89,7 +89,7 @@ void PostProcessorJpeg::generateThumbnail(const FrameBuffer &source,
* Thumbnailer::createThumbnailer above and remove the manual
* planes split from here.
*/
- std::vector<Span<uint8_t>> thumbnailPlanes;
+ std::vector<std::span<uint8_t>> thumbnailPlanes;
const PixelFormatInfo &formatNV12 = PixelFormatInfo::info(formats::NV12);
size_t yPlaneSize = formatNV12.planeSize(targetSize, 0);
size_t uvPlaneSize = formatNV12.planeSize(targetSize, 1);
@@ -29,7 +29,7 @@ public:
unsigned int numPlanes() const;
- Span<uint8_t> plane(unsigned int plane);
+ std::span<uint8_t> plane(unsigned int plane);
unsigned int stride(unsigned int plane) const;
unsigned int offset(unsigned int plane) const;
@@ -99,7 +99,7 @@ unsigned int CameraBuffer::Private::numPlanes() const
return bufferManager_->GetNumPlanes(handle_);
}
-Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)
+std::span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)
{
if (!mapped_)
map();
@@ -29,7 +29,7 @@ class CrosFrameBufferData : public FrameBuffer::Private
public:
CrosFrameBufferData(cros::ScopedBufferHandle scopedHandle,
- Span<const FrameBuffer::Plane> planes)
+ std::span<const FrameBuffer::Plane> planes)
: FrameBuffer::Private(planes), scopedHandle_(std::move(scopedHandle))
{
}
@@ -31,7 +31,7 @@ public:
unsigned int numPlanes() const;
- Span<uint8_t> plane(unsigned int plane);
+ std::span<uint8_t> plane(unsigned int plane);
unsigned int stride(unsigned int plane) const;
unsigned int offset(unsigned int plane) const;
@@ -133,7 +133,7 @@ unsigned int CameraBuffer::Private::numPlanes() const
return planeInfo_.size();
}
-Span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)
+std::span<uint8_t> CameraBuffer::Private::plane(unsigned int plane)
{
if (!mapped_)
map();
@@ -35,7 +35,7 @@ class GenericFrameBufferData : public FrameBuffer::Private
public:
GenericFrameBufferData(struct alloc_device_t *allocDevice,
buffer_handle_t handle,
- Span<const FrameBuffer::Plane> planes)
+ std::span<const FrameBuffer::Plane> planes)
: FrameBuffer::Private(planes), allocDevice_(allocDevice),
handle_(handle)
{
@@ -355,7 +355,7 @@ ControlValue CaptureScript::parseRectangles()
if (rectangles.size() == 1)
controlValue.set(rectangles.at(0));
else
- controlValue.set(Span<const Rectangle>(rectangles));
+ controlValue.set(std::span<const Rectangle>(rectangles));
return controlValue;
}
@@ -537,7 +537,7 @@ ControlValue CaptureScript::parseArrayControl(const ControlId *id,
}
}
- value = Span<bool>(values.get(), repr.size());
+ value = std::span<bool>(values.get(), repr.size());
break;
}
case ControlTypeByte: {
@@ -547,7 +547,7 @@ ControlValue CaptureScript::parseArrayControl(const ControlId *id,
values.push_back(val);
}
- value = Span<const uint8_t>(values.data(), values.size());
+ value = std::span<const uint8_t>(values.data(), values.size());
break;
}
case ControlTypeInteger32: {
@@ -557,7 +557,7 @@ ControlValue CaptureScript::parseArrayControl(const ControlId *id,
values.push_back(val);
}
- value = Span<const int32_t>(values.data(), values.size());
+ value = std::span<const int32_t>(values.data(), values.size());
break;
}
case ControlTypeInteger64: {
@@ -567,7 +567,7 @@ ControlValue CaptureScript::parseArrayControl(const ControlId *id,
values.push_back(val);
}
- value = Span<const int64_t>(values.data(), values.size());
+ value = std::span<const int64_t>(values.data(), values.size());
break;
}
case ControlTypeFloat: {
@@ -575,7 +575,7 @@ ControlValue CaptureScript::parseArrayControl(const ControlId *id,
for (const std::string &s : repr)
values.push_back(strtof(s.c_str(), NULL));
- value = Span<const float>(values.data(), values.size());
+ value = std::span<const float>(values.data(), values.size());
break;
}
default:
@@ -104,7 +104,7 @@ Property::Property(Device *dev, drmModePropertyRes *property)
enums_[property->enums[i].value] = property->enums[i].name;
}
-Blob::Blob(Device *dev, const libcamera::Span<const uint8_t> &data)
+Blob::Blob(Device *dev, std::span<const uint8_t> data)
: Object(dev, 0, Object::TypeBlob)
{
drmModeCreatePropertyBlob(dev->fd(), data.data(), data.size(), &id_);
@@ -123,8 +123,8 @@ Mode::Mode(const drmModeModeInfo &mode)
std::unique_ptr<Blob> Mode::toBlob(Device *dev) const
{
- libcamera::Span<const uint8_t> data{ reinterpret_cast<const uint8_t *>(this),
- sizeof(*this) };
+ std::span<const uint8_t> data{ reinterpret_cast<const uint8_t *>(this),
+ sizeof(*this) };
return std::make_unique<Blob>(dev, data);
}
@@ -11,12 +11,12 @@
#include <list>
#include <map>
#include <memory>
+#include <span>
#include <stdint.h>
#include <string>
#include <vector>
#include <libcamera/base/signal.h>
-#include <libcamera/base/span.h>
#include <libdrm/drm.h>
#include <xf86drm.h>
@@ -129,7 +129,7 @@ private:
class Blob : public Object
{
public:
- Blob(Device *dev, const libcamera::Span<const uint8_t> &data);
+ Blob(Device *dev, std::span<const uint8_t> data);
~Blob();
bool isValid() const { return id() != 0; }
@@ -158,7 +158,7 @@ void FileSink::writeBuffer(const Stream *stream, FrameBuffer *buffer,
*/
const unsigned int bytesused = buffer->metadata().planes()[i].bytesused;
- Span<uint8_t> data = image->data(i);
+ std::span<uint8_t> data = image->data(i);
const unsigned int length = std::min<unsigned int>(bytesused, data.size());
if (bytesused > data.size())
@@ -230,13 +230,13 @@ void SDLSink::renderBuffer(FrameBuffer *buffer)
{
Image *image = mappedBuffers_[buffer].get();
- std::vector<Span<const uint8_t>> planes;
+ std::vector<std::span<const uint8_t>> planes;
unsigned int i = 0;
planes.reserve(buffer->metadata().planes().size());
for (const FrameMetadata::Plane &meta : buffer->metadata().planes()) {
- Span<uint8_t> data = image->data(i);
+ std::span<uint8_t> data = image->data(i);
if (meta.bytesused > data.size())
std::cerr << "payload size " << meta.bytesused
<< " larger than plane size " << data.size()
@@ -7,7 +7,7 @@
#pragma once
-#include <libcamera/base/span.h>
+#include <span>
#include <SDL2/SDL.h>
@@ -19,7 +19,7 @@ public:
SDLTexture(const SDL_Rect &rect, uint32_t pixelFormat, const int stride);
virtual ~SDLTexture();
int create(SDL_Renderer *renderer);
- virtual void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) = 0;
+ virtual void update(std::span<const std::span<const uint8_t>> data) = 0;
SDL_Texture *get() const { return ptr_; }
protected:
@@ -9,7 +9,7 @@
#include <assert.h>
-void SDLTexture1Plane::update(libcamera::Span<const libcamera::Span<const uint8_t>> data)
+void SDLTexture1Plane::update(std::span<const std::span<const uint8_t>> data)
{
assert(data.size() == 1);
assert(data[0].size_bytes() == std::size_t(rect_.h) * std::size_t(stride_));
@@ -14,5 +14,5 @@ class SDLTexture1Plane final : public SDLTexture
public:
using SDLTexture::SDLTexture;
- void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) override;
+ void update(std::span<const std::span<const uint8_t>> data) override;
};
@@ -43,7 +43,7 @@ SDLTextureMJPG::SDLTextureMJPG(const SDL_Rect &rect)
{
}
-int SDLTextureMJPG::decompress(Span<const uint8_t> data)
+int SDLTextureMJPG::decompress(std::span<const uint8_t> data)
{
struct jpeg_decompress_struct cinfo;
@@ -76,7 +76,7 @@ int SDLTextureMJPG::decompress(Span<const uint8_t> data)
return 0;
}
-void SDLTextureMJPG::update(libcamera::Span<const libcamera::Span<const uint8_t>> data)
+void SDLTextureMJPG::update(std::span<const std::span<const uint8_t>> data)
{
decompress(data[0]);
SDL_UpdateTexture(ptr_, nullptr, rgb_.get(), stride_);
@@ -14,10 +14,10 @@ class SDLTextureMJPG : public SDLTexture
public:
SDLTextureMJPG(const SDL_Rect &rect);
- void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) override;
+ void update(std::span<const std::span<const uint8_t>> data) override;
private:
- int decompress(libcamera::Span<const uint8_t> data);
+ int decompress(std::span<const uint8_t> data);
std::unique_ptr<unsigned char[]> rgb_;
};
@@ -18,7 +18,7 @@ SDLTextureNV::SDLTextureNV(const SDL_Rect &rect, uint32_t pixelFormat, unsigned
assert(pixelFormat == SDL_PIXELFORMAT_NV12 || pixelFormat == SDL_PIXELFORMAT_NV21);
}
-void SDLTextureNV::update(libcamera::Span<const libcamera::Span<const uint8_t>> data)
+void SDLTextureNV::update(std::span<const std::span<const uint8_t>> data)
{
assert(data.size() == 2);
assert(data[0].size_bytes() == std::size_t(rect_.h) * std::size_t(stride_));
@@ -14,6 +14,6 @@ class SDLTextureNV : public SDLTexture
{
public:
SDLTextureNV(const SDL_Rect &rect, uint32_t pixelFormat, unsigned int stride);
- void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) override;
+ void update(std::span<const std::span<const uint8_t>> data) override;
};
#endif
@@ -51,7 +51,7 @@ struct Matrix3d {
m[6] = m6, m[7] = m7, m[8] = m8;
}
- Matrix3d(const Span<const float> &span)
+ Matrix3d(std::span<const float> span)
: Matrix3d(span[0], span[1], span[2],
span[3], span[4], span[5],
span[6], span[7], span[8])
@@ -708,7 +708,7 @@ int DNGWriter::write(const char *filename, const Camera *camera,
const auto &blackLevels = metadata.get(controls::SensorBlackLevels);
if (blackLevels) {
- Span<const int32_t, 4> levels = *blackLevels;
+ std::span<const int32_t, 4> levels = *blackLevels;
/*
* The black levels control is specified in R, Gr, Gb, B order.
@@ -87,7 +87,7 @@ Image::Image() = default;
Image::~Image()
{
- for (Span<uint8_t> &map : maps_)
+ for (std::span<uint8_t> &map : maps_)
munmap(map.data(), map.size());
}
@@ -96,13 +96,13 @@ unsigned int Image::numPlanes() const
return planes_.size();
}
-Span<uint8_t> Image::data(unsigned int plane)
+std::span<uint8_t> Image::data(unsigned int plane)
{
assert(plane < planes_.size());
return planes_[plane];
}
-Span<const uint8_t> Image::data(unsigned int plane) const
+std::span<const uint8_t> Image::data(unsigned int plane) const
{
assert(plane < planes_.size());
return planes_[plane];
@@ -8,12 +8,12 @@
#pragma once
#include <memory>
+#include <span>
#include <stdint.h>
#include <vector>
#include <libcamera/base/class.h>
#include <libcamera/base/flags.h>
-#include <libcamera/base/span.h>
#include <libcamera/framebuffer.h>
@@ -33,16 +33,16 @@ public:
unsigned int numPlanes() const;
- libcamera::Span<uint8_t> data(unsigned int plane);
- libcamera::Span<const uint8_t> data(unsigned int plane) const;
+ std::span<uint8_t> data(unsigned int plane);
+ std::span<const uint8_t> data(unsigned int plane) const;
private:
LIBCAMERA_DISABLE_COPY(Image)
Image();
- std::vector<libcamera::Span<uint8_t>> maps_;
- std::vector<libcamera::Span<uint8_t>> planes_;
+ std::vector<std::span<uint8_t>> maps_;
+ std::vector<std::span<uint8_t>> planes_;
};
namespace libcamera {
@@ -19,7 +19,7 @@ using namespace libcamera;
int PPMWriter::write(const char *filename,
const StreamConfiguration &config,
- const Span<uint8_t> &data)
+ std::span<uint8_t> data)
{
struct FormatTransformation {
unsigned int rPos;
@@ -7,7 +7,7 @@
#pragma once
-#include <libcamera/base/span.h>
+#include <span>
#include <libcamera/stream.h>
@@ -16,5 +16,5 @@ class PPMWriter
public:
static int write(const char *filename,
const libcamera::StreamConfiguration &config,
- const libcamera::Span<uint8_t> &data);
+ std::span<uint8_t> data);
};
@@ -7,9 +7,9 @@
#include <iostream>
#include <libgen.h>
+#include <span>
#include <libcamera/base/file.h>
-#include <libcamera/base/span.h>
#include "libcamera/internal/ipa_manager.h"
#include "libcamera/internal/ipa_module.h"
@@ -24,7 +24,7 @@ bool isSignatureValid(IPAModule *ipa)
if (!file.open(File::OpenModeFlag::ReadOnly))
return false;
- Span<uint8_t> data = file.map();
+ std::span<uint8_t> data = file.map();
if (data.empty())
return false;
@@ -23,7 +23,7 @@ Capture::~Capture()
stop();
}
-void Capture::configure(libcamera::Span<const libcamera::StreamRole> roles)
+void Capture::configure(std::span<const libcamera::StreamRole> roles)
{
assert(!roles.empty());
@@ -9,6 +9,7 @@
#include <memory>
#include <optional>
+#include <span>
#include <libcamera/libcamera.h>
@@ -20,7 +21,7 @@ public:
Capture(std::shared_ptr<libcamera::Camera> camera);
~Capture();
- void configure(libcamera::Span<const libcamera::StreamRole> roles);
+ void configure(std::span<const libcamera::StreamRole> roles);
void run(unsigned int captureLimit, std::optional<unsigned int> queueLimit = {});
private:
@@ -213,9 +213,9 @@ bool GstCameraControls::setProperty(guint propId, const GValue *value,
}
{%- if ctrl.size == 0 %}
- Span<const {{ ctrl.element_type }}> val(values.data(), size);
+ std::span<const {{ ctrl.element_type }}> val(values.data(), size);
{%- else %}
- Span<const {{ ctrl.element_type }}, {{ ctrl.size }}> val(values.data(), size);
+ std::span<const {{ ctrl.element_type }}, {{ ctrl.size }}> val(values.data(), size);
{%- endif %}
{%- else %}
{%- if ctrl.is_rectangle %}
@@ -749,7 +749,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
switch (value.type()) {
case ControlTypeBool:
if (is_array) {
- for (const auto &item : value.get<Span<const bool>>()) {
+ for (const auto &item : value.get<std::span<const bool>>()) {
g_value_init(&x, type);
g_value_set_boolean(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -761,7 +761,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeByte:
if (is_array) {
- for (const auto &item : value.get<Span<const uint8_t>>()) {
+ for (const auto &item : value.get<std::span<const uint8_t>>()) {
g_value_init(&x, type);
g_value_set_uint(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -773,7 +773,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeUnsigned16:
if (is_array) {
- for (const auto &item : value.get<Span<const uint16_t>>()) {
+ for (const auto &item : value.get<std::span<const uint16_t>>()) {
g_value_init(&x, type);
g_value_set_uint(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -785,7 +785,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeUnsigned32:
if (is_array) {
- for (const auto &item : value.get<Span<const uint32_t>>()) {
+ for (const auto &item : value.get<std::span<const uint32_t>>()) {
g_value_init(&x, type);
g_value_set_uint(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -797,7 +797,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeInteger32:
if (is_array) {
- for (const auto &item : value.get<Span<const int32_t>>()) {
+ for (const auto &item : value.get<std::span<const int32_t>>()) {
g_value_init(&x, type);
g_value_set_int(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -822,7 +822,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeInteger64:
if (is_array) {
- for (const auto &item : value.get<Span<const int64_t>>()) {
+ for (const auto &item : value.get<std::span<const int64_t>>()) {
g_value_init(&x, type);
g_value_set_int64(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -834,7 +834,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeFloat:
if (is_array) {
- for (const auto &item : value.get<Span<const float>>()) {
+ for (const auto &item : value.get<std::span<const float>>()) {
g_value_init(&x, type);
g_value_set_float(&x, item);
gst_value_array_append_and_take_value(&v, &x);
@@ -855,7 +855,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeSize:
if (is_array) {
- for (const auto &item : value.get<Span<const Size>>())
+ for (const auto &item : value.get<std::span<const Size>>())
gst_libcamera_gvalue_set_size(&v, item);
} else {
gst_libcamera_gvalue_set_size(&v, value.get<const Size>());
@@ -863,7 +863,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypePoint:
if (is_array) {
- for (const auto &item : value.get<Span<const Point>>())
+ for (const auto &item : value.get<std::span<const Point>>())
gst_libcamera_gvalue_set_point(&v, item);
} else {
gst_libcamera_gvalue_set_point(&v, value.get<const Point>());
@@ -871,7 +871,7 @@ int gst_libcamera_set_structure_field(GstStructure *structure, const ControlId *
break;
case ControlTypeRectangle:
if (is_array) {
- for (const auto &item : value.get<Span<const Rectangle>>())
+ for (const auto &item : value.get<std::span<const Rectangle>>())
gst_libcamera_gvalue_set_rectangle(&v, item);
} else {
gst_libcamera_gvalue_set_rectangle(&v, value.get<const Rectangle>());
@@ -354,7 +354,7 @@ void Af::afIgnoreFrameReset()
*
* \return The variance of the values in the data set \a y_item selected by \a isY1
*/
-double Af::afEstimateVariance(Span<const y_table_item_t> y_items, bool isY1)
+double Af::afEstimateVariance(std::span<const y_table_item_t> y_items, bool isY1)
{
uint32_t total = 0;
double mean;
@@ -430,8 +430,8 @@ void Af::process(IPAContext &context, [[maybe_unused]] const uint32_t frame,
ASSERT(afRawBufferLen < IPU3_UAPI_AF_Y_TABLE_MAX_SIZE);
- Span<const y_table_item_t> y_items(reinterpret_cast<const y_table_item_t *>(&stats->af_raw_buffer.y_table),
- afRawBufferLen);
+ const std::span y_items(reinterpret_cast<const y_table_item_t *>(&stats->af_raw_buffer.y_table),
+ afRawBufferLen);
/*
* Calculate the mean and the variance of AF statistics for a given grid.
@@ -46,7 +46,7 @@ private:
void afReset(IPAContext &context);
bool afNeedIgnoreFrame();
void afIgnoreFrameReset();
- double afEstimateVariance(Span<const y_table_item_t> y_items, bool isY1);
+ double afEstimateVariance(std::span<const y_table_item_t> y_items, bool isY1);
bool afIsOutOfFocus(IPAContext &context);
@@ -153,7 +153,7 @@ Histogram Agc::parseStatistics(const ipu3_uapi_stats_3a *stats,
}
}
- return Histogram(Span<uint32_t>(hist));
+ return Histogram(std::span<uint32_t>(hist));
}
/**
@@ -11,6 +11,7 @@
#include <limits>
#include <map>
#include <memory>
+#include <span>
#include <stdint.h>
#include <utility>
#include <vector>
@@ -20,7 +21,6 @@
#include <libcamera/base/file.h>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
#include <libcamera/control_ids.h>
@@ -283,7 +283,7 @@ void IPAIPU3::updateControls(const IPACameraSensorInfo &sensorInfo,
}
controls[&controls::FrameDurationLimits] = ControlInfo(frameDurations[0],
frameDurations[1],
- Span<const int64_t, 2>{ { frameDurations[2], frameDurations[2] } });
+ std::span<const int64_t, 2>{ { frameDurations[2], frameDurations[2] } });
controls.insert(context_.ctrlMap.begin(), context_.ctrlMap.end());
*ipaControls = ControlInfoMap(std::move(controls), controls::controls);
@@ -546,7 +546,7 @@ void IPAIPU3::computeParams(const uint32_t frame, const uint32_t bufferId)
return;
}
- Span<uint8_t> mem = it->second.planes()[0];
+ std::span<uint8_t> mem = it->second.planes()[0];
ipu3_uapi_params *params =
reinterpret_cast<ipu3_uapi_params *>(mem.data());
@@ -590,7 +590,7 @@ void IPAIPU3::processStats(const uint32_t frame,
return;
}
- Span<uint8_t> mem = it->second.planes()[0];
+ std::span<uint8_t> mem = it->second.planes()[0];
const ipu3_uapi_stats_3a *stats =
reinterpret_cast<ipu3_uapi_stats_3a *>(mem.data());
@@ -122,7 +122,7 @@ public:
controls_[&controls::ColourGains] =
ControlInfo(gainMin_, gainMax_,
- Span<const float, 2>{ { 1.0f, 1.0f } });
+ std::span<const float, 2>{ { 1.0f, 1.0f } });
controls.insert(controls_.begin(), controls_.end());
@@ -307,7 +307,7 @@ AwbBayes::calculateAwb(const AwbStats &stats, unsigned int lux,
}
double AwbBayes::coarseSearch(const ipa::Pwl &prior, const AwbStats &stats,
- Span<double> range) const
+ std::span<double> range) const
{
std::vector<Pwl::Point> points;
size_t bestPoint = 0;
@@ -7,6 +7,8 @@
#pragma once
+#include <span>
+
#include <libcamera/controls.h>
#include "libcamera/internal/value_node.h"
@@ -37,7 +39,7 @@ private:
void fineSearch(double &t, double &r, double &b, ipa::Pwl const &prior,
const AwbStats &stats) const;
double coarseSearch(const ipa::Pwl &prior, const AwbStats &stats,
- Span<double> range) const;
+ std::span<double> range) const;
double interpolateQuadratic(ipa::Pwl::Point const &a,
ipa::Pwl::Point const &b,
ipa::Pwl::Point const &c) const;
@@ -69,7 +69,7 @@ namespace ipa {
* The vector of stages may be empty. In that case, the helper will simply use
* the runtime limits set through setLimits() instead.
*/
-ExposureModeHelper::ExposureModeHelper(const Span<std::pair<utils::Duration, double>> stages)
+ExposureModeHelper::ExposureModeHelper(std::span<std::pair<utils::Duration, double>> stages)
: lineDuration_(1us), minExposureTime_(0us), maxExposureTime_(0us),
minGain_(0), maxGain_(0), sensorHelper_(nullptr)
{
@@ -7,11 +7,11 @@
#pragma once
+#include <span>
#include <tuple>
#include <utility>
#include <vector>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
#include "camera_sensor_helper.h"
@@ -23,7 +23,7 @@ namespace ipa {
class ExposureModeHelper
{
public:
- ExposureModeHelper(const Span<std::pair<utils::Duration, double>> stages);
+ ExposureModeHelper(std::span<std::pair<utils::Duration, double>> stages);
~ExposureModeHelper() = default;
void configure(utils::Duration lineLength, const CameraSensorHelper *sensorHelper);
@@ -41,7 +41,7 @@ namespace ipa {
* \brief Create a cumulative histogram
* \param[in] data A (non-cumulative) histogram
*/
-Histogram::Histogram(Span<const uint32_t> data)
+Histogram::Histogram(std::span<const uint32_t> data)
{
cumulative_.resize(data.size() + 1);
cumulative_[0] = 0;
@@ -50,7 +50,7 @@ Histogram::Histogram(Span<const uint32_t> data)
}
/**
- * \fn Histogram::Histogram(Span<const uint32_t> data, Transform transform)
+ * \fn Histogram::Histogram(std::span<const uint32_t> data, Transform transform)
* \brief Create a cumulative histogram
* \param[in] data A (non-cumulative) histogram
* \param[in] transform The transformation function to apply to every bin
@@ -8,11 +8,11 @@
#pragma once
#include <limits.h>
+#include <span>
#include <stdint.h>
#include <type_traits>
#include <vector>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
namespace libcamera {
@@ -23,11 +23,11 @@ class Histogram
{
public:
Histogram() { cumulative_.push_back(0); }
- Histogram(Span<const uint32_t> data);
+ Histogram(std::span<const uint32_t> data);
template<typename Transform,
std::enable_if_t<std::is_invocable_v<Transform, uint32_t>> * = nullptr>
- Histogram(Span<const uint32_t> data, Transform transform)
+ Histogram(std::span<const uint32_t> data, Transform transform)
{
cumulative_.resize(data.size() + 1);
cumulative_[0] = 0;
@@ -36,7 +36,7 @@ public:
}
size_t bins() const { return cumulative_.size() - 1; }
- Span<const uint64_t> data() const { return cumulative_; }
+ std::span<const uint64_t> data() const { return cumulative_; }
uint64_t total() const { return cumulative_[cumulative_.size() - 1]; }
uint64_t cumulativeFrequency(double bin) const;
double quantile(double q, uint32_t first = 0, uint32_t last = UINT_MAX) const;
@@ -12,8 +12,6 @@
#include <string>
#include <vector>
-#include <libcamera/base/span.h>
-
#include <libcamera/geometry.h>
#include "libcamera/internal/value_node.h"
@@ -214,8 +214,8 @@ LscPolynomial::sampleForCrop(const Rectangle &cropRectangle,
std::vector<float>
LscPolynomial::samplePolynomial(const lsc::Polynomial &poly,
- Span<const double> xPositions,
- Span<const double> yPositions,
+ std::span<const double> xPositions,
+ std::span<const double> yPositions,
const Rectangle &cropRectangle)
{
double m = poly.getM();
@@ -8,10 +8,9 @@
#include <array>
#include <map>
+#include <span>
#include <vector>
-#include <libcamera/base/span.h>
-
#include <libcamera/geometry.h>
#include "libcamera/internal/value_node.h"
@@ -66,8 +65,8 @@ public:
private:
std::vector<float> samplePolynomial(const lsc::Polynomial &poly,
- Span<const double> xPositions,
- Span<const double> yPositions,
+ std::span<const double> xPositions,
+ std::span<const double> yPositions,
const Rectangle &cropRectangle);
PolynomialComponentsMap lscData_;
};
@@ -9,7 +9,6 @@
#include <vector>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/geometry.h>
@@ -131,7 +131,7 @@ namespace ipa {
* \param[in] data Reference to the v4l2-buffer memory mapped area
* \param[in] version The ISP parameters version the implementation supports
*/
-V4L2ParamsBase::V4L2ParamsBase(Span<uint8_t> data, unsigned int version)
+V4L2ParamsBase::V4L2ParamsBase(std::span<uint8_t> data, unsigned int version)
: data_(data)
{
struct v4l2_isp_params_buffer *params =
@@ -167,8 +167,8 @@ V4L2ParamsBase::V4L2ParamsBase(Span<uint8_t> data, unsigned int version)
* retrieve the memory area that will be used to construct a V4L2ParamsBlock<T>
* before returning it to the caller.
*/
-Span<uint8_t> V4L2ParamsBase::block(uint16_t type, unsigned int blockType,
- size_t blockSize)
+std::span<uint8_t> V4L2ParamsBase::block(uint16_t type, unsigned int blockType,
+ size_t blockSize)
{
/*
* Look up the block in the cache first. If an algorithm
@@ -182,7 +182,7 @@ Span<uint8_t> V4L2ParamsBase::block(uint16_t type, unsigned int blockType,
/*
* Make sure we don't run out of space. Assert as otherwise
* we get a segfault as soon as someone tries to access the
- * empty Span<> returned from here.
+ * empty span returned from here.
*/
if (blockSize > data_.size() - used_) {
LOG(Fatal)
@@ -191,7 +191,7 @@ Span<uint8_t> V4L2ParamsBase::block(uint16_t type, unsigned int blockType,
}
/* Allocate a new block, clear its memory, and initialize its header. */
- Span<uint8_t> block = data_.subspan(used_, blockSize);
+ std::span<uint8_t> block = data_.subspan(used_, blockSize);
memset(block.data(), 0, block.size());
struct v4l2_isp_params_block_header *header =
@@ -279,7 +279,7 @@ Span<uint8_t> V4L2ParamsBase::block(uint16_t type, unsigned int blockType,
* class MyISPParams : public V4L2Params<params_traits>
* {
* public:
- * MyISPParams::MyISPParams(Span<uint8_t> data)
+ * MyISPParams::MyISPParams(std::span<uint8_t> data)
* : V4L2Params(data, kVersion)
* {
* }
@@ -8,13 +8,13 @@
#pragma once
#include <map>
+#include <span>
#include <stdint.h>
#include <string.h>
#include <linux/media/v4l2-isp.h>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
namespace libcamera {
@@ -27,7 +27,7 @@ template<typename T>
class V4L2ParamsBlock
{
public:
- V4L2ParamsBlock(const Span<uint8_t> data)
+ V4L2ParamsBlock(std::span<uint8_t> data)
: data_(data)
{
}
@@ -66,25 +66,25 @@ public:
}
protected:
- Span<uint8_t> data_;
+ std::span<uint8_t> data_;
};
class V4L2ParamsBase
{
protected:
- V4L2ParamsBase(Span<uint8_t> data, unsigned int version);
+ V4L2ParamsBase(std::span<uint8_t> data, unsigned int version);
public:
size_t bytesused() const { return used_; }
protected:
- Span<uint8_t> block(uint16_t type, unsigned int blockType,
- size_t blockSize);
+ std::span<uint8_t> block(uint16_t type, unsigned int blockType,
+ size_t blockSize);
- Span<uint8_t> data_;
+ std::span<uint8_t> data_;
size_t used_;
- std::map<uint16_t, Span<uint8_t>> blocks_;
+ std::map<uint16_t, std::span<uint8_t>> blocks_;
};
template<typename Traits>
@@ -93,7 +93,7 @@ class V4L2Params : public V4L2ParamsBase
public:
static_assert(std::is_same_v<std::underlying_type_t<typename Traits::id_type>, uint16_t>);
- V4L2Params(Span<uint8_t> data, unsigned int version)
+ V4L2Params(std::span<uint8_t> data, unsigned int version)
: V4L2ParamsBase(data, version)
{
}
@@ -54,7 +54,7 @@ LOG_DEFINE_CATEGORY(V4L2Stats)
* After construction users of this class shall check the validity of the
* constructed instance using operator bool().
*/
-V4L2StatsBase::V4L2StatsBase(Span<uint8_t> data, unsigned int version)
+V4L2StatsBase::V4L2StatsBase(std::span<uint8_t> data, unsigned int version)
: data_(data), valid_(false)
{
const struct v4l2_isp_buffer *stats =
@@ -116,10 +116,10 @@ V4L2StatsBase::V4L2StatsBase(Span<uint8_t> data, unsigned int version)
* Retrieve a span to the statistics block memory location by accessing the
* cache built at class construction time.
*
- * \return The memory location of the ISP statistics block, or an empty Span
+ * \return The memory location of the ISP statistics block, or an empty span
* if \a blockType is not supported
*/
-Span<const uint8_t> V4L2StatsBase::block(unsigned int blockType, size_t blockSize) const
+std::span<const uint8_t> V4L2StatsBase::block(unsigned int blockType, size_t blockSize) const
{
const auto it = cache_.find(blockType);
if (it == cache_.end()) {
@@ -201,7 +201,7 @@ Span<const uint8_t> V4L2StatsBase::block(unsigned int blockType, size_t blockSiz
* class MyISPStats : public V4L2Stats<stats_traits>
* {
* public:
- * MyISPStats::MyISPStats(Span<uint8_t> data)
+ * MyISPStats::MyISPStats(std::span<uint8_t> data)
* : V4L2Stats(data, V4L2_ISP_VERSION_V1)
* {
* }
@@ -8,12 +8,11 @@
#pragma once
#include <map>
+#include <span>
#include <stdint.h>
#include <linux/media/v4l2-isp.h>
-#include <libcamera/base/span.h>
-
namespace libcamera {
namespace ipa {
@@ -21,17 +20,17 @@ namespace ipa {
class V4L2StatsBase
{
public:
- V4L2StatsBase(Span<uint8_t> data, unsigned int version);
+ V4L2StatsBase(std::span<uint8_t> data, unsigned int version);
- Span<const uint8_t> block(unsigned int blockType, size_t blockSize) const;
+ std::span<const uint8_t> block(unsigned int blockType, size_t blockSize) const;
constexpr explicit operator bool()
{
return valid_;
}
private:
- std::map<uint16_t, Span<const uint8_t>> cache_;
- Span<uint8_t> data_;
+ std::map<uint16_t, std::span<const uint8_t>> cache_;
+ std::span<uint8_t> data_;
bool valid_;
};
@@ -41,7 +40,7 @@ class V4L2Stats : public V4L2StatsBase
public:
static_assert(std::is_same_v<std::underlying_type_t<typename Traits::id_type>, uint16_t>);
- V4L2Stats(Span<uint8_t> data, unsigned int version)
+ V4L2Stats(std::span<uint8_t> data, unsigned int version)
: V4L2StatsBase(data, version)
{
}
@@ -120,10 +120,10 @@ void AgcStatistics::parseStatistics(const mali_c55_stats_buffer *stats)
static_cast<double>(b[i]) } });
}
- rHist = Histogram(Span<uint32_t>(r, kNumHistogramBins));
- gHist = Histogram(Span<uint32_t>(g, kNumHistogramBins));
- bHist = Histogram(Span<uint32_t>(b, kNumHistogramBins));
- yHist = Histogram(Span<uint32_t>(y, kNumHistogramBins));
+ rHist = Histogram(std::span<uint32_t>(r, kNumHistogramBins));
+ gHist = Histogram(std::span<uint32_t>(g, kNumHistogramBins));
+ bHist = Histogram(std::span<uint32_t>(b, kNumHistogramBins));
+ yHist = Histogram(std::span<uint32_t>(y, kNumHistogramBins));
}
Agc::Agc()
@@ -298,7 +298,7 @@ void Agc::fillWeightsArrayBuffer(MaliC55Params *params, const enum MaliC55Blocks
* histograms containing a true pixel count, which we can then use to
* approximate colour channel averages for the image.
*/
- Span<uint8_t> weights{
+ std::span<uint8_t> weights{
block->zone_weights,
MALI_C55_MAX_ZONES
};
@@ -7,6 +7,7 @@
#include <array>
#include <map>
+#include <span>
#include <string.h>
#include <vector>
@@ -15,7 +16,6 @@
#include <libcamera/base/file.h>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/control_ids.h>
#include <libcamera/ipa/ipa_interface.h>
@@ -241,7 +241,7 @@ void IPAMaliC55::updateControls(const IPACameraSensorInfo &sensorInfo,
ctrlMap[&controls::FrameDurationLimits] = ControlInfo(frameDurations[0],
frameDurations[1],
- Span<const int64_t, 2>{ { frameDurations[2], frameDurations[2] } });
+ std::span<const int64_t, 2>{ { frameDurations[2], frameDurations[2] } });
/*
* Compute exposure time limits from the V4L2_CID_EXPOSURE control
@@ -70,7 +70,7 @@ struct param_traits {
class MaliC55Params : public V4L2Params<details::param_traits>
{
public:
- MaliC55Params(Span<uint8_t> data)
+ MaliC55Params(std::span<uint8_t> data)
: V4L2Params(data, V4L2_ISP_PARAMS_VERSION_V1)
{
}
@@ -420,7 +420,7 @@ void Agc::prepare(IPAContext &context, const uint32_t frame,
*/
hstConfig->mode = RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED;
- Span<uint8_t> weights{
+ std::span<uint8_t> weights{
hstConfig->hist_weight,
context.hw.numHistogramWeights
};
@@ -7,9 +7,10 @@
#pragma once
+#include <span>
+
#include <linux/rkisp1-config.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
#include <libcamera/geometry.h>
@@ -54,8 +55,8 @@ private:
IPAFrameContext &frameContext,
utils::Duration frameDuration);
- Span<const uint8_t> expMeans_;
- Span<const uint8_t> weights_;
+ std::span<const uint8_t> expMeans_;
+ std::span<const uint8_t> weights_;
std::map<int32_t, std::vector<uint8_t>> meteringModes_;
};
@@ -10,6 +10,7 @@
#include <algorithm>
#include <cmath>
#include <numeric>
+#include <span>
#include <libcamera/base/log.h>
#include <libcamera/base/utils.h>
@@ -68,7 +69,7 @@ std::vector<double> parseSizes(const ValueNode &tuningData,
* input: | 0.2 | 0.3 |
* output: 0.0 0.2 0.5 0.8 1.0
*/
-std::vector<double> sizesListToPositions(Span<const double> sizes)
+std::vector<double> sizesListToPositions(std::span<const double> sizes)
{
const int half = sizes.size();
std::vector<double> positions(half * 2 + 1);
@@ -91,7 +91,7 @@ void RkISP1Params::setBlockEnabled(BlockType type, bool enabled)
cfg->module_ens &= ~info.enableBit;
}
-Span<uint8_t> RkISP1Params::block(BlockType type)
+std::span<uint8_t> RkISP1Params::block(BlockType type)
{
auto infoIt = kBlockTypeInfo.find(type);
if (infoIt == kBlockTypeInfo.end()) {
@@ -95,7 +95,7 @@ class RkISP1Params : public V4L2Params<details::params_traits>
public:
static constexpr unsigned int kVersion = RKISP1_EXT_PARAM_BUFFER_V1;
- RkISP1Params(uint32_t format, Span<uint8_t> data)
+ RkISP1Params(uint32_t format, std::span<uint8_t> data)
: V4L2Params(data, kVersion), format_(format)
{
if (format_ == V4L2_META_FMT_RK_ISP1_PARAMS) {
@@ -116,7 +116,7 @@ public:
void setBlockEnabled(BlockType type, bool enabled);
private:
- Span<uint8_t> block(BlockType type);
+ std::span<uint8_t> block(BlockType type);
uint32_t format_;
};
@@ -126,7 +126,7 @@ class RkISP1ParamsBlock final : public V4L2ParamsBlock<T>
{
public:
RkISP1ParamsBlock(RkISP1Params *params, BlockType type,
- const Span<uint8_t> data)
+ std::span<uint8_t> data)
: V4L2ParamsBlock<T>(data)
{
params_ = params;
@@ -184,7 +184,7 @@ public:
private:
RkISP1Params *params_;
BlockType type_;
- Span<uint8_t> cifData_;
+ std::span<uint8_t> cifData_;
};
} /* namespace ipa::rkisp1 */
@@ -440,7 +440,7 @@ void IPARkISP1::updateControls(const IPACameraSensorInfo &sensorInfo,
/* \todo Move this (and other agc-related controls) to agc */
context_.ctrlMap[&controls::FrameDurationLimits] =
ControlInfo(frameDurations[0], frameDurations[1],
- ControlValue(Span<const int64_t, 2>{ { frameDurations[2], frameDurations[2] } }));
+ ControlValue(std::span<const int64_t, 2>{ { frameDurations[2], frameDurations[2] } }));
ctrlMap.insert(context_.ctrlMap.begin(), context_.ctrlMap.end());
*ipaControls = ControlInfoMap(std::move(ctrlMap), controls::controls);
@@ -58,7 +58,7 @@ CamHelper::~CamHelper()
{
}
-void CamHelper::prepare(Span<const uint8_t> buffer,
+void CamHelper::prepare(std::span<const uint8_t> buffer,
Metadata &metadata)
{
parseEmbeddedData(buffer, metadata);
@@ -210,7 +210,7 @@ unsigned int CamHelper::getMinDebinFactor() const
return 2;
}
-void CamHelper::parseEmbeddedData(Span<const uint8_t> buffer,
+void CamHelper::parseEmbeddedData(std::span<const uint8_t> buffer,
Metadata &metadata)
{
MdParser::RegisterMap registers;
@@ -7,10 +7,10 @@
#pragma once
#include <memory>
+#include <span>
#include <string>
#include <utility>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
#include "controller/camera_mode.h"
@@ -77,7 +77,7 @@ public:
virtual ~CamHelper();
void setCameraMode(const CameraMode &mode);
void setHwConfig(const Controller::HardwareConfig &hwConfig);
- virtual void prepare(libcamera::Span<const uint8_t> buffer,
+ virtual void prepare(std::span<const uint8_t> buffer,
Metadata &metadata);
virtual void process(StatisticsPtr &stats, Metadata &metadata);
virtual uint32_t exposureLines(const libcamera::utils::Duration exposure,
@@ -101,7 +101,7 @@ public:
virtual unsigned int getMinDebinFactor() const;
protected:
- void parseEmbeddedData(libcamera::Span<const uint8_t> buffer,
+ void parseEmbeddedData(std::span<const uint8_t> buffer,
Metadata &metadata);
virtual void populateMetadata(const MdParser::RegisterMap ®isters,
Metadata &metadata) const;
@@ -36,7 +36,7 @@ public:
double gain(uint32_t gainCode) const override;
uint32_t exposureLines(const Duration exposure, const Duration lineLength) const override;
Duration exposure(uint32_t exposureLines, const Duration lineLength) const override;
- void prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata) override;
+ void prepare(std::span<const uint8_t> buffer, Metadata &metadata) override;
bool sensorEmbeddedDataPresent() const override;
void populateMetadata(const MdParser::RegisterMap ®isters,
Metadata &metadata) const override;
@@ -83,7 +83,7 @@ Duration CamHelperImx296::exposure(uint32_t exposureLines,
return std::max<uint32_t>(minExposureLines, exposureLines) * timePerLine + 14.26us;
}
-void CamHelperImx296::prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata)
+void CamHelperImx296::prepare(std::span<const uint8_t> buffer, Metadata &metadata)
{
/*
* The imx296 embedded data is ahead by a single frame, i.e. embedded
@@ -48,7 +48,7 @@ public:
CamHelperImx477();
uint32_t gainCode(double gain) const override;
double gain(uint32_t gainCode) const override;
- void prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata) override;
+ void prepare(std::span<const uint8_t> buffer, Metadata &metadata) override;
std::pair<uint32_t, uint32_t> getBlanking(Duration &exposure, Duration minFrameDuration,
Duration maxFrameDuration) const override;
bool sensorEmbeddedDataPresent() const override;
@@ -83,7 +83,7 @@ double CamHelperImx477::gain(uint32_t gainCode) const
return 1024.0 / (1024 - gainCode);
}
-void CamHelperImx477::prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata)
+void CamHelperImx477::prepare(std::span<const uint8_t> buffer, Metadata &metadata)
{
MdParser::RegisterMap registers;
DeviceStatus deviceStatus;
@@ -48,7 +48,7 @@ public:
CamHelperImx519();
uint32_t gainCode(double gain) const override;
double gain(uint32_t gainCode) const override;
- void prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata) override;
+ void prepare(std::span<const uint8_t> buffer, Metadata &metadata) override;
std::pair<uint32_t, uint32_t> getBlanking(Duration &exposure, Duration minFrameDuration,
Duration maxFrameDuration) const override;
bool sensorEmbeddedDataPresent() const override;
@@ -83,7 +83,7 @@ double CamHelperImx519::gain(uint32_t gainCode) const
return 1024.0 / (1024 - gainCode);
}
-void CamHelperImx519::prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata)
+void CamHelperImx519::prepare(std::span<const uint8_t> buffer, Metadata &metadata)
{
MdParser::RegisterMap registers;
DeviceStatus deviceStatus;
@@ -50,7 +50,7 @@ public:
CamHelperImx708();
uint32_t gainCode(double gain) const override;
double gain(uint32_t gain_code) const override;
- void prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata) override;
+ void prepare(std::span<const uint8_t> buffer, Metadata &metadata) override;
void process(StatisticsPtr &stats, Metadata &metadata) override;
std::pair<uint32_t, uint32_t> getBlanking(Duration &exposure, Duration minFrameDuration,
Duration maxFrameDuration) const override;
@@ -104,7 +104,7 @@ double CamHelperImx708::gain(uint32_t gain_code) const
return 1024.0 / (1024 - gain_code);
}
-void CamHelperImx708::prepare(libcamera::Span<const uint8_t> buffer, Metadata &metadata)
+void CamHelperImx708::prepare(std::span<const uint8_t> buffer, Metadata &metadata)
{
MdParser::RegisterMap registers;
DeviceStatus deviceStatus;
@@ -9,10 +9,9 @@
#include <initializer_list>
#include <map>
#include <optional>
+#include <span>
#include <stdint.h>
-#include <libcamera/base/span.h>
-
/*
* Camera metadata parser class. Usage as shown below.
*
@@ -101,7 +100,7 @@ public:
lineLengthBytes_ = numBytes;
}
- virtual Status parse(libcamera::Span<const uint8_t> buffer,
+ virtual Status parse(std::span<const uint8_t> buffer,
RegisterMap ®isters) = 0;
protected:
@@ -123,7 +122,7 @@ class MdParserSmia final : public MdParser
public:
MdParserSmia(std::initializer_list<uint32_t> registerList);
- MdParser::Status parse(libcamera::Span<const uint8_t> buffer,
+ MdParser::Status parse(std::span<const uint8_t> buffer,
RegisterMap ®isters) override;
private:
@@ -147,7 +146,7 @@ private:
BadPadding = -5
};
- ParseStatus findRegs(libcamera::Span<const uint8_t> buffer);
+ ParseStatus findRegs(std::span<const uint8_t> buffer);
OffsetMap offsets_;
};
@@ -33,7 +33,7 @@ MdParserSmia::MdParserSmia(std::initializer_list<uint32_t> registerList)
offsets_[r] = {};
}
-MdParser::Status MdParserSmia::parse(libcamera::Span<const uint8_t> buffer,
+MdParser::Status MdParserSmia::parse(std::span<const uint8_t> buffer,
RegisterMap ®isters)
{
if (reset_) {
@@ -72,7 +72,7 @@ MdParser::Status MdParserSmia::parse(libcamera::Span<const uint8_t> buffer,
return OK;
}
-MdParserSmia::ParseStatus MdParserSmia::findRegs(libcamera::Span<const uint8_t> buffer)
+MdParserSmia::ParseStatus MdParserSmia::findRegs(std::span<const uint8_t> buffer)
{
ASSERT(offsets_.size());
@@ -9,9 +9,9 @@
#include <array>
#include <cmath>
+#include <span>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/control_ids.h>
#include <libcamera/property_ids.h>
@@ -78,8 +78,8 @@ const ControlInfoMap::Map ipaControls{
{ &controls::FrameDurationLimits,
ControlInfo(static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()),
static_cast<int64_t>(defaultMaxFrameDuration.get<std::micro>()),
- Span<const int64_t, 2>{ { static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()),
- static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()) } }) },
+ std::span<const int64_t, 2>{ { static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()),
+ static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()) } }) },
{ &controls::draft::NoiseReductionMode, ControlInfo(controls::draft::NoiseReductionModeValues) },
{ &controls::rpi::StatsOutputEnable, ControlInfo(false, true, false) },
};
@@ -101,7 +101,7 @@ const ControlInfoMap::Map ipaAfControls{
{ &controls::AfSpeed, ControlInfo(controls::AfSpeedValues) },
{ &controls::AfMetering, ControlInfo(controls::AfMeteringValues) },
{ &controls::AfWindows, ControlInfo(Rectangle{}, Rectangle(65535, 65535, 65535, 65535),
- Span<const Rectangle, 1>{ { Rectangle{} } }) },
+ std::span<const Rectangle, 1>{ { Rectangle{} } }) },
{ &controls::AfTrigger, ControlInfo(controls::AfTriggerValues) },
{ &controls::AfPause, ControlInfo(controls::AfPauseValues) },
{ &controls::LensPosition, ControlInfo(0.0f, 32.0f, 1.0f) }
@@ -250,8 +250,8 @@ int32_t IpaBase::configure(const IPACameraSensorInfo &sensorInfo, const ConfigPa
ctrlMap[&controls::FrameDurationLimits] =
ControlInfo(static_cast<int64_t>(mode_.minFrameDuration.get<std::micro>()),
static_cast<int64_t>(mode_.maxFrameDuration.get<std::micro>()),
- Span<const int64_t, 2>{ { static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()),
- static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()) } });
+ std::span<const int64_t, 2>{ { static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()),
+ static_cast<int64_t>(defaultMinFrameDuration.get<std::micro>()) } });
ctrlMap[&controls::AnalogueGain] =
ControlInfo(static_cast<float>(mode_.minAnalogueGain),
@@ -417,7 +417,7 @@ void IpaBase::prepareIsp(const PrepareParams ¶ms)
int64_t frameTimestamp = params.sensorControls.get(controls::SensorTimestamp).value_or(0);
unsigned int ipaContext = params.ipaContext % rpiMetadata_.size();
RPiController::Metadata &rpiMetadata = rpiMetadata_[ipaContext];
- Span<uint8_t> embeddedBuffer;
+ std::span<uint8_t> embeddedBuffer;
rpiMetadata.clear();
fillDeviceStatus(params.sensorControls, ipaContext);
@@ -1177,7 +1177,7 @@ void IpaBase::applyControls(const ControlList &controls)
if (monoSensor_)
break;
- auto floats = ctrl.second.get<Span<const float>>();
+ auto floats = ctrl.second.get<std::span<const float>>();
RPiController::CcmAlgorithm *ccm = dynamic_cast<RPiController::CcmAlgorithm *>(
controller_.getAlgorithm("ccm"));
if (!ccm) {
@@ -1287,7 +1287,7 @@ void IpaBase::applyControls(const ControlList &controls)
}
case controls::FRAME_DURATION_LIMITS: {
- auto frameDurations = ctrl.second.get<Span<const int64_t>>();
+ auto frameDurations = ctrl.second.get<std::span<const int64_t>>();
applyFrameDurations(frameDurations[0] * 1.0us, frameDurations[1] * 1.0us);
break;
}
@@ -1351,7 +1351,7 @@ void IpaBase::applyControls(const ControlList &controls)
<< "Could not set AF_WINDOWS - no AF algorithm";
break;
}
- af->setWindows(ctrl.second.get<Span<const Rectangle>>());
+ af->setWindows(ctrl.second.get<std::span<const Rectangle>>());
break;
}
@@ -90,7 +90,7 @@ private:
virtual void platformPrepareIsp(const PrepareParams ¶ms,
RPiController::Metadata &rpiMetadata) = 0;
virtual void platformPrepareAgc(RPiController::Metadata &rpiMetadata) = 0;
- virtual RPiController::StatisticsPtr platformProcessStats(Span<uint8_t> mem) = 0;
+ virtual RPiController::StatisticsPtr platformProcessStats(std::span<uint8_t> mem) = 0;
void setMode(const IPACameraSensorInfo &sensorInfo);
void setCameraTimeoutValue();
@@ -7,8 +7,7 @@
#pragma once
#include <optional>
-
-#include <libcamera/base/span.h>
+#include <span>
#include "algorithm.h"
@@ -65,7 +64,7 @@ public:
virtual void setMetering([[maybe_unused]] bool use_windows)
{
}
- virtual void setWindows([[maybe_unused]] libcamera::Span<libcamera::Rectangle const> const &wins)
+ virtual void setWindows([[maybe_unused]] std::span<libcamera::Rectangle const> wins)
{
}
virtual void setMode(AfMode mode) = 0;
@@ -856,7 +856,7 @@ void Af::setMetering(bool mode)
}
}
-void Af::setWindows(libcamera::Span<libcamera::Rectangle const> const &wins)
+void Af::setWindows(std::span<libcamera::Rectangle const> wins)
{
windows_.clear();
for (auto &w : wins) {
@@ -59,7 +59,7 @@ public:
void setRange(AfRange range) override;
void setSpeed(AfSpeed speed) override;
void setMetering(bool use_windows) override;
- void setWindows(libcamera::Span<libcamera::Rectangle const> const &wins) override;
+ void setWindows(std::span<libcamera::Rectangle const> wins) override;
void setMode(AfMode mode) override;
AfMode getMode() const override;
double getDefaultLensPosition() const override;
@@ -9,10 +9,10 @@
#include <cmath>
#include <functional>
#include <numeric>
+#include <span>
#include <vector>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include "../awb_status.h"
#include "alsc.h"
@@ -16,6 +16,7 @@
*/
#include <algorithm>
+#include <span>
#include <libcamera/base/file.h>
#include <libcamera/base/log.h>
@@ -169,7 +170,7 @@ static bool checkTensorShape(TfLiteTensor *tensor, const int *expectedDims, cons
static std::string buildDimString(const int *dims, const int dimsSize)
{
- return "[" + utils::join(Span(dims, dimsSize), ",") + "]";
+ return "[" + utils::join(std::span(dims, dimsSize), ",") + "]";
}
void AwbNN::loadModel()
@@ -109,7 +109,7 @@ int generateLut(const ipa::Pwl &pwl, uint32_t *lut, std::size_t lutSize,
return 0;
}
-int generateDecompandLut(const ipa::Pwl &pwl, Span<uint16_t> lut)
+int generateDecompandLut(const ipa::Pwl &pwl, std::span<uint16_t> lut)
{
if (pwl.empty())
return -EINVAL;
@@ -235,7 +235,7 @@ private:
void platformPrepareIsp(const PrepareParams ¶ms,
RPiController::Metadata &rpiMetadata) override;
void platformPrepareAgc(RPiController::Metadata &rpiMetadata) override;
- RPiController::StatisticsPtr platformProcessStats(Span<uint8_t> mem) override;
+ RPiController::StatisticsPtr platformProcessStats(std::span<uint8_t> mem) override;
void handleControls(const ControlList &controls) override;
@@ -503,7 +503,7 @@ void IpaPiSP::platformPrepareAgc(RPiController::Metadata &rpiMetadata)
be_->SetGlobal(global);
}
-RPiController::StatisticsPtr IpaPiSP::platformProcessStats(Span<uint8_t> mem)
+RPiController::StatisticsPtr IpaPiSP::platformProcessStats(std::span<uint8_t> mem)
{
using namespace RPiController;
@@ -537,8 +537,8 @@ RPiController::StatisticsPtr IpaPiSP::platformProcessStats(Span<uint8_t> mem)
statistics->focusRegions.set(i, { stats->cdaf.foms[i] >> 20, 0, 0 });
if (statsMetadataOutput_) {
- Span<const uint8_t> statsSpan(reinterpret_cast<const uint8_t *>(stats),
- sizeof(pisp_statistics));
+ const std::span statsSpan(reinterpret_cast<const uint8_t *>(stats),
+ sizeof(pisp_statistics));
libcameraMetadata_.set(controls::rpi::PispStatsOutput, statsSpan);
}
@@ -5,13 +5,13 @@
* Raspberry Pi VC4/BCM2835 ISP IPA.
*/
+#include <span>
#include <string.h>
#include <sys/mman.h>
#include <linux/bcm2835-isp.h>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/control_ids.h>
#include <libcamera/ipa/ipa_module_info.h>
@@ -61,7 +61,7 @@ private:
void platformPrepareIsp(const PrepareParams ¶ms, RPiController::Metadata &rpiMetadata) override;
void platformPrepareAgc([[maybe_unused]] RPiController::Metadata &rpiMetadata) override;
- RPiController::StatisticsPtr platformProcessStats(Span<uint8_t> mem) override;
+ RPiController::StatisticsPtr platformProcessStats(std::span<uint8_t> mem) override;
void handleControls(const ControlList &controls) override;
bool validateIspControls();
@@ -211,7 +211,7 @@ void IpaVc4::platformPrepareAgc(RPiController::Metadata &rpiMetadata)
ctrls_ = ControlList(ispCtrls_);
}
-RPiController::StatisticsPtr IpaVc4::platformProcessStats(Span<uint8_t> mem)
+RPiController::StatisticsPtr IpaVc4::platformProcessStats(std::span<uint8_t> mem)
{
using namespace RPiController;
@@ -282,8 +282,8 @@ RPiController::StatisticsPtr IpaVc4::platformProcessStats(Span<uint8_t> mem)
stats->focus_stats[i].contrast_val_num[1][0] });
if (statsMetadataOutput_) {
- Span<const uint8_t> statsSpan(reinterpret_cast<const uint8_t *>(stats),
- sizeof(bcm2835_isp_stats));
+ const std::span statsSpan(reinterpret_cast<const uint8_t *>(stats),
+ sizeof(bcm2835_isp_stats));
libcameraMetadata_.set(controls::rpi::Bcm2835StatsOutput, statsSpan);
}
@@ -396,8 +396,8 @@ void IpaVc4::applyCCM(const struct CcmStatus *ccmStatus, ControlList &ctrls)
ccm.enabled = 1;
ccm.ccm.offsets[0] = ccm.ccm.offsets[1] = ccm.ccm.offsets[2] = 0;
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&ccm),
- sizeof(ccm) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&ccm),
+ sizeof(ccm) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_CC_MATRIX, c);
}
@@ -410,8 +410,8 @@ void IpaVc4::applyBlackLevel(const struct BlackLevelStatus *blackLevelStatus, Co
blackLevel.black_level_g = blackLevelStatus->blackLevelG;
blackLevel.black_level_b = blackLevelStatus->blackLevelB;
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&blackLevel),
- sizeof(blackLevel) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&blackLevel),
+ sizeof(blackLevel) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_BLACK_LEVEL, c);
}
@@ -432,8 +432,8 @@ void IpaVc4::applyGamma(const struct ContrastStatus *contrastStatus, ControlList
gamma.y[numGammaPoints - 1] = 65535;
gamma.enabled = 1;
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&gamma),
- sizeof(gamma) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&gamma),
+ sizeof(gamma) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_GAMMA, c);
}
@@ -446,8 +446,8 @@ void IpaVc4::applyGEQ(const struct GeqStatus *geqStatus, ControlList &ctrls)
geq.slope.den = 1000;
geq.slope.num = 1000 * geqStatus->slope;
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&geq),
- sizeof(geq) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&geq),
+ sizeof(geq) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_GEQ, c);
}
@@ -480,12 +480,12 @@ void IpaVc4::applyDenoise(const struct DenoiseStatus *denoiseStatus, ControlList
cdn.enabled = 0;
}
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&denoise),
- sizeof(denoise) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&denoise),
+ sizeof(denoise) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_DENOISE, c);
- c = ControlValue(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&cdn),
- sizeof(cdn) });
+ c = ControlValue(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&cdn),
+ sizeof(cdn) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_CDN, c);
}
@@ -501,8 +501,8 @@ void IpaVc4::applySharpen(const struct SharpenStatus *sharpenStatus, ControlList
sharpen.limit.num = 1000 * sharpenStatus->limit;
sharpen.limit.den = 1000;
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&sharpen),
- sizeof(sharpen) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&sharpen),
+ sizeof(sharpen) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_SHARPEN, c);
}
@@ -513,8 +513,8 @@ void IpaVc4::applyDPC(const struct DpcStatus *dpcStatus, ControlList &ctrls)
dpc.enabled = 1;
dpc.strength = dpcStatus->strength;
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&dpc),
- sizeof(dpc) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&dpc),
+ sizeof(dpc) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_DPC, c);
}
@@ -570,8 +570,8 @@ void IpaVc4::applyLS(const struct AlscStatus *lsStatus, ControlList &ctrls)
resampleTable(grid + 3 * w * h, lsStatus->b, w, h);
}
- ControlValue c(Span<const uint8_t>{ reinterpret_cast<uint8_t *>(&ls),
- sizeof(ls) });
+ ControlValue c(std::span<const uint8_t>{ reinterpret_cast<uint8_t *>(&ls),
+ sizeof(ls) });
ctrls.set(V4L2_CID_USER_BCM2835_ISP_LENS_SHADING, c);
}
@@ -27,9 +27,9 @@
#endif
#include <cxxabi.h>
+#include <span>
#include <sstream>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
/**
@@ -291,7 +291,7 @@ std::string Backtrace::toString(unsigned int skipLevels) const
return std::string();
if (!backtraceText_.empty()) {
- Span<const std::string> trace{ backtraceText_ };
+ std::span<const std::string> trace{ backtraceText_ };
return utils::join(trace.subspan(skipLevels), "");
}
@@ -301,7 +301,7 @@ std::string Backtrace::toString(unsigned int skipLevels) const
if (dwfl.isValid()) {
std::ostringstream msg;
- Span<void *const> trace{ backtrace_ };
+ std::span<void *const> trace{ backtrace_ };
for (const void *ip : trace.subspan(skipLevels)) {
if (ip)
msg << dwfl.stackEntry(ip) << std::endl;
@@ -314,7 +314,7 @@ std::string Backtrace::toString(unsigned int skipLevels) const
#endif
#if HAVE_BACKTRACE
- Span<void *const> trace{ backtrace_ };
+ std::span<void *const> trace{ backtrace_ };
trace = trace.subspan(skipLevels);
char **strings = backtrace_symbols(trace.data(), trace.size());
@@ -301,7 +301,7 @@ off_t File::seek(off_t pos)
* \return The number of bytes read on success, or a negative error code
* otherwise
*/
-ssize_t File::read(const Span<uint8_t> &data)
+ssize_t File::read(std::span<uint8_t> data)
{
if (!isOpen())
return -EINVAL;
@@ -339,7 +339,7 @@ ssize_t File::read(const Span<uint8_t> &data)
* \return The number of bytes written on success, or a negative error code
* otherwise
*/
-ssize_t File::write(const Span<const uint8_t> &data)
+ssize_t File::write(std::span<const uint8_t> data)
{
if (!isOpen())
return -EINVAL;
@@ -384,7 +384,7 @@ ssize_t File::write(const Span<const uint8_t> &data)
*
* \return The mapped memory on success, or an empty span otherwise
*/
-Span<uint8_t> File::map(off_t offset, ssize_t size, File::MapFlags flags)
+std::span<uint8_t> File::map(off_t offset, ssize_t size, File::MapFlags flags)
{
if (!isOpen()) {
error_ = -EBADF;
@@ -433,7 +433,7 @@ bool Thread::wait(utils::duration duration)
*
* \return 0 if all indices are valid, -EINVAL otherwise
*/
-int Thread::setThreadAffinity(const Span<const unsigned int> &cpus)
+int Thread::setThreadAffinity(std::span<const unsigned int> cpus)
{
const unsigned int numCpus = std::thread::hardware_concurrency();
@@ -234,9 +234,9 @@ int ByteStreamBuffer::skip(size_t size)
*/
/**
- * \fn template<typename T> int ByteStreamBuffer::read(const Span<T> &data)
- * \brief Read data from the managed memory buffer into Span \a data
- * \param[out] data Span representing the destination memory
+ * \fn template<typename T> int ByteStreamBuffer::read(std::span<T> data)
+ * \brief Read data from the managed memory buffer into \a data
+ * \param[out] data The destination memory
* \return 0 on success, a negative error code otherwise
* \retval -EACCES attempting to read from a write buffer
* \retval -ENOSPC no more space is available in the managed memory buffer
@@ -265,7 +265,7 @@ int ByteStreamBuffer::skip(size_t size)
*/
/**
- * \fn template<typename T> int ByteStreamBuffer::write(const Span<T> &data)
+ * \fn template<typename T> int ByteStreamBuffer::write(std::span<T> data)
* \brief Write \a data to the managed memory buffer
* \param[in] data The data to write to memory
* \return 0 on success, a negative error code otherwise
@@ -1119,7 +1119,7 @@ const std::set<Stream *> &Camera::streams() const
* \return A CameraConfiguration if the requested roles can be satisfied, or a
* null pointer otherwise.
*/
-std::unique_ptr<CameraConfiguration> Camera::generateConfiguration(Span<const StreamRole> roles)
+std::unique_ptr<CameraConfiguration> Camera::generateConfiguration(std::span<const StreamRole> roles)
{
Private *const d = _d();
@@ -24,7 +24,7 @@ controls:
size: [n]
direction: out
description: |
- Span of the BCM2835 ISP generated statistics for the current frame.
+ The BCM2835 ISP generated statistics for the current frame.
This is sent in the Request metadata if the StatsOutputEnable is set to
true. The statistics struct definition can be found in
@@ -64,7 +64,7 @@ controls:
direction: out
size: [n]
description: |
- Span of the PiSP Frontend ISP generated statistics for the current
+ The PiSP Frontend ISP generated statistics for the current
frame. This is sent in the Request metadata if the StatsOutputEnable is
set to true. The statistics struct definition can be found in
https://github.com/raspberrypi/libpisp/blob/main/src/libpisp/frontend/pisp_statistics.h
@@ -9,10 +9,10 @@
#include <algorithm>
#include <memory>
+#include <span>
#include <vector>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/control_ids.h>
#include <libcamera/controls.h>
@@ -112,7 +112,7 @@ ControlValue::ControlValue()
* \param[in] value Initial value
*
* This function constructs a new instance of ControlValue and stores the \a
- * value inside it. If the type \a T is equivalent to Span<R>, the instance
+ * value inside it. If the type \a T is equivalent to std::span<R>, the instance
* stores an array of values of type \a R. Otherwise the instance stores a
* single value of type \a T. The numElements() and type() are updated to
* reflect the stored value.
@@ -189,7 +189,7 @@ ControlValue &ControlValue::operator=(const ControlValue &other)
* \brief Retrieve the raw data of a control value
* \return The raw data of the control value as a span of uint8_t
*/
-Span<const uint8_t> ControlValue::data() const
+std::span<const uint8_t> ControlValue::data() const
{
std::size_t size = numElements_ * ControlValueSize[type_];
const uint8_t *data = size > sizeof(value_)
@@ -201,9 +201,9 @@ Span<const uint8_t> ControlValue::data() const
/**
* \copydoc ControlValue::data() const
*/
-Span<uint8_t> ControlValue::data()
+std::span<uint8_t> ControlValue::data()
{
- Span<const uint8_t> data = const_cast<const ControlValue *>(this)->data();
+ std::span<const uint8_t> data = const_cast<const ControlValue *>(this)->data();
return { const_cast<uint8_t *>(data.data()), data.size() };
}
@@ -324,12 +324,12 @@ bool ControlValue::operator==(const ControlValue &other) const
* This function returns the contained value as an instance of \a T. If the
* ControlValue instance stores a single value, the type \a T shall match the
* stored value type(). If the instance stores an array of values, the type
- * \a T should be equal to Span<const R>, and the type \a R shall match the
+ * \a T should be equal to std::span<const R>, and the type \a R shall match the
* stored value type(). The behaviour is undefined otherwise.
*
* Note that a ControlValue instance that stores a non-array value is not
* equivalent to an instance that stores an array value containing a single
- * element. The latter shall be accessed through a Span<const R> type, while
+ * element. The latter shall be accessed through a std::span<const R> type, while
* the former shall be accessed through a type \a T corresponding to type().
*
* \return The control value
@@ -341,13 +341,13 @@ bool ControlValue::operator==(const ControlValue &other) const
* \param[in] value The control value
*
* This function stores the \a value in the instance. If the type \a T is
- * equivalent to Span<R>, the instance stores an array of values of type \a R.
+ * equivalent to std::span<R>, the instance stores an array of values of type \a R.
* Otherwise the instance stores a single value of type \a T. The numElements()
* and type() are updated to reflect the stored value.
*
* The entire content of \a value is copied to the instance, no reference to \a
* value or to the data it references is retained. This may be an expensive
- * operation for Span<> values that refer to large arrays.
+ * operation for std::span<> values that refer to large arrays.
*/
void ControlValue::set(ControlType type, bool isArray, const void *data,
@@ -357,7 +357,7 @@ void ControlValue::set(ControlType type, bool isArray, const void *data,
reserve(type, isArray, numElements);
- Span<uint8_t> storage = ControlValue::data();
+ std::span<uint8_t> storage = ControlValue::data();
memcpy(storage.data(), data, storage.size());
}
@@ -613,7 +613,7 @@ ControlInfo::ControlInfo(const ControlValue &min,
* values list respectively. The default value is set to \a def if provided, or
* to the minimum value otherwise.
*/
-ControlInfo::ControlInfo(Span<const ControlValue> values,
+ControlInfo::ControlInfo(std::span<const ControlValue> values,
const ControlValue &def)
{
min_ = values.front();
@@ -1074,7 +1074,7 @@ bool ControlList::contains(unsigned int id) const
*/
/**
- * \fn ControlList::set(const Control<Span<T, Size>> &ctrl, const std::initializer_list<V> &value)
+ * \fn ControlList::set(const Control<std::span<T, Size>> &ctrl, const std::initializer_list<V> &value)
* \copydoc ControlList::set(const Control<T> &ctrl, const V &value)
*/
@@ -501,7 +501,7 @@ int ConverterDW100Module::applyControls(const Stream *stream, const V4L2Request
return 0;
std::vector<uint32_t> map = info.map.getVertexMap();
- auto value = Span<const int32_t>(reinterpret_cast<const int32_t *>(&map[0]), map.size());
+ auto value = std::span<const int32_t>(reinterpret_cast<const int32_t *>(&map[0]), map.size());
ControlList ctrls;
ctrls.set(V4L2_CID_DW100_DEWARPING_16x16_VERTEX_MAP, value);
@@ -10,12 +10,12 @@
#include <algorithm>
#include <assert.h>
#include <cmath>
+#include <span>
#include <stdint.h>
#include <utility>
#include <vector>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/geometry.h>
#include <libcamera/transform.h>
@@ -255,7 +255,7 @@ int dw100VerticesForLength(const int length)
*
* \return 0 on success or -EINVAL if \a coeffs has the wrong size
*/
-int Dw100VertexMap::DewarpParams::setCoefficients(Span<const double> coeffs)
+int Dw100VertexMap::DewarpParams::setCoefficients(std::span<const double> coeffs)
{
size_t s = coeffs.size();
if (!(s == 4 || s == 5 || s == 8 || s == 12))
@@ -515,8 +515,8 @@ void eGL::pushEnv(std::vector<std::string> &shaderEnv, const char *str)
* \return 0 on success, or -EINVAL on compilation failure
*/
int eGL::compileVertexShader(GLuint &shaderId,
- Span<const unsigned char> shaderData,
- Span<const std::string> shaderEnv)
+ std::span<const unsigned char> shaderData,
+ std::span<const std::string> shaderEnv)
{
return compileShader(GL_VERTEX_SHADER, shaderId, shaderData, shaderEnv);
}
@@ -533,8 +533,8 @@ int eGL::compileVertexShader(GLuint &shaderId,
* \return 0 on success, or -EINVAL on compilation failure
*/
int eGL::compileFragmentShader(GLuint &shaderId,
- Span<const unsigned char> shaderData,
- Span<const std::string> shaderEnv)
+ std::span<const unsigned char> shaderData,
+ std::span<const std::string> shaderEnv)
{
return compileShader(GL_FRAGMENT_SHADER, shaderId, shaderData, shaderEnv);
}
@@ -552,8 +552,8 @@ int eGL::compileFragmentShader(GLuint &shaderId,
* \return 0 on success, or -EINVAL on compilation failure
*/
int eGL::compileShader(int shaderType, GLuint &shaderId,
- Span<const unsigned char> shaderData,
- Span<const std::string> shaderEnv)
+ std::span<const unsigned char> shaderData,
+ std::span<const std::string> shaderEnv)
{
GLint success;
size_t i;
@@ -130,7 +130,7 @@ LOG_DEFINE_CATEGORY(Buffer)
* \param[in] planes The frame memory planes
* \param[in] cookie Cookie
*/
-FrameBuffer::Private::Private(Span<const Plane> planes, uint64_t cookie)
+FrameBuffer::Private::Private(std::span<const Plane> planes, uint64_t cookie)
: planes_(planes.begin(), planes.end()), cookie_(cookie),
request_(nullptr), isContiguous_(true)
{
@@ -309,7 +309,7 @@ ino_t fileDescriptorInode(const SharedFD &fd)
* \param[in] planes The frame memory planes
* \param[in] cookie Cookie
*/
-FrameBuffer::FrameBuffer(Span<const Plane> planes, unsigned int cookie)
+FrameBuffer::FrameBuffer(std::span<const Plane> planes, unsigned int cookie)
: FrameBuffer(std::make_unique<Private>(planes, cookie))
{
}
@@ -359,7 +359,7 @@ FrameBuffer::FrameBuffer(std::unique_ptr<Private> d)
* \brief Retrieve the static plane descriptors
* \return Array of plane descriptors
*/
-Span<const FrameBuffer::Plane> FrameBuffer::planes() const
+std::span<const FrameBuffer::Plane> FrameBuffer::planes() const
{
return _d()->planes_;
}
@@ -29,7 +29,7 @@ LOG_DEFINE_CATEGORY(IPADataSerializer)
* Static template class that provides functions for serializing and
* deserializing IPA data.
*
- * \todo Switch to Span instead of byte and fd vector
+ * \todo Switch to std::span instead of byte and fd vector
*
* \todo Harden the vector and map deserializer
*
@@ -300,7 +300,7 @@ bool IPAManager::isSignatureValid([[maybe_unused]] IPAModule *ipa) const
if (!file.open(File::OpenModeFlag::ReadOnly))
return false;
- Span<uint8_t> data = file.map();
+ std::span<uint8_t> data = file.map();
if (data.empty())
return false;
@@ -14,6 +14,7 @@
#include <errno.h>
#include <fcntl.h>
#include <link.h>
+#include <span>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
@@ -21,7 +22,6 @@
#include <libcamera/base/file.h>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
/**
@@ -41,7 +41,7 @@ LOG_DEFINE_CATEGORY(IPAModule)
namespace {
template<typename T>
-typename std::remove_extent_t<T> *elfPointer(Span<const uint8_t> elf,
+typename std::remove_extent_t<T> *elfPointer(std::span<const uint8_t> elf,
off_t offset, size_t objSize)
{
size_t size = offset + objSize;
@@ -53,13 +53,13 @@ typename std::remove_extent_t<T> *elfPointer(Span<const uint8_t> elf,
}
template<typename T>
-typename std::remove_extent_t<T> *elfPointer(Span<const uint8_t> elf,
+typename std::remove_extent_t<T> *elfPointer(std::span<const uint8_t> elf,
off_t offset)
{
return elfPointer<T>(elf, offset, sizeof(T));
}
-int elfVerifyIdent(Span<const uint8_t> elf)
+int elfVerifyIdent(std::span<const uint8_t> elf)
{
const char *e_ident = elfPointer<const char[EI_NIDENT]>(elf, 0);
if (!e_ident)
@@ -85,7 +85,7 @@ int elfVerifyIdent(Span<const uint8_t> elf)
return 0;
}
-const ElfW(Shdr) *elfSection(Span<const uint8_t> elf, const ElfW(Ehdr) *eHdr,
+const ElfW(Shdr) *elfSection(std::span<const uint8_t> elf, const ElfW(Ehdr) *eHdr,
ElfW(Half) idx)
{
if (idx >= eHdr->e_shnum)
@@ -104,7 +104,7 @@ const ElfW(Shdr) *elfSection(Span<const uint8_t> elf, const ElfW(Ehdr) *eHdr,
* \return The memory region storing the symbol on success, or an empty span
* otherwise
*/
-Span<const uint8_t> elfLoadSymbol(Span<const uint8_t> elf, const char *symbol)
+std::span<const uint8_t> elfLoadSymbol(std::span<const uint8_t> elf, const char *symbol)
{
const ElfW(Ehdr) *eHdr = elfPointer<const ElfW(Ehdr)>(elf, 0);
if (!eHdr)
@@ -274,14 +274,14 @@ int IPAModule::loadIPAModuleInfo()
return file.error();
}
- Span<const uint8_t> data = file.map();
+ std::span<const uint8_t> data = file.map();
int ret = elfVerifyIdent(data);
if (ret) {
LOG(IPAModule, Error) << "IPA module is not an ELF file";
return ret;
}
- Span<const uint8_t> info = elfLoadSymbol(data, "ipaModuleInfo");
+ std::span<const uint8_t> info = elfLoadSymbol(data, "ipaModuleInfo");
if (info.size() < sizeof(info_)) {
LOG(IPAModule, Error) << "IPA module has no valid info";
return -EINVAL;
@@ -43,7 +43,7 @@ LOG_DECLARE_CATEGORY(Buffer)
* \typedef MappedBuffer::Plane
* \brief A mapped region of memory accessible to the CPU
*
- * The MappedBuffer::Plane uses the Span interface to describe the mapped memory
+ * The MappedBuffer::Plane uses std::span to describe the mapped memory
* region.
*/
@@ -117,7 +117,7 @@ MappedBuffer::~MappedBuffer()
* \brief Retrieve the mapped planes
*
* This function retrieves the successfully mapped planes stored as a vector
- * of Span<uint8_t> to provide access to the mapped memory.
+ * of std::span<uint8_t> to provide access to the mapped memory.
*
* \return A vector of the mapped planes
*/
@@ -48,11 +48,11 @@ LOG_DEFINE_CATEGORY(Matrix)
*/
/**
- * \fn Matrix::Matrix(const Span<const T, Rows * Cols> data)
+ * \fn Matrix::Matrix(std::span<const T, Rows * Cols> data)
* \brief Construct a matrix from supplied data
* \param[in] data Data from which to construct a matrix
*
- * \a data is a one-dimensional Span and will be turned into a matrix in
+ * \a data is a one-dimensional span and will be turned into a matrix in
* row-major order. The size of \a data must be equal to the product of the
* number of rows and columns of the matrix (Rows x Cols).
*/
@@ -80,17 +80,17 @@ LOG_DEFINE_CATEGORY(Matrix)
*/
/**
- * \fn Span<const T, Cols> Matrix::operator[](size_t i) const
+ * \fn std::span<const T, Cols> Matrix::operator[](size_t i) const
* \brief Index to a row in the matrix
* \param[in] i Index of row to retrieve
*
- * This operator[] returns a Span, which can then be indexed into again with
+ * This operator[] returns a span, which can then be indexed into again with
* another operator[], allowing a convenient m[i][j] to access elements of the
- * matrix. Note that the lifetime of the Span returned by this first-level
+ * matrix. Note that the lifetime of the span returned by this first-level
* operator[] is bound to that of the Matrix itself, so it is not recommended
- * to save the Span that is the result of this operator[].
+ * to save the span that is the result of this operator[].
*
- * \return Row \a i from the matrix, as a Span
+ * \return Row \a i from the matrix, as a span
*/
/**
@@ -164,8 +164,8 @@ LOG_DEFINE_CATEGORY(Matrix)
#ifndef __DOXYGEN__
template<typename T>
-bool matrixInvert(Span<const T> dataIn, Span<T> dataOut, unsigned int dim,
- Span<T> scratchBuffer, Span<unsigned int> swapBuffer)
+bool matrixInvert(std::span<const T> dataIn, std::span<T> dataOut, unsigned int dim,
+ std::span<T> scratchBuffer, std::span<unsigned int> swapBuffer)
{
/*
* Convenience class to access matrix data, providing a row-major (i,j)
@@ -175,7 +175,7 @@ bool matrixInvert(Span<const T> dataIn, Span<T> dataOut, unsigned int dim,
class MatrixAccessor
{
public:
- MatrixAccessor(Span<T> data, Span<unsigned int> swapBuffer, unsigned int rows, unsigned int cols)
+ MatrixAccessor(std::span<T> data, std::span<unsigned int> swapBuffer, unsigned int rows, unsigned int cols)
: data_(data), swap_(swapBuffer), rows_(rows), cols_(cols)
{
ASSERT(swap_.size() == rows);
@@ -200,8 +200,8 @@ bool matrixInvert(Span<const T> dataIn, Span<T> dataOut, unsigned int dim,
return swap_[row] * cols_ + col;
}
- Span<T> data_;
- Span<unsigned int> swap_;
+ std::span<T> data_;
+ std::span<unsigned int> swap_;
unsigned int rows_;
unsigned int cols_;
};
@@ -302,12 +302,12 @@ bool matrixInvert(Span<const T> dataIn, Span<T> dataOut, unsigned int dim,
return true;
}
-template bool matrixInvert<float>(Span<const float> dataIn, Span<float> dataOut,
- unsigned int dim, Span<float> scratchBuffer,
- Span<unsigned int> swapBuffer);
-template bool matrixInvert<double>(Span<const double> data, Span<double> dataOut,
- unsigned int dim, Span<double> scratchBuffer,
- Span<unsigned int> swapBuffer);
+template bool matrixInvert<float>(std::span<const float> dataIn, std::span<float> dataOut,
+ unsigned int dim, std::span<float> scratchBuffer,
+ std::span<unsigned int> swapBuffer);
+template bool matrixInvert<double>(std::span<const double> data, std::span<double> dataOut,
+ unsigned int dim, std::span<double> scratchBuffer,
+ std::span<unsigned int> swapBuffer);
/*
* The value node shall be a list of numerical values. Its size shall be equal
@@ -107,7 +107,7 @@ public:
bool match(DeviceEnumerator *enumerator) override;
std::unique_ptr<CameraConfiguration>
- generateConfiguration(Camera *camera, Span<const StreamRole> roles) override;
+ generateConfiguration(Camera *camera, std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -742,7 +742,7 @@ StreamConfiguration PipelineHandlerISI::generateRawConfiguration(Camera *camera)
std::unique_ptr<CameraConfiguration>
PipelineHandlerISI::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
ISICameraData *data = cameraData(camera);
std::unique_ptr<ISICameraConfiguration> config =
@@ -135,7 +135,7 @@ public:
PipelineHandlerIPU3(CameraManager *manager);
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -390,7 +390,7 @@ PipelineHandlerIPU3::PipelineHandlerIPU3(CameraManager *manager)
}
std::unique_ptr<CameraConfiguration>
-PipelineHandlerIPU3::generateConfiguration(Camera *camera, Span<const StreamRole> roles)
+PipelineHandlerIPU3::generateConfiguration(Camera *camera, std::span<const StreamRole> roles)
{
IPU3CameraData *data = cameraData(camera);
std::unique_ptr<IPU3CameraConfiguration> config =
@@ -679,7 +679,7 @@ int PipelineHandlerIPU3::allocateBuffers(Camera *camera)
auto pushBuffers = [&](const std::vector<std::unique_ptr<FrameBuffer>> &buffers) {
for (const std::unique_ptr<FrameBuffer> &buffer : buffers) {
- Span<const FrameBuffer::Plane> planes = buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer->planes();
buffer->setCookie(ipaBufferId++);
ipaBuffers_.emplace_back(buffer->cookie(),
@@ -679,7 +679,7 @@ public:
PipelineHandlerMaliC55(CameraManager *manager);
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -792,7 +792,7 @@ PipelineHandlerMaliC55::PipelineHandlerMaliC55(CameraManager *manager)
std::unique_ptr<CameraConfiguration>
PipelineHandlerMaliC55::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
MaliC55CameraData *data = cameraData(camera);
std::unique_ptr<CameraConfiguration> config =
@@ -1248,7 +1248,7 @@ int PipelineHandlerMaliC55::allocateBuffers(Camera *camera)
std::queue<FrameBuffer *> &queue,
std::vector<IPABuffer> &ipaBuffers) {
for (const std::unique_ptr<FrameBuffer> &buffer : buffers) {
- Span<const FrameBuffer::Plane> planes = buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer->planes();
buffer->setCookie(ipaBufferId++);
ipaBuffers.emplace_back(buffer->cookie(),
@@ -187,7 +187,7 @@ public:
PipelineHandlerRkISP1(CameraManager *manager);
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -788,7 +788,7 @@ PipelineHandlerRkISP1::PipelineHandlerRkISP1(CameraManager *manager)
std::unique_ptr<CameraConfiguration>
PipelineHandlerRkISP1::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
RkISP1CameraData *data = cameraData(camera);
@@ -1176,7 +1176,7 @@ int PipelineHandlerRkISP1::allocateBuffers(Camera *camera)
auto pushBuffers = [&](const std::vector<std::unique_ptr<FrameBuffer>> &buffers,
std::queue<FrameBuffer *> &queue) {
for (const std::unique_ptr<FrameBuffer> &buffer : buffers) {
- Span<const FrameBuffer::Plane> planes = buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer->planes();
buffer->setCookie(ipaBufferId++);
data->ipaBuffers_.emplace_back(buffer->cookie(),
@@ -56,7 +56,7 @@ const std::map<PixelFormat, uint32_t> formatToMediaBus = {
} /* namespace */
-RkISP1Path::RkISP1Path(const char *name, const Span<const PixelFormat> &formats,
+RkISP1Path::RkISP1Path(const char *name, std::span<const PixelFormat> formats,
const Size &minResolution, const Size &maxResolution)
: name_(name), running_(false), formats_(formats),
minResolution_(minResolution), maxResolution_(maxResolution),
@@ -9,11 +9,11 @@
#include <map>
#include <memory>
+#include <span>
#include <set>
#include <vector>
#include <libcamera/base/signal.h>
-#include <libcamera/base/span.h>
#include <libcamera/camera.h>
#include <libcamera/geometry.h>
@@ -34,7 +34,7 @@ struct V4L2SubdeviceFormat;
class RkISP1Path
{
public:
- RkISP1Path(const char *name, const Span<const PixelFormat> &formats,
+ RkISP1Path(const char *name, std::span<const PixelFormat> formats,
const Size &minResolution, const Size &maxResolution);
bool init(std::shared_ptr<MediaDevice> media);
@@ -72,7 +72,7 @@ private:
const char *name_;
bool running_;
- const Span<const PixelFormat> formats_;
+ const std::span<const PixelFormat> formats_;
std::set<PixelFormat> streamFormats_;
Size minResolution_;
Size maxResolution_;
@@ -388,7 +388,7 @@ V4L2DeviceFormat PipelineHandlerBase::toV4L2DeviceFormat(const V4L2VideoDevice *
}
std::unique_ptr<CameraConfiguration>
-PipelineHandlerBase::generateConfiguration(Camera *camera, Span<const StreamRole> roles)
+PipelineHandlerBase::generateConfiguration(Camera *camera, std::span<const StreamRole> roles)
{
CameraData *data = cameraData(camera);
std::unique_ptr<CameraConfiguration> config =
@@ -903,7 +903,7 @@ void PipelineHandlerBase::mapBuffers(Camera *camera, const BufferMap &buffers, u
* handler and the IPA.
*/
for (const auto &[id, buffer] : buffers) {
- Span<const FrameBuffer::Plane> planes = buffer.buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer.buffer->planes();
bufferIds.emplace_back(mask | id,
std::vector<FrameBuffer::Plane>{ planes.begin(), planes.end() });
@@ -1264,7 +1264,7 @@ void CameraData::metadataReady(const ControlList &metadata)
*notifyGainsUnity_,
static_cast<int32_t>((*colourGains)[0] * *notifyGainsUnity_)
};
- ctrls.set(V4L2_CID_NOTIFY_GAINS, Span<const int32_t>{ gains });
+ ctrls.set(V4L2_CID_NOTIFY_GAINS, std::span<const int32_t>{ gains });
sensor_->setControls(&ctrls);
}
@@ -1322,7 +1322,7 @@ Rectangle CameraData::scaleIspCrop(const Rectangle &ispCrop) const
void CameraData::applyScalerCrop(const ControlList &controls)
{
- const auto &scalerCropRPi = controls.get<Span<const Rectangle>>(controls::rpi::ScalerCrops);
+ const auto &scalerCropRPi = controls.get<std::span<const Rectangle>>(controls::rpi::ScalerCrops);
const auto &scalerCropCore = controls.get<Rectangle>(controls::ScalerCrop);
std::vector<Rectangle> scalerCrops;
@@ -1532,8 +1532,8 @@ void CameraData::fillRequestMetadata(const ControlList &bufferControls, Request
request->_d()->metadata().set(controls::ScalerCrop, crops[0]);
if (crops.size() > 1) {
request->_d()->metadata().set(controls::rpi::ScalerCrops,
- Span<const Rectangle>(crops.data(),
- crops.size()));
+ std::span<const Rectangle>(crops.data(),
+ crops.size()));
}
}
}
@@ -224,7 +224,7 @@ public:
BayerFormat::Packing packingReq);
std::unique_ptr<CameraConfiguration>
- generateConfiguration(Camera *camera, Span<const StreamRole> roles) override;
+ generateConfiguration(Camera *camera, std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, libcamera::Stream *stream,
@@ -2274,7 +2274,7 @@ void PiSPCameraData::prepareCfe()
{
std::scoped_lock<FrontEnd> l(*fe_);
- Span<uint8_t> configBuffer = config.mapped->planes()[0];
+ std::span<uint8_t> configBuffer = config.mapped->planes()[0];
fe_->Prepare(reinterpret_cast<pisp_fe_config *>(configBuffer.data()));
}
@@ -2309,7 +2309,7 @@ void PiSPCameraData::prepareBe(uint32_t bufferId, bool stitchSwapBuffers)
const RPi::BufferObject &config = isp_[Isp::Config].acquireBuffer();
ASSERT(config.mapped);
- Span<uint8_t> configBufferSpan = config.mapped->planes()[0];
+ std::span<uint8_t> configBufferSpan = config.mapped->planes()[0];
pisp_be_tiles_config *configBuffer = reinterpret_cast<pisp_be_tiles_config *>(configBufferSpan.data());
be_->Prepare(configBuffer);
@@ -893,7 +893,7 @@ void Vc4CameraData::setIspControls(const ControlList &controls)
if (ctrls.contains(V4L2_CID_USER_BCM2835_ISP_LENS_SHADING)) {
ControlValue &value =
const_cast<ControlValue &>(ctrls.get(V4L2_CID_USER_BCM2835_ISP_LENS_SHADING));
- Span<uint8_t> s = value.data();
+ std::span<uint8_t> s = value.data();
bcm2835_isp_lens_shading *ls =
reinterpret_cast<bcm2835_isp_lens_shading *>(s.data());
ls->dmabuf = lsTable_.get();
@@ -412,7 +412,7 @@ public:
SimplePipelineHandler(CameraManager *manager);
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -1407,7 +1407,7 @@ SimplePipelineHandler::SimplePipelineHandler(CameraManager *manager)
}
std::unique_ptr<CameraConfiguration>
-SimplePipelineHandler::generateConfiguration(Camera *camera, Span<const StreamRole> roles)
+SimplePipelineHandler::generateConfiguration(Camera *camera, std::span<const StreamRole> roles)
{
SimpleCameraData *data = cameraData(camera);
std::unique_ptr<CameraConfiguration> config =
@@ -84,7 +84,7 @@ public:
PipelineHandlerUVC(CameraManager *manager);
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -235,7 +235,7 @@ PipelineHandlerUVC::PipelineHandlerUVC(CameraManager *manager)
std::unique_ptr<CameraConfiguration>
PipelineHandlerUVC::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
UVCCameraData *data = cameraData(camera);
std::unique_ptr<CameraConfiguration> config =
@@ -830,7 +830,7 @@ void UVCCameraData::addControl(uint32_t cid, const ControlInfo &v4l2Info,
return;
info = ControlInfo{
- Span<const ControlValue>{ values.data(), count },
+ std::span<const ControlValue>{ values.data(), count },
!lcDef ? values.front() : *lcDef,
};
break;
@@ -87,7 +87,7 @@ public:
PipelineHandlerVimc(CameraManager *manager);
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -202,7 +202,7 @@ PipelineHandlerVimc::PipelineHandlerVimc(CameraManager *manager)
std::unique_ptr<CameraConfiguration>
PipelineHandlerVimc::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
VimcCameraData *data = cameraData(camera);
std::unique_ptr<CameraConfiguration> config =
@@ -362,7 +362,7 @@ int PipelineHandlerVimc::start(Camera *camera, [[maybe_unused]] const ControlLis
/* Map the mock IPA buffers to VIMC IPA to exercise IPC code paths. */
std::vector<IPABuffer> ipaBuffers;
for (auto [i, buffer] : utils::enumerate(data->mockIPABufs_)) {
- Span<const FrameBuffer::Plane> planes = buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer->planes();
buffer->setCookie(i + 1);
ipaBuffers.emplace_back(buffer->cookie(),
@@ -78,7 +78,7 @@ public:
~PipelineHandlerVirtual();
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
- Span<const StreamRole> roles) override;
+ std::span<const StreamRole> roles) override;
int configure(Camera *camera, CameraConfiguration *config) override;
int exportFrameBuffers(Camera *camera, Stream *stream,
@@ -141,7 +141,7 @@ void VirtualCameraData::processRequest(Request *request)
fmd.sequence = streamConfig.seq++;
fmd.timestamp = currentTimestamp();
- Span<const FrameBuffer::Plane> planes = buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer->planes();
for (const auto [i, p] : utils::enumerate(planes))
fmd.planes()[i].bytesused = p.length;
@@ -252,7 +252,7 @@ PipelineHandlerVirtual::~PipelineHandlerVirtual()
std::unique_ptr<CameraConfiguration>
PipelineHandlerVirtual::generateConfiguration(Camera *camera,
- Span<const StreamRole> roles)
+ std::span<const StreamRole> roles)
{
VirtualCameraData *data = cameraData(camera);
auto config = std::make_unique<VirtualCameraConfiguration>(data);
@@ -139,8 +139,8 @@ Process::~Process()
* or a negative error code otherwise
*/
int Process::start(const std::string &path,
- Span<const std::string> args,
- Span<const int> fds)
+ std::span<const std::string> args,
+ std::span<const int> fds)
{
if (pid_ > 0)
return -EBUSY;
@@ -35,7 +35,7 @@ namespace libcamera {
* \brief Construct a PubKey from key data
* \param[in] key Key data encoded in DER format
*/
-PubKey::PubKey([[maybe_unused]] Span<const uint8_t> key)
+PubKey::PubKey([[maybe_unused]] std::span<const uint8_t> key)
: valid_(false)
{
#if HAVE_CRYPTO
@@ -87,8 +87,8 @@ PubKey::~PubKey()
*
* \return True if the signature is valid, false otherwise
*/
-bool PubKey::verify([[maybe_unused]] Span<const uint8_t> data,
- [[maybe_unused]] Span<const uint8_t> sig) const
+bool PubKey::verify([[maybe_unused]] std::span<const uint8_t> data,
+ [[maybe_unused]] std::span<const uint8_t> sig) const
{
if (!valid_)
return false;
@@ -73,7 +73,7 @@ public:
std::vector<Size> sizes(unsigned int mbusCode) const override;
Size resolution() const override;
- V4L2SubdeviceFormat getFormat(Span<const unsigned int> mbusCodes,
+ V4L2SubdeviceFormat getFormat(std::span<const unsigned int> mbusCodes,
const Size &size,
const Size maxSize) const override;
int setFormat(V4L2SubdeviceFormat *format,
@@ -91,7 +91,7 @@ public:
Orientation mountingOrientation() const override { return mountingOrientation_; }
const ControlInfoMap &controls() const override;
- ControlList getControls(Span<const uint32_t> ids) override;
+ ControlList getControls(std::span<const uint32_t> ids) override;
int setControls(ControlList *ctrls) override;
const std::vector<controls::draft::TestPatternModeEnum> &
@@ -706,7 +706,7 @@ Size CameraSensorLegacy::resolution() const
}
V4L2SubdeviceFormat
-CameraSensorLegacy::getFormat(Span<const unsigned int> mbusCodes,
+CameraSensorLegacy::getFormat(std::span<const unsigned int> mbusCodes,
const Size &size, Size maxSize) const
{
unsigned int desiredArea = size.width * size.height;
@@ -998,7 +998,7 @@ const ControlInfoMap &CameraSensorLegacy::controls() const
return subdev_->controls();
}
-ControlList CameraSensorLegacy::getControls(Span<const uint32_t> ids)
+ControlList CameraSensorLegacy::getControls(std::span<const uint32_t> ids)
{
return subdev_->getControls(ids);
}
@@ -74,7 +74,7 @@ public:
std::vector<Size> sizes(unsigned int mbusCode) const override;
Size resolution() const override;
- V4L2SubdeviceFormat getFormat(Span<const unsigned int> mbusCodes,
+ V4L2SubdeviceFormat getFormat(std::span<const unsigned int> mbusCodes,
const Size &size,
const Size maxSize) const override;
int setFormat(V4L2SubdeviceFormat *format,
@@ -97,7 +97,7 @@ public:
Orientation mountingOrientation() const override { return mountingOrientation_; }
const ControlInfoMap &controls() const override;
- ControlList getControls(Span<const uint32_t> ids) override;
+ ControlList getControls(std::span<const uint32_t> ids) override;
int setControls(ControlList *ctrls) override;
const std::vector<controls::draft::TestPatternModeEnum> &
@@ -767,7 +767,7 @@ Size CameraSensorRaw::resolution() const
}
V4L2SubdeviceFormat
-CameraSensorRaw::getFormat(Span<const unsigned int> mbusCodes,
+CameraSensorRaw::getFormat(std::span<const unsigned int> mbusCodes,
const Size &size, Size maxSize) const
{
unsigned int desiredArea = size.width * size.height;
@@ -1113,7 +1113,7 @@ const ControlInfoMap &CameraSensorRaw::controls() const
return subdev_->controls();
}
-ControlList CameraSensorRaw::getControls(Span<const uint32_t> ids)
+ControlList CameraSensorRaw::getControls(std::span<const uint32_t> ids)
{
return subdev_->getControls(ids);
}
@@ -32,7 +32,7 @@ namespace libcamera {
* backed by an anonymous file, using the memfd API.
*
* The allocated memory is exposed by the mem() function. If memory allocation
- * fails, the function returns an empty Span. This can be also checked using the
+ * fails, the function returns an empty span. This can be also checked using the
* bool() operator.
*
* The file descriptor for the backing file is exposed as a SharedFD by the fd()
@@ -122,9 +122,9 @@ SharedMem &SharedMem::operator=(SharedMem &&rhs)
*/
/**
- * \fn Span<uint8_t> SharedMem::mem() const
+ * \fn std::span<uint8_t> SharedMem::mem() const
* \brief Retrieve the underlying shared memory
- * \return The memory buffer, or an empty Span if allocation failed
+ * \return The memory buffer, or an empty span if allocation failed
*/
/**
@@ -12,12 +12,12 @@
#include <algorithm>
#include <assert.h>
#include <memory>
+#include <span>
#include <stdlib.h>
#include <string>
#include <tuple>
#include <vector>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
#include <libcamera/formats.h>
@@ -132,9 +132,9 @@ int DebayerEGL::getShaderVariableLocations(void)
int DebayerEGL::initBayerShaders(PixelFormat inputFormat, PixelFormat outputFormat)
{
+ std::span<const unsigned char> fragmentShaderData;
+ std::span<const unsigned char> vertexShaderData;
std::vector<std::string> shaderEnv;
- Span<const unsigned char> fragmentShaderData;
- Span<const unsigned char> vertexShaderData;
GLenum err;
/* Target gles 100 glsl requires "#version x" as first directive in shader */
@@ -178,7 +178,7 @@ void V4L2Device::close()
* \return The control values in a ControlList on success, or an empty list on
* error
*/
-ControlList V4L2Device::getControls(Span<const uint32_t> ids, const V4L2Request *request)
+ControlList V4L2Device::getControls(std::span<const uint32_t> ids, const V4L2Request *request)
{
if (ids.empty())
return {};
@@ -210,7 +210,7 @@ ControlList V4L2Device::getControls(Span<const uint32_t> ids, const V4L2Request
if (info.flags & V4L2_CTRL_FLAG_HAS_PAYLOAD) {
ControlType type;
ControlValue &value = ctrl.second;
- Span<uint8_t> data;
+ std::span<uint8_t> data;
switch (info.type) {
case V4L2_CTRL_TYPE_U8:
@@ -330,7 +330,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)
switch (iter->first->type()) {
case ControlTypeUnsigned16: {
if (value.isArray()) {
- Span<uint8_t> data = value.data();
+ std::span<uint8_t> data = value.data();
v4l2Ctrl.p_u16 = reinterpret_cast<uint16_t *>(data.data());
v4l2Ctrl.size = data.size();
} else {
@@ -342,7 +342,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)
case ControlTypeUnsigned32: {
if (value.isArray()) {
- Span<uint8_t> data = value.data();
+ std::span<uint8_t> data = value.data();
v4l2Ctrl.p_u32 = reinterpret_cast<uint32_t *>(data.data());
v4l2Ctrl.size = data.size();
} else {
@@ -354,7 +354,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)
case ControlTypeInteger32: {
if (value.isArray()) {
- Span<uint8_t> data = value.data();
+ std::span<uint8_t> data = value.data();
v4l2Ctrl.p_u32 = reinterpret_cast<uint32_t *>(data.data());
v4l2Ctrl.size = data.size();
} else {
@@ -376,7 +376,7 @@ int V4L2Device::setControls(ControlList *ctrls, const V4L2Request *request)
return -EINVAL;
}
- Span<uint8_t> data = value.data();
+ std::span<uint8_t> data = value.data();
v4l2Ctrl.p_u8 = data.data();
v4l2Ctrl.size = data.size();
@@ -805,7 +805,7 @@ void V4L2Device::updateControlInfo()
* \param[in] v4l2Ctrls List of V4L2 extended controls as returned by the driver
*/
void V4L2Device::updateControls(ControlList *ctrls,
- Span<const v4l2_ext_control> v4l2Ctrls)
+ std::span<const v4l2_ext_control> v4l2Ctrls)
{
for (const v4l2_ext_control &v4l2Ctrl : v4l2Ctrls) {
const unsigned int id = v4l2Ctrl.id;
@@ -289,7 +289,7 @@ V4L2BufferCache::Entry::Entry(bool free, uint64_t lastUsed, const FrameBuffer &b
bool V4L2BufferCache::Entry::operator==(const FrameBuffer &buffer) const
{
- Span<const FrameBuffer::Plane> planes = buffer.planes();
+ std::span<const FrameBuffer::Plane> planes = buffer.planes();
if (planes_.size() != planes.size())
return false;
@@ -1682,7 +1682,7 @@ int V4L2VideoDevice::queueBuffer(FrameBuffer *buffer, const V4L2Request *request
}
bool multiPlanar = V4L2_TYPE_IS_MULTIPLANAR(buf.type);
- Span<const FrameBuffer::Plane> planes = buffer->planes();
+ std::span<const FrameBuffer::Plane> planes = buffer->planes();
const unsigned int numV4l2Planes = format_.planesCount;
/*
@@ -1915,7 +1915,7 @@ FrameBuffer *V4L2VideoDevice::dequeueBuffer()
}
metadata.sequence -= firstFrame_.value();
- Span<const FrameBuffer::Plane> framebufferPlanes = buffer->planes();
+ std::span<const FrameBuffer::Plane> framebufferPlanes = buffer->planes();
unsigned int numV4l2Planes = multiPlanar ? buf.length : 1;
if (numV4l2Planes != framebufferPlanes.size()) {
@@ -10,11 +10,11 @@
#include <charconv>
#include <errno.h>
+#include <span>
#include <string>
#include <vector>
#include <libcamera/base/log.h>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
/**
@@ -608,7 +608,7 @@ ValueNode *ValueNode::add(std::initializer_list<std::string_view> path,
node = node->add(std::string{ name },
obj ? std::move(obj) : std::move(child));
if (!node) {
- Span<const std::string_view> pathName{ std::data(path), i + 1 };
+ std::span<const std::string_view> pathName{ std::data(path), i + 1 };
LOG(ValueNode, Error)
<< "Failed to populate '"
<< utils::join(pathName, "/") << "'";
@@ -45,7 +45,7 @@ LOG_DEFINE_CATEGORY(Vector)
*/
/**
- * \fn Vector::Vector(const Span<const T, Rows> data)
+ * \fn Vector::Vector(std::span<const T, Rows> data)
* \brief Construct vector from supplied data
* \param data Data from which to construct a vector
*
@@ -114,7 +114,7 @@ int YamlParserContext::yamlRead(void *data, unsigned char *buffer, size_t size,
{
File *file = static_cast<File *>(data);
- Span<unsigned char> buf{ buffer, size };
+ std::span<unsigned char> buf{ buffer, size };
ssize_t ret = file->read(buf);
if (ret < 0)
return 0;
@@ -66,7 +66,7 @@ static ControlValue controlValueMaybeArray(const py::object &ob)
{
if (py::isinstance<py::list>(ob) || py::isinstance<py::tuple>(ob)) {
std::vector<T> vec = ob.cast<std::vector<T>>();
- return ControlValue(Span<const T>(vec));
+ return ControlValue(std::span<const T>(vec));
}
return ControlValue(ob.cast<T>());
@@ -380,7 +380,7 @@ PYBIND11_MODULE(_libcamera, m)
py::arg("planes"), py::arg("cookie") = 0)
.def_property_readonly("metadata", &FrameBuffer::metadata, py::return_value_policy::reference_internal)
.def_property_readonly("planes", [](const FrameBuffer &self) {
- /* Convert from Span<> to std::vector<> */
+ /* Convert from std::span<> to std::vector<> */
/* Note: this creates copies */
auto planes = self.planes();
std::vector<FrameBuffer::Plane> v(planes.begin(), planes.end());
@@ -506,7 +506,7 @@ PYBIND11_MODULE(_libcamera, m)
.def_readonly("sequence", &FrameMetadata::sequence)
.def_readonly("timestamp", &FrameMetadata::timestamp)
.def_property_readonly("planes", [](const FrameMetadata &self) {
- /* Convert from Span<> to std::vector<> */
+ /* Convert from std::span<> to std::vector<> */
/* Note: this creates a copy */
auto planes = self.planes();
std::vector<FrameMetadata::Plane> v(planes.begin(), planes.end());
@@ -200,7 +200,7 @@ void V4L2CameraProxy::setFmtFromConfig(const StreamConfiguration &streamConfig)
const auto &it = controls.find(&controls::FrameDurationLimits);
if (it != controls.end()) {
- Span<const int64_t, 2> duration = it->second.def().get<Span<const int64_t, 2>>();
+ std::span<const int64_t, 2> duration = it->second.def().get<std::span<const int64_t, 2>>();
v4l2TimePerFrame_.numerator = duration[0];
v4l2TimePerFrame_.denominator = 1000000;
@@ -115,7 +115,7 @@ int V4L2CompatManager::getCameraIndex(int fd)
*/
auto cameras = cm_->cameras();
for (auto [index, camera] : utils::enumerate(cameras)) {
- Span<const int64_t> devices = camera->properties()
+ std::span<const int64_t> devices = camera->properties()
.get(properties::SystemDevices)
.value_or(utils::defopt);
@@ -50,14 +50,14 @@ protected:
}
std::array<bool, 2> bools{ true, false };
- value.set(Span<bool>(bools));
+ value.set(std::span<bool>(bools));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeBool) {
cerr << "Control type mismatch after setting to bool array" << endl;
return TestFail;
}
- Span<const bool> boolsResult = value.get<Span<const bool>>();
+ std::span<const bool> boolsResult = value.get<std::span<const bool>>();
if (bools.size() != boolsResult.size() ||
!std::equal(bools.begin(), bools.end(), boolsResult.begin())) {
cerr << "Control value mismatch after setting to bool" << endl;
@@ -90,14 +90,14 @@ protected:
}
std::array<uint8_t, 4> bytes{ 3, 14, 15, 9 };
- value.set(Span<uint8_t>(bytes));
+ value.set(std::span<uint8_t>(bytes));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeByte) {
cerr << "Control type mismatch after setting to uint8_t array" << endl;
return TestFail;
}
- Span<const uint8_t> int8sResult = value.get<Span<const uint8_t>>();
+ std::span<const uint8_t> int8sResult = value.get<std::span<const uint8_t>>();
if (bytes.size() != int8sResult.size() ||
!std::equal(bytes.begin(), bytes.end(), int8sResult.begin())) {
cerr << "Control value mismatch after setting to uint8_t array" << endl;
@@ -130,14 +130,14 @@ protected:
}
std::array<uint16_t, 4> uint16s{ 3, 14, 15, 9 };
- value.set(Span<uint16_t>(uint16s));
+ value.set(std::span<uint16_t>(uint16s));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeUnsigned16) {
cerr << "Control type mismatch after setting to uint16_t array" << endl;
return TestFail;
}
- Span<const uint16_t> uint16sResult = value.get<Span<const uint16_t>>();
+ std::span<const uint16_t> uint16sResult = value.get<std::span<const uint16_t>>();
if (uint16s.size() != uint16sResult.size() ||
!std::equal(uint16s.begin(), uint16s.end(), uint16sResult.begin())) {
cerr << "Control value mismatch after setting to uint16_t array" << endl;
@@ -170,14 +170,14 @@ protected:
}
std::array<uint32_t, 4> uint32s{ 3, 14, 15, 9 };
- value.set(Span<uint32_t>(uint32s));
+ value.set(std::span<uint32_t>(uint32s));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeUnsigned32) {
cerr << "Control type mismatch after setting to uint32_t array" << endl;
return TestFail;
}
- Span<const uint32_t> uint32sResult = value.get<Span<const uint32_t>>();
+ std::span<const uint32_t> uint32sResult = value.get<std::span<const uint32_t>>();
if (uint32s.size() != uint32sResult.size() ||
!std::equal(uint32s.begin(), uint32s.end(), uint32sResult.begin())) {
cerr << "Control value mismatch after setting to uint32_t array" << endl;
@@ -210,14 +210,14 @@ protected:
}
std::array<int32_t, 4> int32s{ 3, 14, 15, 9 };
- value.set(Span<int32_t>(int32s));
+ value.set(std::span<int32_t>(int32s));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeInteger32) {
cerr << "Control type mismatch after setting to int32_t array" << endl;
return TestFail;
}
- Span<const int32_t> int32sResult = value.get<Span<const int32_t>>();
+ std::span<const int32_t> int32sResult = value.get<std::span<const int32_t>>();
if (int32s.size() != int32sResult.size() ||
!std::equal(int32s.begin(), int32s.end(), int32sResult.begin())) {
cerr << "Control value mismatch after setting to int32_t array" << endl;
@@ -250,14 +250,14 @@ protected:
}
std::array<int64_t, 4> int64s{ 3, 14, 15, 9 };
- value.set(Span<int64_t>(int64s));
+ value.set(std::span<int64_t>(int64s));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeInteger64) {
cerr << "Control type mismatch after setting to int64_t array" << endl;
return TestFail;
}
- Span<const int64_t> int64sResult = value.get<Span<const int64_t>>();
+ std::span<const int64_t> int64sResult = value.get<std::span<const int64_t>>();
if (int64s.size() != int64sResult.size() ||
!std::equal(int64s.begin(), int64s.end(), int64sResult.begin())) {
cerr << "Control value mismatch after setting to int64_t array" << endl;
@@ -290,14 +290,14 @@ protected:
}
std::array<float, 3> floats{ 3.141593, 2.718282, 299792458.0 };
- value.set(Span<float>(floats));
+ value.set(std::span<float>(floats));
if (value.isNone() || !value.isArray() ||
value.type() != ControlTypeFloat) {
cerr << "Control type mismatch after setting to float array" << endl;
return TestFail;
}
- Span<const float> floatsResult = value.get<Span<const float>>();
+ std::span<const float> floatsResult = value.get<std::span<const float>>();
if (floats.size() != floatsResult.size() ||
!std::equal(floats.begin(), floats.end(), floatsResult.begin())) {
cerr << "Control value mismatch after setting to float array" << endl;
@@ -280,7 +280,7 @@ protected:
file.setFileName(self());
file.open(File::OpenModeFlag::ReadOnly);
- Span<uint8_t> data = file.map();
+ std::span<uint8_t> data = file.map();
if (data.empty()) {
cerr << "Mapping of complete file failed" << endl;
return TestFail;
@@ -8,11 +8,11 @@
#include <iostream>
#include <map>
#include <optional>
+#include <span>
#include <sstream>
#include <string>
#include <vector>
-#include <libcamera/base/span.h>
#include <libcamera/base/utils.h>
#include <libcamera/geometry.h>
@@ -99,7 +99,7 @@ protected:
return TestFail;
}
- Span<const unsigned int> span{ integers };
+ std::span<const unsigned int> span{ integers };
i = 0;
for (auto [index, value] : utils::enumerate(span)) {
@@ -95,7 +95,7 @@ protected:
uint8_t u8Min = u8.min().get<uint8_t>();
uint8_t u8Max = u8.max().get<uint8_t>();
- Span<const uint8_t> u8Span = ctrls.get(VIVID_CID_U8_4D_ARRAY).get<Span<const uint8_t>>();
+ std::span<const uint8_t> u8Span = ctrls.get(VIVID_CID_U8_4D_ARRAY).get<std::span<const uint8_t>>();
bool valid = std::all_of(u8Span.begin(), u8Span.end(),
[&](uint8_t v) { return v >= u8Min && v <= u8Max; });
if (!valid) {
@@ -112,7 +112,7 @@ protected:
std::array<uint8_t, VIVID_CID_U8_ARRAY_SIZE> u8Values;
std::fill(u8Values.begin(), u8Values.end(), u8.min().get<uint8_t>());
- ctrls.set(VIVID_CID_U8_4D_ARRAY, Span<const uint8_t>(u8Values));
+ ctrls.set(VIVID_CID_U8_4D_ARRAY, std::span<const uint8_t>(u8Values));
int ret = capture_->setControls(&ctrls);
if (ret) {
@@ -117,9 +117,9 @@ class Control(object):
return typ
if self.__size:
- return f"Span<const {typ}, {self.__size}>"
+ return f"std::span<const {typ}, {self.__size}>"
else:
- return f"Span<const {typ}>"
+ return f"std::span<const {typ}>"
@property
def direction(self):
@@ -56,7 +56,7 @@ def find_debug_controls(dir):
files = [p for p in dir.rglob('*') if p.suffix in extensions]
# The following regex was tested on
- # set<Span<type>>( controls::debug::something , static_cast<type>(var) )
+ # set<std::span<type>>( controls::debug::something , static_cast<type>(var) )
# set<>( controls::debug::something , static_cast<type>(var) )
# set( controls::debug::something , static_cast<type> (var) )
exp = re.compile(r'set' # set function
@@ -71,10 +71,10 @@ def find_debug_controls(dir):
if match:
m = FoundMatch(file=p, line=idx, type=match.group(1),
name=match.group(2), whole_match=match.group(0))
- if m.type is not None and m.type.startswith('Span'):
+ if m.type is not None and m.type.startswith('std::span'):
# Simple span type detection treating the last word
# inside <> as type.
- r = re.match(r'Span<(?:.*\s+)(.*)>', m.type)
+ r = re.match(r'std::span<(?:.*\s+)(.*)>', m.type)
m.type = r.group(1)
m.size = '[n]'
matches.append(m)
Now that C++20 is used, convert everything to use `std::span` instead of `libcamera::Span`. This includes the public interfaces as well. Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com> --- Documentation/guides/pipeline-handler.rst | 4 +- include/libcamera/base/file.h | 10 ++-- include/libcamera/base/span.h | 12 ++--- include/libcamera/base/thread.h | 4 +- include/libcamera/camera.h | 6 +-- include/libcamera/controls.h | 22 ++++++--- include/libcamera/framebuffer.h | 10 ++-- .../libcamera/internal/byte_stream_buffer.h | 6 +-- include/libcamera/internal/camera_sensor.h | 6 +-- .../converter/converter_dw100_vertexmap.h | 5 +- include/libcamera/internal/egl.h | 14 +++--- include/libcamera/internal/framebuffer.h | 4 +- .../libcamera/internal/mapped_framebuffer.h | 4 +- include/libcamera/internal/matrix.h | 26 +++++------ include/libcamera/internal/pipeline_handler.h | 2 +- include/libcamera/internal/process.h | 6 +-- include/libcamera/internal/pub_key.h | 7 ++- .../libcamera/internal/shared_mem_object.h | 6 +-- include/libcamera/internal/v4l2_device.h | 6 +-- include/libcamera/internal/vector.h | 4 +- src/android/camera_buffer.h | 11 +++-- src/android/camera_capabilities.cpp | 3 +- src/android/camera_request.cpp | 4 +- src/android/jpeg/encoder.h | 4 +- src/android/jpeg/encoder_jea.cpp | 2 +- src/android/jpeg/encoder_jea.h | 2 +- src/android/jpeg/encoder_libjpeg.cpp | 10 ++-- src/android/jpeg/encoder_libjpeg.h | 12 ++--- src/android/jpeg/exif.cpp | 2 +- src/android/jpeg/exif.h | 7 ++- src/android/jpeg/post_processor_jpeg.cpp | 2 +- src/android/mm/cros_camera_buffer.cpp | 4 +- .../mm/cros_frame_buffer_allocator.cpp | 2 +- src/android/mm/generic_camera_buffer.cpp | 4 +- .../mm/generic_frame_buffer_allocator.cpp | 2 +- src/apps/cam/capture_script.cpp | 12 ++--- src/apps/cam/drm.cpp | 6 +-- src/apps/cam/drm.h | 4 +- src/apps/cam/file_sink.cpp | 2 +- src/apps/cam/sdl_sink.cpp | 4 +- src/apps/cam/sdl_texture.h | 4 +- src/apps/cam/sdl_texture_1plane.cpp | 2 +- src/apps/cam/sdl_texture_1plane.h | 2 +- src/apps/cam/sdl_texture_mjpg.cpp | 4 +- src/apps/cam/sdl_texture_mjpg.h | 4 +- src/apps/cam/sdl_texture_yuv.cpp | 2 +- src/apps/cam/sdl_texture_yuv.h | 2 +- src/apps/common/dng_writer.cpp | 4 +- src/apps/common/image.cpp | 6 +-- src/apps/common/image.h | 10 ++-- src/apps/common/ppm_writer.cpp | 2 +- src/apps/common/ppm_writer.h | 4 +- src/apps/ipa-verify/main.cpp | 4 +- src/apps/lc-compliance/helpers/capture.cpp | 2 +- src/apps/lc-compliance/helpers/capture.h | 3 +- src/gstreamer/gstlibcamera-controls.cpp.in | 4 +- src/gstreamer/gstlibcamera-utils.cpp | 20 ++++---- src/ipa/ipu3/algorithms/af.cpp | 6 +-- src/ipa/ipu3/algorithms/af.h | 2 +- src/ipa/ipu3/algorithms/agc.cpp | 2 +- src/ipa/ipu3/ipu3.cpp | 8 ++-- src/ipa/libipa/awb.h | 2 +- src/ipa/libipa/awb_bayes.cpp | 2 +- src/ipa/libipa/awb_bayes.h | 4 +- src/ipa/libipa/exposure_mode_helper.cpp | 2 +- src/ipa/libipa/exposure_mode_helper.h | 4 +- src/ipa/libipa/histogram.cpp | 4 +- src/ipa/libipa/histogram.h | 8 ++-- src/ipa/libipa/lsc_base.h | 2 - src/ipa/libipa/lsc_polynomial.cpp | 4 +- src/ipa/libipa/lsc_polynomial.h | 7 ++- src/ipa/libipa/lsc_table.h | 1 - src/ipa/libipa/v4l2_params.cpp | 12 ++--- src/ipa/libipa/v4l2_params.h | 18 ++++---- src/ipa/libipa/v4l2_stats.cpp | 8 ++-- src/ipa/libipa/v4l2_stats.h | 13 +++--- src/ipa/mali-c55/algorithms/agc.cpp | 10 ++-- src/ipa/mali-c55/mali-c55.cpp | 4 +- src/ipa/mali-c55/params.h | 2 +- src/ipa/rkisp1/algorithms/agc.cpp | 2 +- src/ipa/rkisp1/algorithms/agc.h | 7 +-- src/ipa/rkisp1/algorithms/lsc.cpp | 3 +- src/ipa/rkisp1/params.cpp | 2 +- src/ipa/rkisp1/params.h | 8 ++-- src/ipa/rkisp1/rkisp1.cpp | 2 +- src/ipa/rpi/cam_helper/cam_helper.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper.h | 6 +-- src/ipa/rpi/cam_helper/cam_helper_imx296.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper_imx477.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper_imx519.cpp | 4 +- src/ipa/rpi/cam_helper/cam_helper_imx708.cpp | 4 +- src/ipa/rpi/cam_helper/md_parser.h | 9 ++-- src/ipa/rpi/cam_helper/md_parser_smia.cpp | 4 +- src/ipa/rpi/common/ipa_base.cpp | 20 ++++---- src/ipa/rpi/common/ipa_base.h | 2 +- src/ipa/rpi/controller/af_algorithm.h | 5 +- src/ipa/rpi/controller/rpi/af.cpp | 2 +- src/ipa/rpi/controller/rpi/af.h | 2 +- src/ipa/rpi/controller/rpi/alsc.cpp | 2 +- src/ipa/rpi/controller/rpi/awb_nn.cpp | 3 +- src/ipa/rpi/pisp/pisp.cpp | 10 ++-- src/ipa/rpi/vc4/vc4.cpp | 46 +++++++++---------- src/libcamera/base/backtrace.cpp | 8 ++-- src/libcamera/base/file.cpp | 6 +-- src/libcamera/base/thread.cpp | 2 +- src/libcamera/byte_stream_buffer.cpp | 8 ++-- src/libcamera/camera.cpp | 2 +- src/libcamera/control_ids_rpi.yaml | 4 +- src/libcamera/control_serializer.cpp | 2 +- src/libcamera/controls.cpp | 22 ++++----- src/libcamera/converter/converter_dw100.cpp | 2 +- .../converter/converter_dw100_vertexmap.cpp | 4 +- src/libcamera/egl.cpp | 12 ++--- src/libcamera/framebuffer.cpp | 6 +-- src/libcamera/ipa_data_serializer.cpp | 2 +- src/libcamera/ipa_manager.cpp | 2 +- src/libcamera/ipa_module.cpp | 16 +++---- src/libcamera/mapped_framebuffer.cpp | 4 +- src/libcamera/matrix.cpp | 36 +++++++-------- src/libcamera/pipeline/imx8-isi/imx8-isi.cpp | 4 +- src/libcamera/pipeline/ipu3/ipu3.cpp | 6 +-- src/libcamera/pipeline/mali-c55/mali-c55.cpp | 6 +-- src/libcamera/pipeline/rkisp1/rkisp1.cpp | 6 +-- src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 2 +- src/libcamera/pipeline/rkisp1/rkisp1_path.h | 6 +-- .../pipeline/rpi/common/pipeline_base.cpp | 12 ++--- .../pipeline/rpi/common/pipeline_base.h | 2 +- src/libcamera/pipeline/rpi/pisp/pisp.cpp | 4 +- src/libcamera/pipeline/rpi/vc4/vc4.cpp | 2 +- src/libcamera/pipeline/simple/simple.cpp | 4 +- src/libcamera/pipeline/uvcvideo/uvcvideo.cpp | 6 +-- src/libcamera/pipeline/vimc/vimc.cpp | 6 +-- src/libcamera/pipeline/virtual/virtual.cpp | 6 +-- src/libcamera/process.cpp | 4 +- src/libcamera/pub_key.cpp | 6 +-- src/libcamera/sensor/camera_sensor_legacy.cpp | 8 ++-- src/libcamera/sensor/camera_sensor_raw.cpp | 8 ++-- src/libcamera/shared_mem_object.cpp | 6 +-- src/libcamera/software_isp/debayer_egl.cpp | 6 +-- src/libcamera/v4l2_device.cpp | 14 +++--- src/libcamera/v4l2_videodevice.cpp | 6 +-- src/libcamera/value_node.cpp | 4 +- src/libcamera/vector.cpp | 2 +- src/libcamera/yaml_parser.cpp | 2 +- src/py/libcamera/py_helpers.cpp | 2 +- src/py/libcamera/py_main.cpp | 4 +- src/v4l2/v4l2_camera_proxy.cpp | 2 +- src/v4l2/v4l2_compat_manager.cpp | 2 +- test/controls/control_value.cpp | 28 +++++------ test/file.cpp | 2 +- test/utils.cpp | 4 +- test/v4l2_videodevice/controls.cpp | 4 +- utils/codegen/controls.py | 4 +- utils/gen-debug-controls.py | 6 +-- 154 files changed, 481 insertions(+), 475 deletions(-)