libcamera/include/libcamera/internal/v4l2_pixelformat.h
Jacopo Mondi b7ca378b65 libcamera: v4l2_pixelformat: Return the list of V4L2 formats
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>
2022-08-03 15:07:20 +02:00

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 */