Ejemplo n.º 1
0
static void
gst_video_scale_base_init (gpointer g_class)
{
  GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);

  gst_element_class_set_details_simple (element_class,
      "Video scaler", "Filter/Converter/Video/Scaler",
      "Resizes video", "Wim Taymans <*****@*****.**>");

  gst_element_class_add_pad_template (element_class,
      gst_video_scale_sink_template_factory ());
  gst_element_class_add_pad_template (element_class,
      gst_video_scale_src_template_factory ());
}
static void
gst_video_scale_class_init (GstVideoScaleClass * klass)
{
    GObjectClass *gobject_class = (GObjectClass *) klass;
    GstElementClass *element_class = (GstElementClass *) klass;
    GstBaseTransformClass *trans_class = (GstBaseTransformClass *) klass;
    GstVideoFilterClass *filter_class = (GstVideoFilterClass *) klass;

    gobject_class->finalize = (GObjectFinalizeFunc) gst_video_scale_finalize;
    gobject_class->set_property = gst_video_scale_set_property;
    gobject_class->get_property = gst_video_scale_get_property;

    g_object_class_install_property (gobject_class, PROP_METHOD,
                                     g_param_spec_enum ("method", "method", "method",
                                             GST_TYPE_VIDEO_SCALE_METHOD, DEFAULT_PROP_METHOD,
                                             G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

    g_object_class_install_property (gobject_class, PROP_ADD_BORDERS,
                                     g_param_spec_boolean ("add-borders", "Add Borders",
                                             "Add black borders if necessary to keep the display aspect ratio",
                                             DEFAULT_PROP_ADD_BORDERS,
                                             G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

    g_object_class_install_property (gobject_class, PROP_SHARPNESS,
                                     g_param_spec_double ("sharpness", "Sharpness",
                                             "Sharpness of filter", 0.5, 1.5, DEFAULT_PROP_SHARPNESS,
                                             G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

    g_object_class_install_property (gobject_class, PROP_SHARPEN,
                                     g_param_spec_double ("sharpen", "Sharpen",
                                             "Sharpening", 0.0, 1.0, DEFAULT_PROP_SHARPEN,
                                             G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

    g_object_class_install_property (gobject_class, PROP_DITHER,
                                     g_param_spec_boolean ("dither", "Dither",
                                             "Add dither (only used for Lanczos method)",
                                             DEFAULT_PROP_DITHER,
                                             G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

#if 0
    /* I am hiding submethod for now, since it's poorly named, poorly
     * documented, and will probably just get people into trouble. */
    g_object_class_install_property (gobject_class, PROP_SUBMETHOD,
                                     g_param_spec_int ("submethod", "submethod",
                                             "submethod", 0, 3, DEFAULT_PROP_SUBMETHOD,
                                             G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
#endif

    g_object_class_install_property (gobject_class, PROP_ENVELOPE,
                                     g_param_spec_double ("envelope", "Envelope",
                                             "Size of filter envelope", 1.0, 5.0, DEFAULT_PROP_ENVELOPE,
                                             G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));

    g_object_class_install_property (gobject_class, PROP_GAMMA_DECODE,
                                     g_param_spec_boolean ("gamma-decode", "Gamma Decode",
                                             "Decode gamma before scaling", DEFAULT_PROP_GAMMA_DECODE,
                                             G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));


    gst_element_class_set_static_metadata (element_class,
                                           "Video scaler", "Filter/Converter/Video/Scaler",
                                           "Resizes video", "Wim Taymans <*****@*****.**>");

    gst_element_class_add_pad_template (element_class,
                                        gst_video_scale_sink_template_factory ());
    gst_element_class_add_pad_template (element_class,
                                        gst_video_scale_src_template_factory ());

    trans_class->transform_caps =
        GST_DEBUG_FUNCPTR (gst_video_scale_transform_caps);
    trans_class->fixate_caps = GST_DEBUG_FUNCPTR (gst_video_scale_fixate_caps);
    trans_class->src_event = GST_DEBUG_FUNCPTR (gst_video_scale_src_event);

    filter_class->set_info = GST_DEBUG_FUNCPTR (gst_video_scale_set_info);
    filter_class->transform_frame =
        GST_DEBUG_FUNCPTR (gst_video_scale_transform_frame);
}