/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2020, Google Inc.
 *
 * formats.h - Formats
 *
 * This file is auto-generated. Do not edit.
 */

#pragma once

#include <stdint.h>

#include <libcamera/pixel_format.h>

namespace libcamera {

namespace formats {

namespace {

constexpr uint32_t __fourcc(char a, char b, char c, char d)
{
	return (static_cast<uint32_t>(a) <<  0) |
	       (static_cast<uint32_t>(b) <<  8) |
	       (static_cast<uint32_t>(c) << 16) |
	       (static_cast<uint32_t>(d) << 24);
}

constexpr uint64_t __mod(unsigned int vendor, unsigned int mod)
{
	return (static_cast<uint64_t>(vendor) << 56) |
	       (static_cast<uint64_t>(mod) << 0);
}

} /* namespace */

${formats}

} /* namespace formats */

} /* namespace libcamera */
