Lines Matching refs:overlay

88 #define GST_RSVG_LOCK(overlay) G_STMT_START { \  argument
89 GST_LOG_OBJECT (overlay, "Locking rsvgoverlay from thread %p", g_thread_self ()); \
90 g_mutex_lock (&overlay->rsvg_lock); \
91 GST_LOG_OBJECT (overlay, "Locked rsvgoverlay from thread %p", g_thread_self ()); \
94 #define GST_RSVG_UNLOCK(overlay) G_STMT_START { \ argument
95 GST_LOG_OBJECT (overlay, "Unlocking rsvgoverlay from thread %p", g_thread_self ()); \
96 g_mutex_unlock (&overlay->rsvg_lock); \
130 gst_rsvg_overlay_set_svg_data (GstRsvgOverlay * overlay, const gchar * data, in gst_rsvg_overlay_set_svg_data() argument
133 GstBaseTransform *btrans = GST_BASE_TRANSFORM (overlay); in gst_rsvg_overlay_set_svg_data()
137 if (overlay->handle) { in gst_rsvg_overlay_set_svg_data()
138 g_object_unref (overlay->handle); in gst_rsvg_overlay_set_svg_data()
139 overlay->handle = NULL; in gst_rsvg_overlay_set_svg_data()
149 overlay->handle = rsvg_handle_new_from_file (data, &error); in gst_rsvg_overlay_set_svg_data()
151 overlay->handle = in gst_rsvg_overlay_set_svg_data()
153 if (error || overlay->handle == NULL) { in gst_rsvg_overlay_set_svg_data()
155 GST_ERROR_OBJECT (overlay, "Cannot read SVG data: %s\n%s", in gst_rsvg_overlay_set_svg_data()
159 GST_ERROR_OBJECT (overlay, "Cannot read SVG data: %s", data); in gst_rsvg_overlay_set_svg_data()
164 rsvg_handle_get_dimensions (overlay->handle, &svg_dimension); in gst_rsvg_overlay_set_svg_data()
165 overlay->svg_width = svg_dimension.width; in gst_rsvg_overlay_set_svg_data()
166 overlay->svg_height = svg_dimension.height; in gst_rsvg_overlay_set_svg_data()
168 GST_INFO_OBJECT (overlay, "updated SVG, %d x %d", overlay->svg_width, in gst_rsvg_overlay_set_svg_data()
169 overlay->svg_height); in gst_rsvg_overlay_set_svg_data()
179 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (object); in gst_rsvg_overlay_set_property() local
181 GST_RSVG_LOCK (overlay); in gst_rsvg_overlay_set_property()
186 gst_rsvg_overlay_set_svg_data (overlay, g_value_get_string (value), in gst_rsvg_overlay_set_property()
192 gst_rsvg_overlay_set_svg_data (overlay, g_value_get_string (value), TRUE); in gst_rsvg_overlay_set_property()
198 overlay->x_offset = 0; in gst_rsvg_overlay_set_property()
199 overlay->y_offset = 0; in gst_rsvg_overlay_set_property()
200 overlay->x_relative = 0.0; in gst_rsvg_overlay_set_property()
201 overlay->y_relative = 0.0; in gst_rsvg_overlay_set_property()
202 overlay->width = 0; in gst_rsvg_overlay_set_property()
203 overlay->height = 0; in gst_rsvg_overlay_set_property()
204 overlay->width_relative = 1.0; in gst_rsvg_overlay_set_property()
205 overlay->height_relative = 1.0; in gst_rsvg_overlay_set_property()
207 overlay->width_relative = 0; in gst_rsvg_overlay_set_property()
208 overlay->height_relative = 0; in gst_rsvg_overlay_set_property()
214 overlay->x_offset = g_value_get_int (value); in gst_rsvg_overlay_set_property()
219 overlay->y_offset = g_value_get_int (value); in gst_rsvg_overlay_set_property()
224 overlay->x_relative = g_value_get_float (value); in gst_rsvg_overlay_set_property()
229 overlay->y_relative = g_value_get_float (value); in gst_rsvg_overlay_set_property()
235 overlay->width = g_value_get_int (value); in gst_rsvg_overlay_set_property()
240 overlay->height = g_value_get_int (value); in gst_rsvg_overlay_set_property()
245 overlay->width_relative = g_value_get_float (value); in gst_rsvg_overlay_set_property()
250 overlay->height_relative = g_value_get_float (value); in gst_rsvg_overlay_set_property()
261 GST_RSVG_UNLOCK (overlay); in gst_rsvg_overlay_set_property()
268 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (object); in gst_rsvg_overlay_get_property() local
272 g_value_set_int (value, overlay->x_offset); in gst_rsvg_overlay_get_property()
275 g_value_set_int (value, overlay->y_offset); in gst_rsvg_overlay_get_property()
278 g_value_set_float (value, overlay->x_relative); in gst_rsvg_overlay_get_property()
281 g_value_set_float (value, overlay->y_relative); in gst_rsvg_overlay_get_property()
285 g_value_set_int (value, overlay->width); in gst_rsvg_overlay_get_property()
288 g_value_set_int (value, overlay->height); in gst_rsvg_overlay_get_property()
291 g_value_set_float (value, overlay->width_relative); in gst_rsvg_overlay_get_property()
294 g_value_set_float (value, overlay->height_relative); in gst_rsvg_overlay_get_property()
298 g_value_set_boolean (value, (overlay->width_relative == 1.0 in gst_rsvg_overlay_get_property()
299 && overlay->height_relative == 1.0)); in gst_rsvg_overlay_get_property()
311 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (GST_PAD_PARENT (pad)); in gst_rsvg_overlay_data_sink_chain() local
313 gst_adapter_push (overlay->adapter, buffer); in gst_rsvg_overlay_data_sink_chain()
321 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (GST_PAD_PARENT (pad)); in gst_rsvg_overlay_data_sink_event() local
330 GST_RSVG_LOCK (overlay); in gst_rsvg_overlay_data_sink_event()
334 data_size = gst_adapter_available (overlay->adapter); in gst_rsvg_overlay_data_sink_event()
336 gst_rsvg_overlay_set_svg_data (overlay, in gst_rsvg_overlay_data_sink_event()
337 (const gchar *) gst_adapter_take (overlay->adapter, data_size), in gst_rsvg_overlay_data_sink_event()
339 gst_adapter_clear (overlay->adapter); in gst_rsvg_overlay_data_sink_event()
341 GST_RSVG_UNLOCK (overlay); in gst_rsvg_overlay_data_sink_event()
346 gst_adapter_clear (overlay->adapter); in gst_rsvg_overlay_data_sink_event()
362 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (vfilter); in gst_rsvg_overlay_transform_frame_ip() local
365 double applied_x_offset = (double) overlay->x_offset; in gst_rsvg_overlay_transform_frame_ip()
366 double applied_y_offset = (double) overlay->y_offset; in gst_rsvg_overlay_transform_frame_ip()
367 int applied_width = overlay->width; in gst_rsvg_overlay_transform_frame_ip()
368 int applied_height = overlay->height; in gst_rsvg_overlay_transform_frame_ip()
370 GST_RSVG_LOCK (overlay); in gst_rsvg_overlay_transform_frame_ip()
371 if (!overlay->handle) { in gst_rsvg_overlay_transform_frame_ip()
372 GST_RSVG_UNLOCK (overlay); in gst_rsvg_overlay_transform_frame_ip()
390 if (!applied_x_offset && overlay->x_relative) { in gst_rsvg_overlay_transform_frame_ip()
391 applied_x_offset = overlay->x_relative * GST_VIDEO_FRAME_WIDTH (frame); in gst_rsvg_overlay_transform_frame_ip()
393 if (!applied_y_offset && overlay->y_relative) { in gst_rsvg_overlay_transform_frame_ip()
394 applied_y_offset = overlay->y_relative * GST_VIDEO_FRAME_HEIGHT (frame); in gst_rsvg_overlay_transform_frame_ip()
396 if (!applied_width && overlay->width_relative) { in gst_rsvg_overlay_transform_frame_ip()
398 (int) (overlay->width_relative * GST_VIDEO_FRAME_WIDTH (frame)); in gst_rsvg_overlay_transform_frame_ip()
400 if (!applied_height && overlay->height_relative) { in gst_rsvg_overlay_transform_frame_ip()
402 (int) (overlay->height_relative * GST_VIDEO_FRAME_HEIGHT (frame)); in gst_rsvg_overlay_transform_frame_ip()
410 if ((applied_width || applied_height) && overlay->svg_width in gst_rsvg_overlay_transform_frame_ip()
411 && overlay->svg_height) { in gst_rsvg_overlay_transform_frame_ip()
415 applied_width = overlay->svg_width; in gst_rsvg_overlay_transform_frame_ip()
417 applied_height = overlay->svg_height; in gst_rsvg_overlay_transform_frame_ip()
419 cairo_scale (cr, (double) applied_width / overlay->svg_width, in gst_rsvg_overlay_transform_frame_ip()
420 (double) applied_height / overlay->svg_height); in gst_rsvg_overlay_transform_frame_ip()
422 rsvg_handle_render_cairo (overlay->handle, cr); in gst_rsvg_overlay_transform_frame_ip()
423 GST_RSVG_UNLOCK (overlay); in gst_rsvg_overlay_transform_frame_ip()
434 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (btrans); in gst_rsvg_overlay_stop() local
436 if (overlay->handle) { in gst_rsvg_overlay_stop()
437 g_object_unref (overlay->handle); in gst_rsvg_overlay_stop()
438 overlay->handle = NULL; in gst_rsvg_overlay_stop()
441 gst_adapter_clear (overlay->adapter); in gst_rsvg_overlay_stop()
520 gst_rsvg_overlay_init (GstRsvgOverlay * overlay) in gst_rsvg_overlay_init() argument
522 overlay->x_offset = 0; in gst_rsvg_overlay_init()
523 overlay->y_offset = 0; in gst_rsvg_overlay_init()
524 overlay->x_relative = 0.0; in gst_rsvg_overlay_init()
525 overlay->y_relative = 0.0; in gst_rsvg_overlay_init()
526 overlay->width = 0; in gst_rsvg_overlay_init()
527 overlay->height = 0; in gst_rsvg_overlay_init()
528 overlay->width_relative = 0.0; in gst_rsvg_overlay_init()
529 overlay->height_relative = 0.0; in gst_rsvg_overlay_init()
531 overlay->adapter = gst_adapter_new (); in gst_rsvg_overlay_init()
534 overlay->data_sinkpad = in gst_rsvg_overlay_init()
536 gst_pad_set_chain_function (overlay->data_sinkpad, in gst_rsvg_overlay_init()
538 gst_pad_set_event_function (overlay->data_sinkpad, in gst_rsvg_overlay_init()
540 gst_element_add_pad (GST_ELEMENT (overlay), overlay->data_sinkpad); in gst_rsvg_overlay_init()
546 GstRsvgOverlay *overlay = GST_RSVG_OVERLAY (object); in gst_rsvg_overlay_finalize() local
548 g_object_unref (overlay->adapter); in gst_rsvg_overlay_finalize()