videolevels: notify prop level change using pspec

This commit is contained in:
Joshua M. Doe 2012-11-02 02:19:27 -04:00
parent 433cb84a2a
commit 1f11672a69

View File

@ -58,9 +58,12 @@ enum
PROP_LOWOUT, PROP_LOWOUT,
PROP_HIGHOUT, PROP_HIGHOUT,
PROP_AUTO, PROP_AUTO,
PROP_INTERVAL PROP_INTERVAL,
PROP_LAST
}; };
static GParamSpec *properties[PROP_LAST];
#define DEFAULT_PROP_LOWIN 0.0 #define DEFAULT_PROP_LOWIN 0.0
#define DEFAULT_PROP_HIGHIN 1.0 #define DEFAULT_PROP_HIGHIN 1.0
#define DEFAULT_PROP_LOWOUT 0.0 #define DEFAULT_PROP_LOWOUT 0.0
@ -210,22 +213,30 @@ gst_videolevels_class_init (GstVideoLevelsClass * object)
obj_class->get_property = GST_DEBUG_FUNCPTR (gst_videolevels_get_property); obj_class->get_property = GST_DEBUG_FUNCPTR (gst_videolevels_get_property);
/* Install GObject properties */ /* Install GObject properties */
g_object_class_install_property (obj_class, PROP_LOWIN, properties[PROP_LOWIN] =
g_param_spec_double ("lower-input-level", "Lower Input Level", g_param_spec_double ("lower-input-level", "Lower Input Level",
"Lower Input Level", 0.0, 1.0, DEFAULT_PROP_LOWIN, "Lower Input Level", 0.0, 1.0, DEFAULT_PROP_LOWIN,
G_PARAM_READWRITE)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (obj_class, PROP_HIGHIN, properties[PROP_HIGHIN] =
g_param_spec_double ("upper-input-level", "Upper Input Level", g_param_spec_double ("upper-input-level", "Upper Input Level",
"Upper Input Level", 0.0, 1.0, DEFAULT_PROP_HIGHIN, "Upper Input Level", 0.0, 1.0, DEFAULT_PROP_HIGHIN,
G_PARAM_READWRITE)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (obj_class, PROP_LOWOUT, properties[PROP_LOWOUT] =
g_param_spec_double ("lower-output-level", "Lower Output Level", g_param_spec_double ("lower-output-level", "Lower Output Level",
"Lower Output Level", 0.0, 1.0, DEFAULT_PROP_LOWOUT, "Lower Output Level", 0.0, 1.0, DEFAULT_PROP_LOWOUT,
G_PARAM_READWRITE)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (obj_class, PROP_HIGHOUT, properties[PROP_HIGHOUT] =
g_param_spec_double ("upper-output-level", "Upper Output Level", g_param_spec_double ("upper-output-level", "Upper Output Level",
"Upper Output Level", 0.0, 1.0, DEFAULT_PROP_HIGHOUT, "Upper Output Level", 0.0, 1.0, DEFAULT_PROP_HIGHOUT,
G_PARAM_READWRITE)); G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
g_object_class_install_property (obj_class, PROP_LOWIN,
properties[PROP_LOWIN]);
g_object_class_install_property (obj_class, PROP_HIGHIN,
properties[PROP_HIGHIN]);
g_object_class_install_property (obj_class, PROP_LOWOUT,
properties[PROP_LOWOUT]);
g_object_class_install_property (obj_class, PROP_HIGHOUT,
properties[PROP_HIGHOUT]);
g_object_class_install_property (obj_class, PROP_AUTO, g_object_class_install_property (obj_class, PROP_AUTO,
g_param_spec_enum ("auto", "Auto Adjust", "Auto adjust contrast", g_param_spec_enum ("auto", "Auto Adjust", "Auto adjust contrast",
GST_TYPE_VIDEOLEVELS_AUTO, DEFAULT_PROP_AUTO, G_PARAM_READWRITE)); GST_TYPE_VIDEOLEVELS_AUTO, DEFAULT_PROP_AUTO, G_PARAM_READWRITE));
@ -800,11 +811,11 @@ gst_videolevels_auto_adjust (GstVideoLevels * videolevels, guint16 * data)
gst_videolevels_calculate_lut (videolevels); gst_videolevels_calculate_lut (videolevels);
GST_DEBUG ("Contrast stretch with npixsat=%d, (%.6f, %.6f)", npixsat, GST_LOG_OBJECT (videolevels, "Contrast stretch with npixsat=%d, (%.6f, %.6f)",
videolevels->lower_input, videolevels->upper_input); npixsat, videolevels->lower_input, videolevels->upper_input);
g_object_notify (G_OBJECT (videolevels), "lower-input-level"); g_object_notify_by_pspec (G_OBJECT (videolevels), properties[PROP_LOWIN]);
g_object_notify (G_OBJECT (videolevels), "upper-input-level"); g_object_notify_by_pspec (G_OBJECT (videolevels), properties[PROP_HIGHIN]);
return TRUE; return TRUE;
} }