libcamera: v4l2_pixelformat: Move V4L2PixelFormat to a new file

Move the V4L2PixelFormat class to a new file to prepare for additional
changes that will make it grow. No functional modification is included.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Laurent Pinchart
2020-04-30 03:16:53 +03:00
parent 25a101846d
commit 09044794b4
6 changed files with 154 additions and 100 deletions

View File

@@ -278,83 +278,6 @@ bool V4L2BufferCache::Entry::operator==(const FrameBuffer &buffer) const
return true;
}
/**
* \class V4L2PixelFormat
* \brief V4L2 pixel format FourCC wrapper
*
* The V4L2PixelFormat class describes the pixel format of a V4L2 buffer. It
* wraps the V4L2 numerical FourCC, and shall be used in all APIs that deal with
* V4L2 pixel formats. Its purpose is to prevent unintentional confusion of
* V4L2 and DRM FourCCs in code by catching implicit conversion attempts at
* compile time.
*
* To achieve this goal, construction of a V4L2PixelFormat from an integer value
* is explicit. To retrieve the integer value of a V4L2PixelFormat, both the
* explicit value() and implicit uint32_t conversion operators may be used.
*/
/**
* \fn V4L2PixelFormat::V4L2PixelFormat()
* \brief Construct a V4L2PixelFormat with an invalid format
*
* V4L2PixelFormat instances constructed with the default constructor are
* invalid, calling the isValid() function returns false.
*/
/**
* \fn V4L2PixelFormat::V4L2PixelFormat(uint32_t fourcc)
* \brief Construct a V4L2PixelFormat from a FourCC value
* \param[in] fourcc The pixel format FourCC numerical value
*/
/**
* \fn bool V4L2PixelFormat::isValid() const
* \brief Check if the pixel format is valid
*
* V4L2PixelFormat instances constructed with the default constructor are
* invalid. Instances constructed with a FourCC defined in the V4L2 API are
* valid. The behaviour is undefined otherwise.
*
* \return True if the pixel format is valid, false otherwise
*/
/**
* \fn uint32_t V4L2PixelFormat::fourcc() const
* \brief Retrieve the pixel format FourCC numerical value
* \return The pixel format FourCC numerical value
*/
/**
* \fn V4L2PixelFormat::operator uint32_t() const
* \brief Convert to the pixel format FourCC numerical value
* \return The pixel format FourCC numerical value
*/
/**
* \brief Assemble and return a string describing the pixel format
* \return A string describing the pixel format
*/
std::string V4L2PixelFormat::toString() const
{
if (fourcc_ == 0)
return "<INVALID>";
char ss[8] = { static_cast<char>(fourcc_ & 0x7f),
static_cast<char>((fourcc_ >> 8) & 0x7f),
static_cast<char>((fourcc_ >> 16) & 0x7f),
static_cast<char>((fourcc_ >> 24) & 0x7f) };
for (unsigned int i = 0; i < 4; i++) {
if (!isprint(ss[i]))
ss[i] = '.';
}
if (fourcc_ & (1 << 31))
strcat(ss, "-BE");
return ss;
}
/**
* \class V4L2DeviceFormat
* \brief The V4L2 video device image format and sizes