Esempio n. 1
0
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);
    }
  }
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
  }
}
Esempio n. 4
0
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;
  }
}