mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-23 09:04:15 +00:00
v4l2format: Convert between V4L2 and GST video format
This will be needed in the output format negotiation.
This commit is contained in:
parent
2a1836f183
commit
6494d7b056
2 changed files with 46 additions and 0 deletions
|
@ -52,6 +52,22 @@ lookup_v4l2_fmt (guint v4l2_pix_fmt)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct FormatEntry *
|
||||||
|
lookup_gst_fmt (GstVideoFormat gst_fmt)
|
||||||
|
{
|
||||||
|
gint i;
|
||||||
|
struct FormatEntry *ret = NULL;
|
||||||
|
|
||||||
|
for (i = 0; format_map[i].v4l2_pix_fmt; i++) {
|
||||||
|
if (format_map[i].gst_fmt == gst_fmt) {
|
||||||
|
ret = format_map + i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
extrapolate_stride (const GstVideoFormatInfo * finfo, gint plane, gint stride)
|
extrapolate_stride (const GstVideoFormatInfo * finfo, gint plane, gint stride)
|
||||||
{
|
{
|
||||||
|
@ -113,3 +129,27 @@ gst_v4l2_format_to_video_info (struct v4l2_format * fmt,
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gst_v4l2_format_to_video_format (guint32 pix_fmt, GstVideoFormat * out_format)
|
||||||
|
{
|
||||||
|
struct FormatEntry *entry = lookup_v4l2_fmt (pix_fmt);
|
||||||
|
|
||||||
|
if (!entry)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
*out_format = entry->gst_fmt;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
gst_v4l2_format_from_video_format (GstVideoFormat format, guint32 * out_pix_fmt)
|
||||||
|
{
|
||||||
|
struct FormatEntry *entry = lookup_gst_fmt (format);
|
||||||
|
|
||||||
|
if (!entry)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
*out_pix_fmt = entry->v4l2_pix_fmt;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
|
@ -27,4 +27,10 @@
|
||||||
gboolean gst_v4l2_format_to_video_info (struct v4l2_format * fmt,
|
gboolean gst_v4l2_format_to_video_info (struct v4l2_format * fmt,
|
||||||
GstVideoInfo * out_info);
|
GstVideoInfo * out_info);
|
||||||
|
|
||||||
|
gboolean gst_v4l2_format_to_video_format (guint32 pix_fmt,
|
||||||
|
GstVideoFormat * out_format);
|
||||||
|
|
||||||
|
gboolean gst_v4l2_format_from_video_format (GstVideoFormat format,
|
||||||
|
guint32 * out_pix_fmt);
|
||||||
|
|
||||||
#endif /* __GST_V4L2_FORMAT_H__ */
|
#endif /* __GST_V4L2_FORMAT_H__ */
|
||||||
|
|
Loading…
Reference in a new issue