/* Generated by ./xlat/gen.sh from ./xlat/v4l2_control_classes.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(V4L2_CTRL_CLASS_USER) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_USER) && HAVE_DECL_V4L2_CTRL_CLASS_USER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_USER) == (0x00980000), "V4L2_CTRL_CLASS_USER != 0x00980000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_USER 0x00980000
#endif
#if defined(V4L2_CTRL_CLASS_MPEG) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_MPEG) && HAVE_DECL_V4L2_CTRL_CLASS_MPEG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_MPEG) == (0x00990000), "V4L2_CTRL_CLASS_MPEG != 0x00990000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_MPEG 0x00990000
#endif
#if defined(V4L2_CTRL_CLASS_CAMERA) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_CAMERA) && HAVE_DECL_V4L2_CTRL_CLASS_CAMERA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_CAMERA) == (0x009a0000), "V4L2_CTRL_CLASS_CAMERA != 0x009a0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_CAMERA 0x009a0000
#endif
#if defined(V4L2_CTRL_CLASS_FM_TX) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_FM_TX) && HAVE_DECL_V4L2_CTRL_CLASS_FM_TX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_FM_TX) == (0x009b0000), "V4L2_CTRL_CLASS_FM_TX != 0x009b0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_FM_TX 0x009b0000
#endif
#if defined(V4L2_CTRL_CLASS_FLASH) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_FLASH) && HAVE_DECL_V4L2_CTRL_CLASS_FLASH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_FLASH) == (0x009c0000), "V4L2_CTRL_CLASS_FLASH != 0x009c0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_FLASH 0x009c0000
#endif
#if defined(V4L2_CTRL_CLASS_JPEG) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_JPEG) && HAVE_DECL_V4L2_CTRL_CLASS_JPEG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_JPEG) == (0x009d0000), "V4L2_CTRL_CLASS_JPEG != 0x009d0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_JPEG 0x009d0000
#endif
#if defined(V4L2_CTRL_CLASS_IMAGE_SOURCE) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_IMAGE_SOURCE) && HAVE_DECL_V4L2_CTRL_CLASS_IMAGE_SOURCE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_IMAGE_SOURCE) == (0x009e0000), "V4L2_CTRL_CLASS_IMAGE_SOURCE != 0x009e0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_IMAGE_SOURCE 0x009e0000
#endif
#if defined(V4L2_CTRL_CLASS_IMAGE_PROC) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_IMAGE_PROC) && HAVE_DECL_V4L2_CTRL_CLASS_IMAGE_PROC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_IMAGE_PROC) == (0x009f0000), "V4L2_CTRL_CLASS_IMAGE_PROC != 0x009f0000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_IMAGE_PROC 0x009f0000
#endif
#if defined(V4L2_CTRL_CLASS_DV) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_DV) && HAVE_DECL_V4L2_CTRL_CLASS_DV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_DV) == (0x00a00000), "V4L2_CTRL_CLASS_DV != 0x00a00000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_DV 0x00a00000
#endif
#if defined(V4L2_CTRL_CLASS_FM_RX) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_FM_RX) && HAVE_DECL_V4L2_CTRL_CLASS_FM_RX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_FM_RX) == (0x00a10000), "V4L2_CTRL_CLASS_FM_RX != 0x00a10000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_FM_RX 0x00a10000
#endif
#if defined(V4L2_CTRL_CLASS_RF_TUNER) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_RF_TUNER) && HAVE_DECL_V4L2_CTRL_CLASS_RF_TUNER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_RF_TUNER) == (0x00a20000), "V4L2_CTRL_CLASS_RF_TUNER != 0x00a20000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000
#endif
#if defined(V4L2_CTRL_CLASS_DETECT) || (defined(HAVE_DECL_V4L2_CTRL_CLASS_DETECT) && HAVE_DECL_V4L2_CTRL_CLASS_DETECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((V4L2_CTRL_CLASS_DETECT) == (0x00a30000), "V4L2_CTRL_CLASS_DETECT != 0x00a30000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define V4L2_CTRL_CLASS_DETECT 0x00a30000
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

extern const struct xlat v4l2_control_classes[];

# else

#  if !(defined HAVE_M32_MPERS || defined HAVE_MX32_MPERS)
static
#  endif
const struct xlat v4l2_control_classes[] = {

 XLAT(V4L2_CTRL_CLASS_USER),
 XLAT(V4L2_CTRL_CLASS_MPEG),
 XLAT(V4L2_CTRL_CLASS_CAMERA),
 XLAT(V4L2_CTRL_CLASS_FM_TX),
 XLAT(V4L2_CTRL_CLASS_FLASH),
 XLAT(V4L2_CTRL_CLASS_JPEG),
 XLAT(V4L2_CTRL_CLASS_IMAGE_SOURCE),
 XLAT(V4L2_CTRL_CLASS_IMAGE_PROC),
 XLAT(V4L2_CTRL_CLASS_DV),
 XLAT(V4L2_CTRL_CLASS_FM_RX),
 XLAT(V4L2_CTRL_CLASS_RF_TUNER),
 XLAT(V4L2_CTRL_CLASS_DETECT),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
