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

#ifdef IN_MPERS

# error static const struct xlat v4l2_fields in mpers mode

#else

static
const struct xlat v4l2_fields[] = {
#if defined(V4L2_FIELD_ANY) || (defined(HAVE_DECL_V4L2_FIELD_ANY) && HAVE_DECL_V4L2_FIELD_ANY)
  XLAT(V4L2_FIELD_ANY),
#endif
#if defined(V4L2_FIELD_NONE) || (defined(HAVE_DECL_V4L2_FIELD_NONE) && HAVE_DECL_V4L2_FIELD_NONE)
  XLAT(V4L2_FIELD_NONE),
#endif
#if defined(V4L2_FIELD_TOP) || (defined(HAVE_DECL_V4L2_FIELD_TOP) && HAVE_DECL_V4L2_FIELD_TOP)
  XLAT(V4L2_FIELD_TOP),
#endif
#if defined(V4L2_FIELD_BOTTOM) || (defined(HAVE_DECL_V4L2_FIELD_BOTTOM) && HAVE_DECL_V4L2_FIELD_BOTTOM)
  XLAT(V4L2_FIELD_BOTTOM),
#endif
#if defined(V4L2_FIELD_INTERLACED) || (defined(HAVE_DECL_V4L2_FIELD_INTERLACED) && HAVE_DECL_V4L2_FIELD_INTERLACED)
  XLAT(V4L2_FIELD_INTERLACED),
#endif
#if defined(V4L2_FIELD_SEQ_TB) || (defined(HAVE_DECL_V4L2_FIELD_SEQ_TB) && HAVE_DECL_V4L2_FIELD_SEQ_TB)
  XLAT(V4L2_FIELD_SEQ_TB),
#endif
#if defined(V4L2_FIELD_SEQ_BT) || (defined(HAVE_DECL_V4L2_FIELD_SEQ_BT) && HAVE_DECL_V4L2_FIELD_SEQ_BT)
  XLAT(V4L2_FIELD_SEQ_BT),
#endif
#if defined(V4L2_FIELD_ALTERNATE) || (defined(HAVE_DECL_V4L2_FIELD_ALTERNATE) && HAVE_DECL_V4L2_FIELD_ALTERNATE)
  XLAT(V4L2_FIELD_ALTERNATE),
#endif
#if defined(V4L2_FIELD_INTERLACED_TB) || (defined(HAVE_DECL_V4L2_FIELD_INTERLACED_TB) && HAVE_DECL_V4L2_FIELD_INTERLACED_TB)
  XLAT(V4L2_FIELD_INTERLACED_TB),
#endif
#if defined(V4L2_FIELD_INTERLACED_BT) || (defined(HAVE_DECL_V4L2_FIELD_INTERLACED_BT) && HAVE_DECL_V4L2_FIELD_INTERLACED_BT)
  XLAT(V4L2_FIELD_INTERLACED_BT),
#endif
 XLAT_END
};

#endif /* !IN_MPERS */
