With support for metadata in the streams API, the v4l2_meta_format structure has been extended with width, height and bytesperline fields. Support them in the V4L2VideoDevice getFormat() and setFormat() functions is the video device is meta capture device and if the pixel format is one of the generic line-based metadata formats. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Signed-off-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
73 lines
1.3 KiB
C++
73 lines
1.3 KiB
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2019, Google Inc.
|
|
* Copyright (C) 2020, Raspberry Pi Ltd
|
|
*
|
|
* V4L2 Pixel Format
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <functional>
|
|
#include <ostream>
|
|
#include <stdint.h>
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
#include <linux/videodev2.h>
|
|
|
|
#include <libcamera/pixel_format.h>
|
|
|
|
namespace libcamera {
|
|
|
|
class V4L2PixelFormat
|
|
{
|
|
public:
|
|
struct Info {
|
|
PixelFormat format;
|
|
const char *description;
|
|
};
|
|
|
|
V4L2PixelFormat()
|
|
: fourcc_(0)
|
|
{
|
|
}
|
|
|
|
explicit V4L2PixelFormat(uint32_t fourcc)
|
|
: fourcc_(fourcc)
|
|
{
|
|
}
|
|
|
|
bool isValid() const { return fourcc_ != 0; }
|
|
uint32_t fourcc() const { return fourcc_; }
|
|
operator uint32_t() const { return fourcc_; }
|
|
|
|
std::string toString() const;
|
|
const char *description() const;
|
|
|
|
PixelFormat toPixelFormat(bool warn = true) const;
|
|
static const std::vector<V4L2PixelFormat> &
|
|
fromPixelFormat(const PixelFormat &pixelFormat);
|
|
|
|
bool isGenericLineBasedMetadata() const;
|
|
|
|
private:
|
|
uint32_t fourcc_;
|
|
};
|
|
|
|
std::ostream &operator<<(std::ostream &out, const V4L2PixelFormat &f);
|
|
|
|
} /* namespace libcamera */
|
|
|
|
namespace std {
|
|
|
|
template<>
|
|
struct hash<libcamera::V4L2PixelFormat> {
|
|
size_t operator()(libcamera::V4L2PixelFormat const &format) const noexcept
|
|
{
|
|
return format.fourcc();
|
|
}
|
|
};
|
|
|
|
} /* namespace std */
|