#define GST_CAT_DEFAULT gstv4l2codecs_debug
GST_DEBUG_CATEGORY_EXTERN (gstv4l2codecs_debug);
+#ifndef V4L2_PIX_FMT_NC12
+#define V4L2_PIX_FMT_NC12 v4l2_fourcc('N', 'C', '1', '2') /* Y/CbCr 4:2:0 (128b cols) */
+#endif
+
typedef struct
{
guint32 v4l2_pix_fmt;
{V4L2_PIX_FMT_SUNXI_TILED_NV12, GST_VIDEO_FORMAT_NV12_32L32, DRM_FORMAT_INVALID, DRM_FORMAT_MOD_INVALID, 0},
{V4L2_PIX_FMT_YUV420M, GST_VIDEO_FORMAT_I420, DRM_FORMAT_INVALID, DRM_FORMAT_MOD_INVALID, 0},
{V4L2_PIX_FMT_YUYV, GST_VIDEO_FORMAT_YUY2, DRM_FORMAT_INVALID, DRM_FORMAT_MOD_INVALID, 0},
+ {V4L2_PIX_FMT_NC12, GST_VIDEO_FORMAT_UNKNOWN, DRM_FORMAT_NV12, DRM_FORMAT_MOD_BROADCOM_SAND128, 2},
};
/* *INDENT-ON* */
#define GST_V4L2_FORMAT_DESC_COUNT (G_N_ELEMENTS (gst_v4l2_descriptions))
n_planes = 1;
}
+ if (drm_fourcc == DRM_FORMAT_NV12
+ && drm_mod == DRM_FORMAT_MOD_BROADCOM_SAND128) {
+ out_drm_info->vinfo.offset[1] = pix_mp->height * 128;
+ out_drm_info->vinfo.stride[0] = pix_mp->plane_fmt[0].bytesperline;
+ out_drm_info->vinfo.stride[1] = pix_mp->plane_fmt[0].bytesperline;
+ return TRUE;
+ }
+
/*
* When single allocation formats are used for planar formats we need to
* extrapolate the per-plane stride. Do this check once to prevent