decoder: use g_object_notify_by_pspec().

Use g_object_notify_by_pspec() instead of g_object_notify() so that to
avoid a property name lookup. i.e. this makes notifications faster to
the `vaapidecode' element.

Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
This commit is contained in:
Javier Jardón 2012-08-08 12:50:41 +09:00 committed by Gwenole Beauchesne
parent a10ee527c7
commit 5157a01942

View file

@ -42,8 +42,12 @@ enum {
PROP_DISPLAY, PROP_DISPLAY,
PROP_CAPS, PROP_CAPS,
N_PROPERTIES
}; };
static GParamSpec *g_properties[N_PROPERTIES] = { NULL, };
static void static void
destroy_buffer(GstBuffer *buffer) destroy_buffer(GstBuffer *buffer)
{ {
@ -311,22 +315,20 @@ gst_vaapi_decoder_class_init(GstVaapiDecoderClass *klass)
* *
* The #GstVaapiDisplay this decoder is bound to. * The #GstVaapiDisplay this decoder is bound to.
*/ */
g_object_class_install_property g_properties[PROP_DISPLAY] =
(object_class,
PROP_DISPLAY,
g_param_spec_object("display", g_param_spec_object("display",
"Display", "Display",
"The GstVaapiDisplay this decoder is bound to", "The GstVaapiDisplay this decoder is bound to",
GST_VAAPI_TYPE_DISPLAY, GST_VAAPI_TYPE_DISPLAY,
G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_property g_properties[PROP_CAPS] =
(object_class,
PROP_CAPS,
g_param_spec_pointer("caps", g_param_spec_pointer("caps",
"Decoder caps", "Decoder caps",
"The decoder caps", "The decoder caps",
G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY);
g_object_class_install_properties(object_class, N_PROPERTIES, g_properties);
} }
static void static void
@ -455,7 +457,7 @@ gst_vaapi_decoder_set_picture_size(
} }
if (size_changed) if (size_changed)
g_object_notify(G_OBJECT(decoder), "caps"); g_object_notify_by_pspec(G_OBJECT(decoder), g_properties[PROP_CAPS]);
} }
void void
@ -479,7 +481,7 @@ gst_vaapi_decoder_set_framerate(
"framerate", GST_TYPE_FRACTION, fps_n, fps_d, "framerate", GST_TYPE_FRACTION, fps_n, fps_d,
NULL NULL
); );
g_object_notify(G_OBJECT(decoder), "caps"); g_object_notify_by_pspec(G_OBJECT(decoder), g_properties[PROP_CAPS]);
} }
} }
@ -504,7 +506,7 @@ gst_vaapi_decoder_set_pixel_aspect_ratio(
"pixel-aspect-ratio", GST_TYPE_FRACTION, par_n, par_d, "pixel-aspect-ratio", GST_TYPE_FRACTION, par_n, par_d,
NULL NULL
); );
g_object_notify(G_OBJECT(decoder), "caps"); g_object_notify_by_pspec(G_OBJECT(decoder), g_properties[PROP_CAPS]);
} }
} }
@ -521,7 +523,7 @@ gst_vaapi_decoder_set_interlaced(GstVaapiDecoder *decoder, gboolean interlaced)
"interlaced", G_TYPE_BOOLEAN, interlaced, "interlaced", G_TYPE_BOOLEAN, interlaced,
NULL NULL
); );
g_object_notify(G_OBJECT(decoder), "caps"); g_object_notify_by_pspec(G_OBJECT(decoder), g_properties[PROP_CAPS]);
} }
} }