static void gst_video_parse_set_buffer_flags (GstRawParse * rp, GstBuffer * buffer) { GstVideoParse *vp = GST_VIDEO_PARSE (rp); if (vp->interlaced) { if (vp->top_field_first) { GST_BUFFER_FLAG_SET (buffer, GST_VIDEO_BUFFER_FLAG_TFF); } else { GST_BUFFER_FLAG_UNSET (buffer, GST_VIDEO_BUFFER_FLAG_TFF); } } }
static void gst_video_parse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstVideoParse *vp = GST_VIDEO_PARSE (object); g_return_if_fail (!gst_raw_parse_is_negotiated (GST_RAW_PARSE (vp))); switch (prop_id) { case PROP_FORMAT: vp->format = g_value_get_enum (value); break; case PROP_WIDTH: vp->width = g_value_get_int (value); break; case PROP_HEIGHT: vp->height = g_value_get_int (value); break; case PROP_FRAMERATE: gst_raw_parse_set_fps (GST_RAW_PARSE (vp), gst_value_get_fraction_numerator (value), gst_value_get_fraction_denominator (value)); break; case PROP_PAR: vp->par_n = gst_value_get_fraction_numerator (value); vp->par_d = gst_value_get_fraction_denominator (value); break; case PROP_INTERLACED: vp->interlaced = g_value_get_boolean (value); break; case PROP_TOP_FIELD_FIRST: vp->top_field_first = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } gst_video_parse_update_frame_size (vp); }
static void gst_video_parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstVideoParse *vp = GST_VIDEO_PARSE (object); switch (prop_id) { case PROP_FORMAT: g_value_set_enum (value, vp->format); break; case PROP_WIDTH: g_value_set_int (value, vp->width); break; case PROP_HEIGHT: g_value_set_int (value, vp->height); break; case PROP_FRAMERATE:{ gint fps_n, fps_d; gst_raw_parse_get_fps (GST_RAW_PARSE (vp), &fps_n, &fps_d); gst_value_set_fraction (value, fps_n, fps_d); break; } case PROP_PAR: gst_value_set_fraction (value, vp->par_n, vp->par_d); break; case PROP_INTERLACED: g_value_set_boolean (value, vp->interlaced); break; case PROP_TOP_FIELD_FIRST: g_value_set_boolean (value, vp->top_field_first); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static GstCaps * gst_video_parse_get_caps (GstRawParse * rp) { GstVideoParse *vp = GST_VIDEO_PARSE (rp); GstVideoInfo info; GstCaps *caps; gint fps_n, fps_d; gst_raw_parse_get_fps (rp, &fps_n, &fps_d); gst_video_info_init (&info); gst_video_info_set_format (&info, vp->format, vp->width, vp->height); info.fps_n = fps_n; info.fps_d = fps_d; info.par_n = vp->par_n; info.par_d = vp->par_d; info.interlace_mode = vp->interlaced ? GST_VIDEO_INTERLACE_MODE_INTERLEAVED : GST_VIDEO_INTERLACE_MODE_PROGRESSIVE; caps = gst_video_info_to_caps (&info); return caps; }
static void gst_video_parse_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec) { GstVideoParse *vp = GST_VIDEO_PARSE (object); switch (prop_id) { case PROP_FORMAT:{ GstVideoFormat format; g_object_get (G_OBJECT (vp->rawvideoparse), "format", &format, NULL); g_value_set_enum (value, format); break; } case PROP_WIDTH:{ gint width; g_object_get (G_OBJECT (vp->rawvideoparse), "width", &width, NULL); g_value_set_int (value, width); break; } case PROP_HEIGHT:{ gint height; g_object_get (G_OBJECT (vp->rawvideoparse), "height", &height, NULL); g_value_set_int (value, height); break; } case PROP_FRAMERATE:{ gint fps_n, fps_d; g_object_get (G_OBJECT (vp->rawvideoparse), "framerate", &fps_n, &fps_d, NULL); gst_value_set_fraction (value, fps_n, fps_d); break; } case PROP_PAR:{ gint par_n, par_d; g_object_get (G_OBJECT (vp->rawvideoparse), "pixel-aspect-ratio", &par_n, &par_d, NULL); gst_value_set_fraction (value, par_n, par_d); break; } case PROP_INTERLACED:{ gboolean interlaced; g_object_get (G_OBJECT (vp->rawvideoparse), "interlaced", &interlaced, NULL); g_value_set_boolean (value, interlaced); break; } case PROP_TOP_FIELD_FIRST:{ gboolean top_field_first; g_object_get (G_OBJECT (vp->rawvideoparse), "top-field-first", &top_field_first, NULL); g_value_set_boolean (value, top_field_first); break; } case PROP_STRIDES:{ GValueArray *array; g_object_get (G_OBJECT (vp->rawvideoparse), "plane-strides", &array, NULL); g_value_take_string (value, gst_video_parse_int_valarray_to_string (array)); break; } case PROP_OFFSETS:{ GValueArray *array; g_object_get (G_OBJECT (vp->rawvideoparse), "plane-offsets", &array, NULL); g_value_take_string (value, gst_video_parse_int_valarray_to_string (array)); break; } case PROP_FRAMESIZE:{ guint frame_stride; g_object_get (G_OBJECT (vp->rawvideoparse), "frame-stride", &frame_stride, NULL); g_value_set_uint (value, frame_stride); break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void gst_video_parse_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec) { GstVideoParse *vp = GST_VIDEO_PARSE (object); switch (prop_id) { case PROP_FORMAT: g_object_set (G_OBJECT (vp->rawvideoparse), "format", g_value_get_enum (value), NULL); break; case PROP_WIDTH: g_object_set (G_OBJECT (vp->rawvideoparse), "width", g_value_get_int (value), NULL); break; case PROP_HEIGHT: g_object_set (G_OBJECT (vp->rawvideoparse), "height", g_value_get_int (value), NULL); break; case PROP_FRAMERATE: g_object_set (G_OBJECT (vp->rawvideoparse), "framerate", gst_value_get_fraction_numerator (value), gst_value_get_fraction_denominator (value), NULL); break; case PROP_PAR: g_object_set (G_OBJECT (vp->rawvideoparse), "pixel-aspect-ratio", gst_value_get_fraction_numerator (value), gst_value_get_fraction_denominator (value), NULL); break; case PROP_INTERLACED: g_object_set (G_OBJECT (vp->rawvideoparse), "interlaced", g_value_get_boolean (value), NULL); break; case PROP_TOP_FIELD_FIRST: g_object_set (G_OBJECT (vp->rawvideoparse), "top-field-first", g_value_get_boolean (value), NULL); break; case PROP_STRIDES:{ GValueArray *valarray = gst_video_parse_int_valarray_from_string (g_value_get_string (value)); if (valarray != NULL) { g_object_set (G_OBJECT (vp->rawvideoparse), "plane-strides", valarray, NULL); g_value_array_free (valarray); } else { GST_WARNING_OBJECT (vp, "failed to deserialize given strides"); } break; } case PROP_OFFSETS:{ GValueArray *valarray = gst_video_parse_int_valarray_from_string (g_value_get_string (value)); if (valarray != NULL) { g_object_set (G_OBJECT (vp->rawvideoparse), "plane-offsets", valarray, NULL); g_value_array_free (valarray); } else { GST_WARNING_OBJECT (vp, "failed to deserialize given offsets"); } break; } case PROP_FRAMESIZE: g_object_set (G_OBJECT (vp->rawvideoparse), "frame-stride", g_value_get_uint (value), NULL); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }