v4l2: Directly map V4L2 formats to DRM formats

As in the long term not all V4L2 formats will have a libgstvideo
implementation, add a dedicated DRM fourcc map. This will be used
to enable memory:DMABuf caps features.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7633>
This commit is contained in:
Nicolas Dufresne 2024-08-15 09:54:26 -04:00 committed by GStreamer Marge Bot
parent 50bb74e0c1
commit 14b5df4850

View file

@ -35,6 +35,7 @@
#endif
#include "ext/videodev2.h"
#include "ext/drm_fourcc.h"
#include "gstv4l2object.h"
#include "gstv4l2tuner.h"
#include "gstv4l2colorbalance.h"
@ -81,146 +82,160 @@ typedef struct
{
guint32 v4l2_format;
GstVideoFormat gst_format;
guint32 drm_fourcc;
guint64 drm_modifier;
GstV4L2FormatFlags flags;
} GstV4L2FormatDesc;
#define MAP_FMT(v4l2_format, gst_fmt) \
V4L2_PIX_FMT_##v4l2_format, GST_VIDEO_FORMAT_##gst_fmt
#define MAP_DRM(drm_fmt, drm_mod) \
DRM_FORMAT_##drm_fmt, DRM_FORMAT_MOD_##drm_mod
#define MAP_DRM_BE(drm_fmt, drm_mod) \
DRM_FORMAT_##drm_fmt | DRM_FORMAT_BIG_ENDIAN, DRM_FORMAT_MOD_##drm_mod
#define MAP_ENC_FMT(v4l2_format, gst_fmt) \
V4L2_PIX_FMT_##v4l2_format, GST_VIDEO_FORMAT_##gst_fmt, DRM_FORMAT_INVALID, DRM_FORMAT_MOD_INVALID
/* *INDENT-OFF* */
#define MAP_FMT(v4l2_format, gst_fmt) V4L2_PIX_FMT_##v4l2_format, GST_VIDEO_FORMAT_##gst_fmt
static const GstV4L2FormatDesc gst_v4l2_formats[] = {
/* RGB formats */
{MAP_FMT (RGB332, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (ARGB555, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (XRGB555, RGB15), GST_V4L2_RAW},
{MAP_FMT (XRGB555X, RGB15), GST_V4L2_RAW},
{MAP_FMT (ARGB555X, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (RGB565, RGB16), GST_V4L2_RAW},
{MAP_FMT (RGB565X, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (BGR666, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (BGR24, BGR), GST_V4L2_RAW},
{MAP_FMT (RGB24, RGB), GST_V4L2_RAW},
{MAP_FMT (ABGR32, BGRA), GST_V4L2_RAW},
{MAP_FMT (XBGR32, BGRx), GST_V4L2_RAW},
{MAP_FMT (BGRA32, ABGR), GST_V4L2_RAW},
{MAP_FMT (BGRX32, xBGR), GST_V4L2_RAW},
{MAP_FMT (RGBA32, RGBA), GST_V4L2_RAW},
{MAP_FMT (RGBX32, RGBx), GST_V4L2_RAW},
{MAP_FMT (ARGB32, ARGB), GST_V4L2_RAW},
{MAP_FMT (XRGB32, xRGB), GST_V4L2_RAW},
{MAP_FMT (RGB332, UNKNOWN), MAP_DRM (RGB332, LINEAR), GST_V4L2_RAW},
{MAP_FMT (ARGB555, UNKNOWN), MAP_DRM (ARGB1555, LINEAR), GST_V4L2_RAW},
{MAP_FMT (XRGB555, RGB15), MAP_DRM (XRGB1555, LINEAR), GST_V4L2_RAW},
{MAP_FMT (XRGB555X,UNKNOWN), MAP_DRM_BE (XRGB1555, LINEAR), GST_V4L2_RAW},
{MAP_FMT (ARGB555X, UNKNOWN), MAP_DRM_BE (ARGB1555, LINEAR), GST_V4L2_RAW},
{MAP_FMT (RGB565, RGB16), MAP_DRM (RGB565, LINEAR), GST_V4L2_RAW},
{MAP_FMT (RGB565X,UNKNOWN), MAP_DRM_BE (RGB565, LINEAR), GST_V4L2_RAW},
{MAP_FMT (BGR666, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (BGR24, BGR), MAP_DRM (RGB888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (RGB24, RGB), MAP_DRM (BGR888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (ABGR32, BGRA), MAP_DRM (ARGB8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (XBGR32, BGRx), MAP_DRM (XRGB8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (BGRA32, ABGR), MAP_DRM (RGBA8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (BGRX32, xBGR), MAP_DRM (RGBX8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (RGBA32, RGBA), MAP_DRM (ABGR8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (RGBX32, RGBx), MAP_DRM (XBGR8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (ARGB32, ARGB), MAP_DRM (BGRA8888, LINEAR), GST_V4L2_RAW},
{MAP_FMT (XRGB32, xRGB), MAP_DRM (BGRX8888, LINEAR), GST_V4L2_RAW},
/* Deprecated Packed RGB Image Formats (alpha ambiguity) */
{MAP_FMT (RGB444, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (RGB555, RGB15), GST_V4L2_RAW},
{MAP_FMT (RGB555X, BGR15), GST_V4L2_RAW},
{MAP_FMT (BGR32, BGRx), GST_V4L2_RAW},
{MAP_FMT (BGR32, BGRA), GST_V4L2_RAW},
{MAP_FMT (RGB32, xRGB), GST_V4L2_RAW},
{MAP_FMT (RGB32, ARGB), GST_V4L2_RAW},
{MAP_FMT (RGB444, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (RGB555, RGB15), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (RGB555X, BGR15), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (BGR32, BGRx), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (BGR32, BGRA), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (RGB32, xRGB), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (RGB32, ARGB), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
/* Grey formats */
{MAP_FMT (GREY, GRAY8), GST_V4L2_RAW},
{MAP_FMT (Y4, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (Y6, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (Y10, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (Y12, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (Y16, GRAY16_LE), GST_V4L2_RAW},
{MAP_FMT (Y16_BE, GRAY16_BE), GST_V4L2_RAW},
{MAP_FMT (Y10BPACK, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (GREY, GRAY8), MAP_DRM (R8, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y4, UNKNOWN), MAP_DRM (R4, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y6, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (Y10, UNKNOWN), MAP_DRM (R10, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y12, UNKNOWN), MAP_DRM (R12, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y16, GRAY16_LE), MAP_DRM (R16, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y16_BE, GRAY16_BE), MAP_DRM_BE (R16, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y10BPACK, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
/* Palette formats */
{MAP_FMT (PAL8, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (PAL8, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
/* Chrominance formats */
{MAP_FMT (UV8, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (UV8, UNKNOWN), MAP_DRM (GR88, LINEAR), GST_V4L2_RAW},
/* Luminance+Chrominance formats */
{MAP_FMT (YVU410, YVU9), GST_V4L2_RAW},
{MAP_FMT (YVU420M, YV12), GST_V4L2_RAW},
{MAP_FMT (YVU420, YV12), GST_V4L2_RAW},
{MAP_FMT (YUYV, YUY2), GST_V4L2_RAW},
{MAP_FMT (YYUV, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YVYU, YVYU), GST_V4L2_RAW},
{MAP_FMT (UYVY, UYVY), GST_V4L2_RAW},
{MAP_FMT (VYUY, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV422M, Y42B), GST_V4L2_RAW},
{MAP_FMT (YUV422P, Y42B), GST_V4L2_RAW},
{MAP_FMT (YUV411P, Y41B), GST_V4L2_RAW},
{MAP_FMT (Y41P, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV444, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV555, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV565, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV32, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV410, YUV9), GST_V4L2_RAW},
{MAP_FMT (YUV420M, I420), GST_V4L2_RAW},
{MAP_FMT (YUV420, I420), GST_V4L2_RAW},
{MAP_FMT (HI240, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (M420, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (YUV410, YUV9), MAP_DRM (YUV410, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YVU410, YVU9), MAP_DRM (YVU410, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YUV420M, I420), MAP_DRM (YUV420, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YUV420, I420), MAP_DRM (YUV420, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YVU420M, YV12), MAP_DRM (YVU420, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YVU420, YV12), MAP_DRM (YVU420, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YUYV, YUY2), MAP_DRM (YUYV, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YYUV, UNKNOWN), MAP_DRM (YVYU, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YVYU, YVYU), MAP_DRM (YVYU, LINEAR), GST_V4L2_RAW},
{MAP_FMT (UYVY, UYVY), MAP_DRM (UYVY, LINEAR), GST_V4L2_RAW},
{MAP_FMT (VYUY, UNKNOWN), MAP_DRM (VYUY, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YUV422M, Y42B), MAP_DRM (YUV422, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YUV422P, Y42B), MAP_DRM (YUV422, LINEAR), GST_V4L2_RAW},
{MAP_FMT (YUV411P, Y41B), MAP_DRM (YUV411, LINEAR), GST_V4L2_RAW},
{MAP_FMT (Y41P, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (YUV444, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (YUV555, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (YUV565, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (YUV32, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (HI240, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (M420, UNKNOWN), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
/* two planes -- one Y, one Cr + Cb interleaved */
{MAP_FMT (NV12M, NV12), GST_V4L2_RAW},
{MAP_FMT (NV12, NV12), GST_V4L2_RAW},
{MAP_FMT (NV12MT, NV12_64Z32), GST_V4L2_RAW},
{MAP_FMT (NV12MT_16X16, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (NV12_16L16, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (NV12M_8L128, NV12_8L128), GST_V4L2_RAW},
{MAP_FMT (NV12M_10BE_8L128, NV12_10BE_8L128), GST_V4L2_RAW},
{MAP_FMT (NV21M, NV21), GST_V4L2_RAW},
{MAP_FMT (NV21, NV21), GST_V4L2_RAW},
{MAP_FMT (NV16M, NV16), GST_V4L2_RAW},
{MAP_FMT (NV16, NV16), GST_V4L2_RAW},
{MAP_FMT (NV61M, NV61), GST_V4L2_RAW},
{MAP_FMT (NV61, NV61), GST_V4L2_RAW},
{MAP_FMT (NV24, NV24), GST_V4L2_RAW},
{MAP_FMT (NV42, UNKNOWN), GST_V4L2_RAW},
{MAP_FMT (MM21, NV12_16L32S), GST_V4L2_RAW},
{MAP_FMT (NV12M, NV12), MAP_DRM (NV12, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV12, NV12), MAP_DRM (NV12, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV12MT, NV12_64Z32), MAP_DRM (NV12, SAMSUNG_64_32_TILE), GST_V4L2_RAW},
{MAP_FMT (NV12MT_16X16, UNKNOWN), MAP_DRM (NV12, SAMSUNG_16_16_TILE), GST_V4L2_RAW},
{MAP_FMT (NV12_16L16, UNKNOWN), MAP_DRM (NV12, SAMSUNG_16_16_TILE), GST_V4L2_RAW},
{MAP_FMT (NV12M_8L128, NV12_8L128), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (NV12M_10BE_8L128, NV12_10BE_8L128), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
{MAP_FMT (NV21M, NV21), MAP_DRM (NV21, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV21, NV21), MAP_DRM (NV21, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV16M, NV16), MAP_DRM (NV16, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV16, NV16), MAP_DRM (NV16, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV61M, NV61), MAP_DRM (NV61, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV61, NV61), MAP_DRM (NV61, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV24, NV24), MAP_DRM (NV24, LINEAR), GST_V4L2_RAW},
{MAP_FMT (NV42, UNKNOWN), MAP_DRM (NV42, LINEAR), GST_V4L2_RAW},
{MAP_FMT (MM21, NV12_16L32S), MAP_DRM (INVALID, INVALID), GST_V4L2_RAW},
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
{MAP_FMT (SBGGR8, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGBRG8, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGRBG8, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SRGGB8, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SBGGR10, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGBRG10, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGRBG10, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SRGGB10, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SBGGR12, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGBRG12, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGRBG12, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SRGGB12, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SBGGR14, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGBRG14, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGRBG14, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SRGGB14, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SBGGR16, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGBRG16, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SGRBG16, ENCODED), GST_V4L2_BAYER},
{MAP_FMT (SRGGB16, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SBGGR8, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGBRG8, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGRBG8, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SRGGB8, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SBGGR10, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGBRG10, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGRBG10, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SRGGB10, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SBGGR12, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGBRG12, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGRBG12, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SRGGB12, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SBGGR14, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGBRG14, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGRBG14, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SRGGB14, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SBGGR16, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGBRG16, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SGRBG16, ENCODED), GST_V4L2_BAYER},
{MAP_ENC_FMT (SRGGB16, ENCODED), GST_V4L2_BAYER},
/* compressed formats */
{MAP_FMT (MJPEG, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (JPEG, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (PJPG, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (DV, ENCODED), GST_V4L2_TRANSPORT},
{MAP_FMT (MPEG, ENCODED), GST_V4L2_TRANSPORT},
{MAP_FMT (FWHT, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (H264, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (H264_NO_SC, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (H264_MVC, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (HEVC, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (H263, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (MPEG1, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (MPEG2, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (MPEG4, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (XVID, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (VC1_ANNEX_G, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (VC1_ANNEX_L, ENCODED), GST_V4L2_CODEC},
{MAP_FMT (VP8, ENCODED), GST_V4L2_CODEC | GST_V4L2_NO_PARSE},
{MAP_FMT (VP9, ENCODED), GST_V4L2_CODEC | GST_V4L2_NO_PARSE},
{MAP_ENC_FMT (MJPEG, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (JPEG, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (PJPG, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (DV, ENCODED), GST_V4L2_TRANSPORT},
{MAP_ENC_FMT (MPEG, ENCODED), GST_V4L2_TRANSPORT},
{MAP_ENC_FMT (FWHT, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (H264, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (H264_NO_SC, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (H264_MVC, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (HEVC, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (H263, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (MPEG1, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (MPEG2, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (MPEG4, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (XVID, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (VC1_ANNEX_G, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (VC1_ANNEX_L, ENCODED), GST_V4L2_CODEC},
{MAP_ENC_FMT (VP8, ENCODED), GST_V4L2_CODEC | GST_V4L2_NO_PARSE},
{MAP_ENC_FMT (VP9, ENCODED), GST_V4L2_CODEC | GST_V4L2_NO_PARSE},
/* Vendor-specific formats */
{MAP_FMT (WNVA, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_FMT (SN9C10X, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_FMT (PWC1, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_FMT (PWC2, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_ENC_FMT (WNVA, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_ENC_FMT (SN9C10X, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_ENC_FMT (PWC1, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
{MAP_ENC_FMT (PWC2, ENCODED), GST_V4L2_CODEC | GST_V4L2_RESOLUTION_AND_RATE},
};
#undef MAP_FMT
/* *INDENT-ON* */