mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-25 09:35:06 +03:00
Multiple V4L2 formats can be associated with a single PixelFormat. Now that users of V4L2PixelFormat::fromPixelFormat() have been converted to use V4L2VideoDevice::toV4L2PixelFormat(), return the full list of V4L2 formats in order to prepare to match them against the ones supported by the video device. The V4L2 compatibility layer, not having any video device to interact with, is converted to use the first returned format unconditionally. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Paul Elder <paul.elder@ideasonboard.com>
57 lines
1 KiB
C++
57 lines
1 KiB
C++
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2019, Google Inc.
|
|
* Copyright (C) 2020, Raspberry Pi Ltd
|
|
*
|
|
* v4l2_pixelformat.h - V4L2 Pixel Format
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#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() const;
|
|
static const std::vector<V4L2PixelFormat> &
|
|
fromPixelFormat(const PixelFormat &pixelFormat);
|
|
|
|
private:
|
|
uint32_t fourcc_;
|
|
};
|
|
|
|
std::ostream &operator<<(std::ostream &out, const V4L2PixelFormat &f);
|
|
|
|
} /* namespace libcamera */
|