mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-17 11:45:25 +00:00
video: parse number of views
Parse the number of views in multiview video buffers.
This commit is contained in:
parent
860782337c
commit
00a30b5cfd
4 changed files with 25 additions and 6 deletions
|
@ -3,19 +3,23 @@ Media Types
|
||||||
|
|
||||||
video/x-raw
|
video/x-raw
|
||||||
|
|
||||||
width, G_TYPE_INT
|
width, G_TYPE_INT, mandatory
|
||||||
The width of the image in pixels.
|
The width of the image in pixels.
|
||||||
|
|
||||||
height, G_TYPE_INT
|
height, G_TYPE_INT, mandatory
|
||||||
The height of the image in pixels
|
The height of the image in pixels
|
||||||
|
|
||||||
framerate, GST_TYPE_FRACTION
|
framerate, GST_TYPE_FRACTION, default 0/1
|
||||||
The framerate of the video 0/1 for variable framerate
|
The framerate of the video 0/1 for variable framerate
|
||||||
|
|
||||||
pixel-aspect-ratio, GST_TYPE_FRACTION
|
pixel-aspect-ratio, GST_TYPE_FRACTION, default 1/1
|
||||||
The pixel aspect ration of the video
|
The pixel aspect ration of the video
|
||||||
|
|
||||||
format, G_TYPE_STRING
|
views, G_TYPE_INT, default 1
|
||||||
|
The number of views for multiview video. Each buffer contains
|
||||||
|
multiple GstMetaVideo buffers that describe each view.
|
||||||
|
|
||||||
|
format, G_TYPE_STRING, mandatory
|
||||||
The format of the video
|
The format of the video
|
||||||
|
|
||||||
* "I420" planar 4:2:0 YUV
|
* "I420" planar 4:2:0 YUV
|
||||||
|
|
|
@ -37,7 +37,11 @@ typedef struct _GstMetaVideoCrop GstMetaVideoCrop;
|
||||||
/**
|
/**
|
||||||
* GstMetaVideo:
|
* GstMetaVideo:
|
||||||
* @meta: parent #GstMeta
|
* @meta: parent #GstMeta
|
||||||
|
* @buffer: the buffer this metadata belongs to
|
||||||
* @flags: additional video flags
|
* @flags: additional video flags
|
||||||
|
* @format: the video format
|
||||||
|
* @width: the video width
|
||||||
|
* @height: the video height
|
||||||
* @n_planes: the number of planes in the image
|
* @n_planes: the number of planes in the image
|
||||||
* @offset: array of offsets for the planes
|
* @offset: array of offsets for the planes
|
||||||
* @stride: array of strides for the planes
|
* @stride: array of strides for the planes
|
||||||
|
|
|
@ -572,6 +572,7 @@ gst_video_info_init (GstVideoInfo * info)
|
||||||
g_return_if_fail (info != NULL);
|
g_return_if_fail (info != NULL);
|
||||||
|
|
||||||
memset (info, 0, sizeof (GstVideoInfo));
|
memset (info, 0, sizeof (GstVideoInfo));
|
||||||
|
info->views = 1;
|
||||||
/* arrange for sensible defaults, e.g. if turned into caps */
|
/* arrange for sensible defaults, e.g. if turned into caps */
|
||||||
info->fps_n = 0;
|
info->fps_n = 0;
|
||||||
info->fps_d = 1;
|
info->fps_d = 1;
|
||||||
|
@ -622,7 +623,7 @@ gst_video_info_from_caps (GstVideoInfo * info, const GstCaps * caps)
|
||||||
GstStructure *structure;
|
GstStructure *structure;
|
||||||
const gchar *s;
|
const gchar *s;
|
||||||
GstVideoFormat format;
|
GstVideoFormat format;
|
||||||
gint width, height;
|
gint width, height, views;
|
||||||
gint fps_n, fps_d;
|
gint fps_n, fps_d;
|
||||||
gboolean interlaced;
|
gboolean interlaced;
|
||||||
gint par_n, par_d;
|
gint par_n, par_d;
|
||||||
|
@ -667,6 +668,11 @@ gst_video_info_from_caps (GstVideoInfo * info, const GstCaps * caps)
|
||||||
else
|
else
|
||||||
info->flags &= ~GST_VIDEO_FLAG_INTERLACED;
|
info->flags &= ~GST_VIDEO_FLAG_INTERLACED;
|
||||||
|
|
||||||
|
if (gst_structure_get_int (structure, "views", &views))
|
||||||
|
info->views = views;
|
||||||
|
else
|
||||||
|
info->views = 1;
|
||||||
|
|
||||||
s = gst_structure_get_string (structure, "color-matrix");
|
s = gst_structure_get_string (structure, "color-matrix");
|
||||||
if (s)
|
if (s)
|
||||||
info->color_matrix = s;
|
info->color_matrix = s;
|
||||||
|
@ -752,6 +758,8 @@ gst_video_info_to_caps (GstVideoInfo * info)
|
||||||
if (info->chroma_site)
|
if (info->chroma_site)
|
||||||
gst_caps_set_simple (caps, "chroma-site", G_TYPE_STRING, info->chroma_site,
|
gst_caps_set_simple (caps, "chroma-site", G_TYPE_STRING, info->chroma_site,
|
||||||
NULL);
|
NULL);
|
||||||
|
if (info->views > 1)
|
||||||
|
gst_caps_set_simple (caps, "views", G_TYPE_INT, info->views, NULL);
|
||||||
|
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
|
@ -329,6 +329,7 @@ typedef enum {
|
||||||
* @flags: additional video flags
|
* @flags: additional video flags
|
||||||
* @width: the width of the video
|
* @width: the width of the video
|
||||||
* @height: the height of the video
|
* @height: the height of the video
|
||||||
|
* @views: the number of views for multiview video
|
||||||
* @size: the default size of one frame
|
* @size: the default size of one frame
|
||||||
* @color_matrix: the color matrix. Possible values are
|
* @color_matrix: the color matrix. Possible values are
|
||||||
* "sdtv" for the standard definition color matrix (as specified in
|
* "sdtv" for the standard definition color matrix (as specified in
|
||||||
|
@ -360,6 +361,7 @@ struct _GstVideoInfo {
|
||||||
gint width;
|
gint width;
|
||||||
gint height;
|
gint height;
|
||||||
gsize size;
|
gsize size;
|
||||||
|
gint views;
|
||||||
|
|
||||||
const gchar *color_matrix;
|
const gchar *color_matrix;
|
||||||
const gchar *chroma_site;
|
const gchar *chroma_site;
|
||||||
|
@ -386,6 +388,7 @@ struct _GstVideoInfo {
|
||||||
#define GST_VIDEO_INFO_WIDTH(i) ((i)->width)
|
#define GST_VIDEO_INFO_WIDTH(i) ((i)->width)
|
||||||
#define GST_VIDEO_INFO_HEIGHT(i) ((i)->height)
|
#define GST_VIDEO_INFO_HEIGHT(i) ((i)->height)
|
||||||
#define GST_VIDEO_INFO_SIZE(i) ((i)->size)
|
#define GST_VIDEO_INFO_SIZE(i) ((i)->size)
|
||||||
|
#define GST_VIDEO_INFO_VIEWS(i) ((i)->views)
|
||||||
#define GST_VIDEO_INFO_PAR_N(i) ((i)->par_n)
|
#define GST_VIDEO_INFO_PAR_N(i) ((i)->par_n)
|
||||||
#define GST_VIDEO_INFO_PAR_D(i) ((i)->par_d)
|
#define GST_VIDEO_INFO_PAR_D(i) ((i)->par_d)
|
||||||
#define GST_VIDEO_INFO_FPS_N(i) ((i)->fps_n)
|
#define GST_VIDEO_INFO_FPS_N(i) ((i)->fps_n)
|
||||||
|
|
Loading…
Reference in a new issue